Git に保存されている Maven 3 マルチモジュール プロジェクト (~50 モジュール) があります。複数の開発者がこのコードに取り組んでビルドしています。また、プッシュごとにコールド ビルドを実行する自動ビルド マシンもあります。
ほとんどの個々の変更ログは、かなり少数のモジュールのコードを変更するため、変更のたびにソース ツリー全体を再構築するのは時間の無駄です。ただし、親プロジェクトのビルドを実行した最終結果が、コードベース全体をビルドした場合と同じになるようにしたいと考えています。また、手動でモジュールのバージョン管理を開始したくありません。これは、縦横無尽に行われるバージョン更新の悪夢になるからです。
私がやりたいことは、ビルドまたはインストールのいくつかのステップをインターセプトし、モジュール コンテンツのハッシュ (理想的には Git からプル) を取得し、そのハッシュの下に格納されているアーティファクトを共有バイナリ リポジトリで検索するプラグインを追加することです。見つかった場合は、そのアーティファクトを使用し、完全なビルドは実行しません。キャッシュに何も見つからない場合は、通常どおりビルドを実行し、アーティファクトをキャッシュに保存します。また、依存関係 (直接的または一時的) があり、キャッシュ ミスがあったモジュールを再構築することもお勧めします。
すでにこのようなことをするものはありますか? そうでない場合、それを Maven に追加する最もクリーンな方法は何でしょうか? プラグインで実現できるようですが、Maven に接続する正しい方法を見つけるのに苦労しています。具体的には:
- 「インストール」ゴールを傍受してキャッシュをチェックし、キャッシュミス時にモジュールの「ネイティブ」インストールゴールのみを呼び出すにはどうすればよいですか?
- 変更を伴う依存関係の再構築を強制するために、どのキャッシュ ミスが発生したかに関して、プラグインはどのようにあるモジュールから別のモジュールに状態を渡す必要がありますか?
私はまた、同じ最終結果を達成するための完全に異なる方法 (冗長ビルドの削減) に対してもオープンです。