現在、マルチモジュール Maven プロジェクトの Maven ビルドの最適化に取り組んでいます。プロジェクトは、約 90 の Maven モジュールで構成されています。一般に、コアを構成するいくつかの分野横断的なライブラリがあり、アプリケーション全体を構成する約 15 の「アプリケーション モジュール」があります (その後、WAR としてデプロイされます)。
一般に、プロジェクト全体のメジャー バージョンは「2.5」であるため、新しいメジャー リリースが完了すると、すべての「アプリケーション モジュール」は同じバージョン「2.5.0」になります。ここまでは順調ですね。
モジュールに修正または改善が必要なバグがある場合、その「アプリケーション モジュール」の新しいバージョンをリリースする必要があります。たとえば、モジュール A のバグが修正された場合、A.jar はバージョン「2.5.1」である必要がありますが、残りは「2.5.0」のままです。
親 (2.5.0-SNAPSHOT - モジュール A (2.5.1-SNAPSHOT) - モジュール B (2.5.0-SNAPSHOT) - モジュール C (2.5.2-SNAPSHOT) - 戦争 (2.5.3-SNAPSHOT) <-- 3最後に、C には 2 回の再リリースがあり、A には 1 回の再リリースがあり、簡単にするためにモジュールがリリースされるたびにリリースされたためです。
1 つのモジュールをリリースした後に各アーティファクトの依存バージョンを更新する必要がないように、マスター pom でアーティファクト バージョンを管理することにしました。
そのため、更新された「アプリケーション モジュール」の準備ができたら、maven リリース プラグインを使用してそのモジュールのリリースを実行します (プロジェクト全体ではなく、1 つのモジュールをリリースします)。したがって、モジュール A をバージョン 2.5.4 でリリースするとします。その結果、A.jar がバージョン 2.5.4 としてデプロイされ、モジュール コードが 2.5.5-SNAPSHOT に更新されて終了します。
これが完了したら、マスター pom のバージョンを更新する必要があるため、すべてのモジュールは引き続き正しいバージョンを参照します。
マスター pom の依存関係管理セクションのおかげで、War モジュールをビルドすると、モジュール A の新しいバージョンが自動的に取得されます。
すべてのモジュールがリリースされるとすぐに、Web アプリケーションの新しいバージョンをリリースする必要があります。これには、変更されていないすべてのモジュールと、リリースされたばかりのモジュールが含まれている必要があります。どうすればいいのか、現在悩んでいます。親の poms バージョンに依存している場合、リリースには SNAPSHOT バージョン (1 つのバージョンの増分が高すぎる) が含まれますが、これは私とリリース プラグインでは許可されません。
このジレンマの最善の解決策は何でしょうか?
依存関係の管理を別の pom にアウトソーシングし、それを「インポート」スコープを使用してマスター poms の dependencyManagement にインポートするという 1 つのアイデアがありました。
この種のシナリオはばかげたアイデアですか? このような大規模なマルチモジュール アプリケーションの開発と保守に代わる方法はありますか? アプリケーションが大きく、クライアント アプリケーションが更新されたモジュール バージョンをロードする必要があるため、プロジェクト全体でリリース プラグインを使用してすべてのバージョンを単純に同期することはできません。一部のお客様は接続が非常に遅いため、毎回すべてのモジュールをロールアウトすると非常に不満を感じます。
助けていただければ幸いです。
クリス