SNAPSHOT'u kaynaklar ve JavaDoc ile nasıl dağıtabilirim?


93

Kaynakları ve javadoc'ları anlık görüntülerimle dağıtmak istiyorum. Bu, aşağıdaki komutu otomatikleştirmek istediğim anlamına gelir:

mvn clean source:jar javadoc:jar deploy

Sadece yürütmek için:

mvn clean deploy

installAşama sırasında javadoc / sources oluşumunun çalıştırılmasını istemiyorum (yani yerel derlemeler).

Kaynak / javadoc eklentilerinin releaseeklentinin çalıştırılmasıyla senkronize edilebileceğini biliyorum, ancak bunu anlık görüntü sürümlerine nasıl bağlayacağımı bulamıyorum.

Yanıtlar:


77
<build>
  <plugins> 
    <plugin>
      <artifactId>maven-source-plugin</artifactId>
      <executions>
        <execution>
          <id>attach-sources</id>
          <phase>deploy</phase>
          <goals><goal>jar-no-fork</goal></goals> 
        </execution>
      </executions>
    </plugin>
    <plugin> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <executions> 
        <execution> 
          <id>attach-javadocs</id>
          <phase>deploy</phase>
          <goals><goal>jar</goal></goals> 
        </execution> 
      </executions> 
    </plugin>
    <plugin> 
      <!-- explicitly define maven-deploy-plugin after other to force exec order -->
      <artifactId>maven-deploy-plugin</artifactId> 
      <executions> 
        <execution> 
          <id>deploy</id>
          <phase>deploy</phase>
          <goals><goal>deploy</goal></goals> 
        </execution> 
      </executions> 
    </plugin>
  </plugins> 
</build>

Tam bir örnek için Sonatype'ın OSS ana POM'una bakın .


1
Bu kurulumu kullanıyorum ve oldukça iyi çalışıyor. Ancak iki küçük sorunum vardı: Biri, oluşturulan kaynaklar "jar" hedefine dahil edilmedi, "jar-no-fork" a ihtiyacınız olacak. İkincisi, sürüm eklentisinde sürüm kaynaklarını iki kez oluşturmaya neden olacak bir hata var (ve bu nedenle iki kez dağıtıldı, bu da depo yöneticileriyle sorunlara yol açacak)
mglauche

1
maven-source-plugin:jarpackagevarsayılan olarak faza eklenir , böylece bırakıp <phase>verify</phase>aynı şeyi başarabilirsiniz. Ayrıca, bu aşamanın "projeyi paketlemek ve entegrasyon testlerini çalıştırmak" için tasarlandığını doğrulamak için neden bunu eklediğinizden emin değilim.
matt

@mglauche @matt yorumlarınız için teşekkürler. Sadece uygun değişiklikleri yaptım.
sfussenegger

1
@Henryk Tamam, açıkça maven-deploy-eklentisini ekledim ve ayrıca eklentilerin POM'da tanımlandığı şekilde yürütülmesini garanti etmek için maven görünüyor (veya çalışıyor). Yine de biraz deneme gerektirebilir.
sfussenegger

1
rasgele kimlik kullanmak yeni yürütme oluşturur Varsayılan yürütmeyi "yeniden eşleştirmek" isteyeceğinizi düşündüm
Hurda


48

Dan tarafından atıfta bulunulan makale, pomları değiştirmeden çalışan VE yakında hiçbir zaman ortadan kalkmayacak başka bir yaklaşımdan da bahsediyor:

mvn clean javadoc: jar kaynağı: jar yüklemesi

Maven 3+ ile birlikte iyi çalışan ...

mvn clean javadoc: jar kaynağı: jar dağıtımı

Nexus'a dağıtım yaparken Jenkins'ten test ettiğim.

Bu yaklaşım güzeldi çünkü sadece bazı Jenkins işlerini değiştirmek zorunda kaldım ve pomlarımla uğraşmam gerekmiyordu.


5
Pom içermeyen bir çözüm için teşekkürler! Not javadoc: kavanoz ve / veya kaynak: kavanoz önce görünür olmalıdır yüklemek veya dağıtma veya fazladan kavanoz dağıtım için "bağlı" edilmeyecektir.
seanf

2
FWIW bu seçenekler packagemvn clean javadoc:jar source:jar package
şunlarla

Kaynakları ve javadoc'u oluşturup deponuza yüklemeniz için size tam komutu söylediği için bu iyi bir cevaptır.
russellhoff
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.