質問
実行できますか?
環境:マルチモジュールpomは、mm1、mm2、mm3の3つのモジュールで構成されています。モジュールmm2には依存関係としてmm1があります。エラーなしで親pomを構築することが可能です。
質問:mm1をローカルリポジトリにインストールせずに、単一モジュールmm2をビルド(つまり、mm2ベースディレクトリからmavenを実行)することは可能ですか?
ありがとう。
解決
自動インストールなしではありませんが、選択したプロジェクトのみをビルドすることは可能です。マルチモジュールのビルドが必要です(そうすることを想定しています)。リアクタモードでは、すべてのコマンドをリアクタのルートから実行する必要があります。
だからあなたの場合:
mvn reactor:make -Dmake.folders = mm2
この場合、mm2モジュールとそれが依存するモジュール(mm1)をビルドします。
便利なリンク:
本の例から、プロジェクトの永続化と依存関係のプロジェクトモデルのみを作成します。その他のプロジェクトはそのままです
mvn reactor:make -Dmake.folders = sample-persist
その他の便利なコマンドは、Xに依存するプロジェクトをビルドする reactor:make-dependents
です。
他のヒント
「mm1をローカルリポジトリにインストールせずに」とはどういう意味か正確にはわかりません。以前にmm2を構築することを意味しますか?
疑わしいのは、 Mavenのヒントとテクニック:Reactorの高度なオプションのブログ投稿が役立ちます:
Maven 2.1リリース以降、 新しいMavenコマンドラインがあります 操作できるオプション Mavenが構築する方法 マルチモジュールプロジェクト。これらの新しい オプションは次のとおりです。
-rf, --resume-from Resume reactor from specified project -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 -amd, --also-make-dependents If project list is specified, also build projects that depend on projects on the list
-pl
および -am
オプションを具体的に考えていました。モジュールのサブセットをビルドするには、ルートディレクトリから次を実行します
$ mvn --projects mm2 --also-make install
ただし、これがあなたの質問に答えるかどうかはわかりません(私には完全に明確ではありません)。
これは、Maven2の依存関係の原則に反します。それを正確に行うことの興味は何ですか?
ただし、mm2のmm1依存関係を system
依存関係として定義することを想像できます。
<dependency>
<groupId>...</groupId>
<artifactId>mm1</artifactId>
<version>...</version>
<scope>system</scope>
<systemPath>../mm1/target/</systemPath>
</dependency>