次のようなマルチモジュール Maven プロジェクトに取り組んでいます。
Parent-project (pom)
+- Module1 (executable-jar)
+- Module2 (executable-jar)
+- Module3 (jar)
+- ...
+- Distribution (pom)
Distribution モジュールには、Module1、Module2、および Module3 への依存関係がリストされています。配布モジュールでプロジェクトをテストしてパッケージ化する必要があります。ディストリビューションには必要な構成ファイルがすべて含まれているため、このモジュールをテストに使用しています。コマンドラインから手動でテストを開始する場合、次のようになります。
$ # Pre-integration-test:
$ java -Djava.rmi.server.codebase=file:module3.jar -jar module1.jar
$ java -Djava.rmi.codebase=file:module3.jar -jar module2.jar
これらの呼び出しを pre-integration-test フェーズにバインドするためのexec-maven-pluginを見てきましたが、プラグインには、JAR 自体を保持するディレクトリではなく、クラスパス上の JAR のみが含まれています。プロジェクトの依存関係によって生成されたjarを簡単に実行できるプラグインから最も恩恵を受けると思います。そうすれば、Distribution POM で次のようなことができます。
...
<plugin>
<artifactId>some-magic-plugin</artifactId>
<executions><execution>
<phase>pre-integration-test</phase>
<goals><goal>exec-dependency</goal></goals>
<configuration>
<artifactId>module1</artifactId>
<vmArguments>...</vmArguments>
<arguments>...</arguments>
</configuration>
</execution></executions>
</plugin>
これのためのプラグインはすでにありますか?理想的には、次のことができるようになります。
- Maven 座標を指定して JAR アーティファクトを実行する
- アーティファクトの JAR を含むディレクトリをパスに配置します (コマンド ライン引数で JAR を含めることができるようにします)
最初にすべての JAR を共通のパスにコピーするために dependency:copy ゴールを調べましたが、jar はプロジェクトの一部として既にビルドされているため、不要なようです。(また、どのディレクトリが最適なコピー先になるかはわかりません)。