2 つのモジュール (それぞれ独自の pom.xml を持つ) と、それらのモジュールを指す親 pom.xml を含むマルチモジュール プロジェクトがあります。
親pomで「mvn clean package」を実行すると、各プロジェクトは、独自のターゲットフォルダーの下にzipファイルになります。各モジュールの zip ファイルを含む zip ファイルを zip ファイルのルート フォルダーの下にパッケージ化したいと考えていますが、そうするといくつかの問題が発生します。
親 pom.xml フォルダーにアセンブリ ファイルを作成しました。
<!-- Release distribution -->
<assembly>
<id>release</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${basedir}/projectA/target/</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>*.tar.gz</include>
</includes>
</fileSet>
<fileSet>
<directory>${basedir}/projectB/target/</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>*.tar.gz</include>
</includes>
</fileSet>
</fileSets>
</assembly>
上記は機能しますが、このプロジェクトにさらに多くのモジュールを追加し始めると、このアセンブリを更新し続ける必要があり、非常に煩わしくなります。
理想的には、モジュールのすべてのターゲット フォルダーに自動的に移動し、そこに zip ファイルを取得するようにしたいと考えています。
これは、次のようにして実現できます。
...
<fileSet>
<directory>${basedir}</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>**/target/*.tar.gz</include>
</includes>
</fileSet>
ただし、ここでの問題は、zip ファイルにフル パスが含まれるため、ルート フォルダー内に zip ファイルを配置するのではなく、zip ファイルに projectA/target/xxxx.zip と projectB/target/xxxx.zip が含まれることです。これはまさに私が行っていることです。ほしくない。
新しいモジュールを追加するたびに更新する必要がなく、zip 内に完全なパスがないので、maven で簡単なアセンブリを作成する方法はありますか?
編集1
これは単に不可能のようです。アセンブリを維持するのが難しい、適切に構造化された zip ファイルを取得するか、維持するのは簡単だが煩わしい構造の zip ファイルを取得します。適切な解決策が見つかるまで、これは未回答のままにします
編集2
これに対する解決策を探すことに戻ります。以下に投稿された khmarbaise ソリューションに関して、いくつかの問題があります。アセンブリに含めたいプロジェクトを指定します。ビルドするモジュールを指定する親 pom にこの情報が既にあるため、ビルドされないように親 pom からモジュールを削除すると、アセンブリは既にそれを認識しており、そのプロジェクトの選択をスキップする必要があります (理由ファイルセットは、アセンブリ zip 内のくだらない、制御不可能なパスを除いて、うまく機能しているようです)。
誰も同じような問題に遭遇したことはありませんか?