アセンブリを使用して(パッケージ化フェーズでmaven-assembly-pluginを介して)各モジュールを特定の方法でパッケージ化するマルチモジュールmaven2プロジェクトがあります。次に、別のモジュールを使用して、これらのアセンブリを配布可能な「インストーラー」パッケージに結合しようとしています。インストーラーモジュールの場合、他のプロジェクトのデフォルトのjarを確認できますが、追加のアセンブリにアクセスできるようになることはありません。ドキュメントから、これは可能であるはずなので、私は何か間違ったことをしているのか、それともMavenのバグだと思いますか?私はこれで数日間立ち往生しているので、助けていただければ幸いです!
コメントに続いて、これを実証するためにgithubでテストプロジェクトを作成しました。proj1モジュールは2つのjarファイルを作成します。「パッケージ」モジュールで生成されたアセンブリには両方が含まれていると思いますが、メインのプロジェクトjarだけが含まれているわけではありません。
https://github.com/unluckypixie/maven-packaging-test
注:この例では、proj1のjarの内容が同じであることはわかっていますが、実際の状況ではなく、proj1ファイルの内容が問題に関連しているとは思いません。
実行する場合:
mvn clean package
そして、ls proj1/target/*.jar
あなたは見るべきですか:
proj1/target/proj1-1.0-SNAPSHOT.jar
proj1/target/proj1-1.0-SNAPSHOT-proj1-assembly.jar
パッケージjarを見ると:
jar -tvf package/target/package-1.0-SNAPSHOT-package-assembly.jar
次のようなものが表示されます。
0 Mon Jul 30 16:27:00 BST 2012 META-INF/
106 Mon Jul 30 16:26:58 BST 2012 META-INF/MANIFEST.MF
0 Mon Jul 30 16:21:46 BST 2012 package/
2358 Mon Jul 30 16:21:44 BST 2012 package/proj1-1.0-SNAPSHOT.jar
2363 Mon Jul 30 16:21:46 BST 2012 package/package-1.0-SNAPSHOT.jar
proj1/target/proj1-1.0-SNAPSHOT-proj1-assembly.jar
なぜそこにもないのか知りたいです。
パッケージアセンブリは次のようになります。
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>package-assembly</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<moduleSets>
<moduleSet>
<useAllReactorProjects>true</useAllReactorProjects>
<includes>
<include>org.test.parent:*</include>
</includes>
<binaries>
<outputDirectory>/package/</outputDirectory>
<unpack>false</unpack>
</binaries>
</moduleSet>
</moduleSets>
</assembly>