Maven プロジェクトのマルチモジュール プロジェクトがあります。一部のモジュールは、他のモジュールによって生成されたライブラリのカスタム パッケージを作成します。使用されているパッケージには、うまく操作する必要があるバージョン管理された依存関係の独自のスイートがあります。
例として、私の親 POM には、例えばcommons-codec:commons-codec 1.4、私の "core-lib" POM に依存関係 (明示的なバージョンなし) としてそれが含まれている可能性があり、パッケージング モジュールが正しいバージョンにバンドルされていることを確認したいと考えています。ただし、私が使用している特定のタイプのカスタム パッケージには、eg も必要です。またlog4j:log4j 1.2.15、パッケージ モジュールの実行時に、正しい log4j バージョンもバンドルされるようにしたいと考えています。
ここに問題があります。「{カスタム パッケージ} を作成するプロジェクト」で使用している POM の例では、カスタム パッケージ チームから提供された親を使用しています。親を使用すると、 のバージョン情報が失われcommons-codecます。親を使用すると、 のバージョン情報が失われlog4jます。
さて、「A と B を同じバージョンに依存させるにはどうすればよいか」と尋ねると、通常、「A と B を同じ親に設定dependencyManagementし、親にセクションを含める」と答えるでしょう。私の問題は、A、B、および C が同じバージョンに依存する必要があることですが、C を制御することはできません。
これがMavenの「ミックスイン」が対処することを意図していると思いますが、もちろんまだ存在していません。それまでの間、私が行ってきたことは、1 つの親を選択dependencyManagementしてから、別の POM からセクションをコピーして貼り付け、「これを最新の状態に保つようにしてください」というコメントを付けることです。明らかに、これは醜いハックですが、私は双方と最新の状態を維持する別の方法を見つけていません。