複数 - maven 初心者




Mavenでマルチプロジェクトのビルド順を強制する (2)

私はこのようにして多大なプロジェクトを持っています:

paren-project
  -> plugin-project
  -> testbed-project

pluginプロジェクトはJARを生成し、それをtestbed特定のサブディレクトリに手動でコピーします( groovyやantようgroovy埋め込みスクリプトを使用します)。 重要な点:私はプラグインJARをtestbedのクラスパスに入れたくありません。

しかし、テストベッドプロジェクトの前にプラグインプロジェクトをビルドするように強制するための解決策を見つけることができません。 テストベッドプロジェクトの依存関係としてプラグインプロジェクトを設定した場合、それはクラスパスに追加されます。

何か解決策はありますか、それともgradle 、 ivy 、 antなどのビルドシステムに切り替える必要がありますか。


Mavenは多目的なシステムです。 切り替える必要はありません。

このように依存関係を追加することができます。

<dependency>
  <groupId>group</groupId> 
  <artifactId>artifact</artifactId> 
  <optional>true</optional> 
</dependency>

この方法では、依存関係はクラスパスに含まれません。

Optional Dependencyについてもっと読む


http://maven.apache.org/guides/mini/guide-multiple-modules.html記載されているとおり

原子炉ソート

Because modules within a multi-module build can depend on each other, 
it is important that The reactor sorts all the projects in a way that 
guarantees any project is built before it is required.

The following relationships are honoured when sorting projects:
  1. ビルド内の他のモジュールへのプロジェクトの依存関係
  2. プラグインがビルド内の別のモジュールである場合のプラグイン宣言
  3. ビルド内の他のモジュールに対するプラグインの依存関係
  4. ビルド内の別のモジュールに対するビルド拡張宣言
  5. modules要素で宣言された順序(他の規則が適用されない場合)

「インスタンス化された」参照のみが使用されることに注意してください - dependencyManagement要素とpluginManagement要素は、リアクタのソート順を変更しません。







maven-3