web-dev-qa-db-ja.com

依存関係に基づいてMavenビルド/コンパイルシーケンスを一覧表示するにはどうすればよいですか?

pomが相互に依存する複数のサブモジュールを呼び出すsuperpom階層がある場合、依存関係に基づいてビルド/コンパイルシーケンスを一覧表示するにはどうすればよいですか? IOW、スーパーポムにモジュールmod1、mod2、およびmod3があり、mod2がmod3に依存し、mod3がmod1に依存する場合、シーケンスはmod1、mod3、mod2の順になります。 pomからのデータ階層の複雑なXML解析なしでその順序をリストするにはどうすればよいですか?

19
amphibient

おそらく、Mavenのdependency:treeオプションを探していますか?モジュールのみを含めるようにincludesを調整する必要があります。 http://maven.Apache.org/plugins/maven-dependency-plugin/tree-mojo.html

mvn dependency:tree -Dverbose -DoutputFile=tree.txt -DoutputType=text -Dincludes=com.mycompany.*
7
CullenJ

知りたいのは、いわゆるreactor build orderです。

リアクターは、各プロジェクトがそれぞれのプロジェクト記述子に指定した依存関係から正しいビルド順序を決定し、指定された一連の目標を実行します。これは、プロジェクトの構築と、サイト生成などの他の目標の両方に使用できます。 (出典: 古いマルチモジュールドキュメント

ビルドするすべてのモジュールを収集し、プロジェクトを並べ替えて、順番にビルドします。他のモジュールで必要になる前に、モジュールがビルドされることを保証します。

私の知る限り、これらのアイテムのリストのみを作成する直接的な方法はありませんが、情報を取得するための最も近い方法は次のとおりです。

mvn validate

リアクターのビルド順序が一番上に表示されます:

~/parent$ mvn validate
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] simple.parent
[INFO] simple.child
[INFO] simple.anotherchild
[...]                                                                        

プロジェクトの正確性を検証し、必要なすべての情報が利用可能であることを確認する以外に、追加の作業は実行されません。

詳細については、 複数のモジュールを操作するためのガイド および Mavenリアクターとは何かに関するこの回答 も参照してください。

37
Behe