できますか?
環境:マルチモジュールpomは、mm1、mm2、mm3の3つのモジュールで構成されています。モジュールmm2には依存関係としてmm1があります。エラーなしで親pomを構築することが可能です。
質問:mm1をローカルリポジトリにインストールせずに、単一のモジュールmm2をビルドする(つまり、mm2ベースディレクトリからmavenを実行する)ことは可能ですか?
ありがとう。
できますか?
環境:マルチモジュールpomは、mm1、mm2、mm3の3つのモジュールで構成されています。モジュールmm2には依存関係としてmm1があります。エラーなしで親pomを構築することが可能です。
質問:mm1をローカルリポジトリにインストールせずに、単一のモジュールmm2をビルドする(つまり、mm2ベースディレクトリからmavenを実行する)ことは可能ですか?
ありがとう。
「mm1をローカルリポジトリにインストールしない」とはどういう意味かわかりません。以前にmm2を構築することを意味しますか、それとも決してしませんか?
疑わしいことに、Mavenのヒントとコツ:高度なリアクターオプションのブログ投稿で発表された新しいビルドオプションの1つが役立つ可能性があります。
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
しかし、これがあなたの質問に答えるかどうかはわかりません(これは私には完全には明らかではありません)。
自動インストールなしではありませんが、選択したプロジェクトのみをビルドすることは可能です。マルチモジュールビルドが必要です(私はあなたがそうすると仮定しています)。リアクターモードでは、すべてのコマンドをリアクターのルートから実行する必要があります。
だからあなたの場合:
mvn reactor:make -Dmake.folders=mm2
この場合、mm2モジュールとそれが依存するモジュール(mm1)を作成します。
便利なリンク:
本の例から、私はプロジェクトの永続性と彼の依存関係のプロジェクトモデルのみを構築します。他のプロジェクトは手つかずです
mvn reactor:make -Dmake.folders=sample-persist
代替テキストhttp://www.sonatype.com/books/maven-book/reference/figs/web/running_aro-dependencies.png
他の便利なコマンドはreactor:make-dependents
、Xに依存するプロジェクトをビルドすることです。
これは、Maven2の依存関係の原則に反します。それを正確に行うことの興味は何ですか?
ただし、mm2のmm1依存関係を依存関係として定義することを想像できますsystem
。
<dependency>
<groupId>...</groupId>
<artifactId>mm1</artifactId>
<version>...</version>
<scope>system</scope>
<systemPath>../mm1/target/</systemPath>
</dependency>