1

mvnコマンドを実行すると生成されるすべてのアーティファクトのすべての GroupID:ArtifactID:Version (GAV) のリストを表示する (サポートされている) ベースのコマンドを探していmvn packageます。

親 pom のない単一モジュールの Maven プロジェクトの場合、これは簡単です。pom の内部を見ることができます。

親 pom を持つ単一モジュールの Maven プロジェクトの場合、要素help:effective-pomが存在する pom ファイルを使用できます。<version>

マルチモジュールMavenプロジェクト(リアクター)の場合、実際に同じことができます(そうは思わなかったので、今試してみて学んだことです)。<project>これにより、(複数の)要素のファイルを解析できます。

他に考慮すべきことはありますか?

これの全体的な目標は、ダウンストリームの継続的デリバリー ( http://go.cd/ ) ステージ/ステップ/ジョブに、アップストリームの依存関係のどのバージョンを使用する必要があるかに関する情報をフィードできるようにすることです。

4

1 に答える 1

1

一般に、ビルドが実行される前にリストを生成することはできません... 問題は、pom モデルに基づいてすべてのアーティファクトが記述されていないことです。これは、一部のプラグインが補足アーティファクト (maven-assembly-plugin、maven-shade-プラグイン、test-jar 経由の maven-jar-plugin など)

あなたができることは、ビルドが実行された後に生成されたアーティファクトのリストを取得することです..(インストールされた)。あなたの質問は、ビルドの最後にそのようなリストを生成する EventSpy を実装するきっかけになりました...次のようになります:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.423 s
[INFO] Finished at: 2016-05-08T13:22:10+02:00
[INFO] Final Memory: 24M/310M
[INFO] ------------------------------------------------------------------------
[INFO] --             Maven Artifact Collector Summary                       --
[INFO] ------------------------------------------------------------------------
[INFO] test.maven.plugin.profiler:parse-pom:0.1.0-SNAPSHOT:jar
[INFO] test.maven.plugin.profiler:parse-pom:0.1.0-SNAPSHOT:pom
[INFO] test.maven.plugin.profiler:parse-pom:0.1.0-SNAPSHOT:jar:jar-with-dependencies

私にできることは、それを強化し、情報を含むファイルを作成することです (多かれ少なかれ任意の形式で)...現時点では単なる PoC です...さらに情報を提供したり、問題や PR を作成したりできます。何が必要かをリクエストします...これは他の人にとっても興味深いかもしれません...

さらに、ダウンストリーム部分では、リポジトリ キャッシュ内にこれらのアーティファクトが利用可能である必要があります (ファイル システム上、またはリポジトリ マネージャーまたは Docker データ コンテナーを介して)...

于 2016-05-08T11:36:06.667 に答える