大規模な(100モジュールを超える)マルチモジュールMavenプロジェクトのアセンブリを作成しようとしています。
すべてではありませんが、一部のモジュールには、最終的なアセンブリに含める必要のあるさまざまなファイルがありますが、それらをそこに配置する方法を理解するのに苦労しています。
典型的なモジュールのレイアウトは次のとおりです。
+- pom.xml
+- src
| +- main
| +- java
| +- ...
| +- resources
| +- ...
| +- scripts
| +- ...
このモジュールにはJARパッケージが含まれているため、主要なアーティファクトはJARファイルです。
最終的なアセンブリの目的の形式は次のとおりです。
+- bin
| +- <union of all files from src/main/scripts in the various modules>
+- lib
| +- <union of all JAR files produced by the various modules>
アセンブリ構造のlib部分を実行する方法は知っていますが、 bin部分を実行する方法がわかりません。
このブログ投稿は、各モジュールが独自のアセンブリ(基本的にはアセンブリフラグメント)を作成する必要があることを示唆しているようです。これらはすべて、実際のアセンブリコンポーネントによって集約されます。
これはMavenで行われる方法ですか?それはひどく重い&遅いようです。別の/より良い方法はありますか?
回答する前に、次の事実に留意してください。
- このプロジェクトはフラットモジュール構造を使用しています(それが重要な場合)。ネストされた構造に変更することはオプションではありません。
- スクリプトを1つのモジュールに統合できません。他にも、最終的なアセンブリにパッケージ化する必要があり、1か所に統合できない任意のファイルが存在する可能性があります(問題を説明するための簡単な例としてスクリプトを使用しました)。
- はい、100モジュールは多すぎると思いますが、これを制御することはできません。
- モジュールの数が多いことを考えると、すべてのPOMを変更する必要のないソリューションをお勧めします。