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.