Як розгорнути SNAPSHOT із джерелами та JavaDoc?


92

Я хочу розгорнути джерела та javadocs зі своїми знімками. Це означає, що я хочу автоматизувати таку команду:

mvn clean source:jar javadoc:jar deploy

Просто виконати:

mvn clean deploy

Я не хочу, щоб генерація javadoc / source виконувалась під час installфази (тобто локальні збірки).

Я знаю, що плагіни source / javadoc можуть бути синхронізовані із виконанням releaseплагіна, але я не можу зрозуміти, як підключити його до випусків знімків.

Відповіді:


76
<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>

Див Sonatype в ОСС батьківський POM для повного прикладу.


1
Я використовую цю установку, і вона працює досить добре. Однак у мене було дві невеликі проблеми: одна, згенеровані джерела не включені в ціль "jar", вам знадобиться "jar-no-fork". По-друге, у плагіні випуску є помилка, яка призведе до генерування джерел випуску двічі (і, отже, двічі розгортається, що призведе до проблем з менеджерами сховищ)
mglauche

1
maven-source-plugin:jarpackageза замовчуванням приєднується до фази, щоб ви могли зупинити <phase>verify</phase>і виконати те саме. Крім того, я не впевнений, чому ви все одно додасте це для перевірки, оскільки цей етап призначений для "упаковки проекту та запуску тестів інтеграції".
matt b

@mglauche @matt дякую за ваші коментарі. Я щойно вніс відповідні зміни.
sfussenegger

1
@Henryk Добре, я явно додав maven-deploy-plugin, а також maven, здається (або намагається) гарантувати виконання в одері, плагіни визначені в POM. Хоча, можливо, знадобляться експерименти.
sfussenegger

1
використання випадкового ідентифікатора створює нове виконання. Я думав, ви захочете "переназначити" одне виконання за замовчуванням
Хурда,

48

Просто щоб додати альтернативу, яка не вимагає від вас конфігурації плагіна:

mvn -DperformRelease=true [goals]

Кредит надходить mcbeelen з http://sea36.blogspot.com/2009/02/attaching-javadocs-and-sources-to-maven.html?showComment=1314177874102#c6853460758692768998


4
Я хотів би зазначити, що ця функція може зникнути в майбутньому випуску Maven (можливо, Maven-4?). Перегляньте коментар тут, у розділі профілю Maven Super POM: maven.apache.org/ref/3.1.1/maven-model-builder/super-pom.html
Дан

45

У статті, на яку посилається Ден, також згадується інший підхід, який працює без модифікації Poms І не зникне найближчим часом:

mvn clean javadoc: jar джерело: jar install

Що чудово працює з Maven 3+, поряд з ...

mvn clean javadoc: джерело jar: розгортання jar

Який я перевірив на шляху розгортання Дженкінса до Nexus.

Цей підхід був приємним, тому що мені довелося змінити лише деякі роботи Дженкінса, і мені не потрібно було возитися з моїми товаришами.


5
Дякуємо за рішення без помпи! Зверніть увагу, що javadoc: jar та / або source: jar повинні з’явитися перед встановленням або розгортанням , інакше зайві банки не будуть «прикріплені» до розгортання.
seanf

2
FWIW ці опції також працюють з package:mvn clean javadoc:jar source:jar package
ecoe

Це хороша відповідь, оскільки вона говорить вам точну команду для створення та завантаження джерел та javadoc у ваше репо.
russellhoff
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.