ソースとJavaDocでスナップショットをデプロイする方法は?


92

スナップショットでソースとjavadocsをデプロイしたい。これは、次のコマンドを自動化することを意味します。

mvn clean source:jar javadoc:jar deploy

実行するだけです:

mvn clean deploy

installフェーズ(つまり、ローカルビルド)中にjavadoc / sources生成を実行したくありません。

私は、ソース/ 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のOSS親POMを参照してください。


1
私はこの設定を使用していますが、それは非常にうまく機能します。ただし、2つの小さな問題がありました。1つは、生成されたソースが「jar」の目標に含まれていないため、「jar-no-fork」が必要です。2、リリースプラグインにバグがあり、リリースソースが2回生成される(したがって、2回デプロイされるため、リポジトリマネージャーで問題が発生する)
mglauche

1
maven-source-plugin:jarpackageデフォルトでフェーズにアタッチされるため、省略し<phase>verify</phase>て同じことを実行できます。さらに、このフェーズは「プロジェクトをパッケージ化して統合テストを実行する」ことを目的としているため、なぜこれを添付して検証するのかわかりません。
matt b

@mglauche @mattコメントありがとうございます。適切な変更を加えました。
sfussenegger、2011年

1
@Henryk Ok、私はmaven-deploy-pluginを明示的に追加し、プラグインがPOMで定義されている順序での実行を保証するためにmavenのようです(または試行します)。ただし、実験が必要になる場合があります。
sfussenegger、2011年

1
ランダムIDを使用すると、新しい実行が作成されます。デフォルトの実行を「リマップ」する必要があると思いました
Hurda

48

プラグイン設定をいじる必要のない代替を追加するだけです:

mvn -DperformRelease=true [goals]

クレジットはhttp://sea36.blogspot.com/2009/02/attaching-javadocs-and-sources-to-maven.html?showComment=1314177874102#c6853460758692768998からmcbeelenに送られます


4
この機能は、Maven(おそらくMaven-4?)の今後のリリースでなくなる可能性があることを述べておきます。Maven Super POMのプロファイルセクションのコメントをチェックしてください:maven.apache.org/ref/3.1.1/maven-model-builder/super-pom.html
Dan

45

Danが言及した記事では、pomsを変更せずに機能する別のアプローチについても触れられており、すぐにはなくなることはありません。

mvn clean javadoc:jar source:jar install

これは、Maven 3以降で正常に動作します...

mvn clean javadoc:jar source:jar deploy

ジェンキンスがネクサスに展開することからテストしました。

私はいくつかのJenkinsジョブを変更するだけで済み、ポンポンをいじる必要がないので、このアプローチは良かったです。


5
pom-freeソリューションをありがとう!ことを注意jarファイル:javadocのおよび/またはソース:jarファイルが表示される必要があります前にインストールまたはデプロイ、または追加のjarファイルは、展開に「添付」されることはありません。
seanf

2
FWIWこれらのオプションもで動作packagemvn clean javadoc:jar source:jar package
ecoe

ソースとjavadocをビルドしてリポジトリにアップロードするための正確なコマンドが表示されるので、これは良い答えです。
ラッセルホフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.