2

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 からセクションをコピーして貼り付け、「これを最新の状態に保つようにしてください」というコメントを付けることです。明らかに、これは醜いハックですが、私は双方と最新の状態を維持する別の方法を見つけていません。

4

3 に答える 3

0

有効にすると、必要なライブラリをプルする独自の依存関係セクションを持つ複数のプロファイルをアクティブ化できませんでした。これにより、プロファイルをアクティブ化できる方法により、ある程度の柔軟性が得られます。

于 2012-01-11T10:56:23.280 に答える
0

今のところ、「これは Maven の本当に厄介な点の 1 つです」という答えを受け入れるつもりです。この質問は、Maven 3.1 が最終的に起動したときに更新される可能性があります。

于 2011-10-11T21:07:31.923 に答える
0

アセンブリ プラグインを使用してアーティファクトをそのすべての依存関係と共にパックし、代わりにパッケージング モジュールをその上で実行するのはどうでしょうか? 次に、ポンマジックを試していません。いつものように、別のプロジェクトのアーティファクトを使用するのは、あるプロジェクトの問題です。

于 2011-09-29T02:12:31.010 に答える