P
親プロジェクトと 3 つのサブモジュールA
、、B
および を含むマルチモジュール Maven プロジェクトがありますC
。 とB
は両方ともC
war プロジェクトであり、両方とも に依存していますA
。
mvn compile
入力するとP
、すべてのサブモジュールが適切にコンパイルされます。問題は、特定のモジュールに対して操作を実行したい場合に発生します。
プロジェクト の war をパッケージ化できるようにしたいのですB
が、 のディレクトリから package コマンドを実行するとB
、 の依存関係が見つからないというエラーが表示されますA
。
この質問から私は理解しました:Mavenと依存モジュールおそらく Maven はこの種の依存関係解決のために設計されていないのでしょうが、それではどうやってパッケージ化すればいいのかという疑問が生じますB
。
mvn package
本当に必要なのは、プロジェクト階層全体に対して実行する必要があるのでしょうかB
?パッケージ化するたびに、A のスナップショットをローカル リポジトリにインストールする必要がありますか
B
?
A
この 2 番目のシナリオは、まだ積極的に開発中であるため、あまり面白くありません。
ベストプラクティスはありますか?
ベストアンサー1
ベストプラクティスはありますか?
使用Maven の高度なリアクター オプション、 すなわち:
-pl, --projects
Build specified reactor projects instead of all projects
-am, --also-make
If project list is specified, also build projects required by the list
cd
親の P ディレクトリに移動して、次のコマンドを実行します。
mvn install -pl B -am
これにより、B と B に必要なモジュールがビルドされます。
artifactId
ディレクトリ名と異なる を参照する場合は、コロンを使用する必要があることに注意してください。
mvn install -pl :B -am
ここで説明されているように: