0

OSGI バンドルの依存関係をある場所にコピーするために、maven の copy-dependencies を使用しています。依存関係グラフのどこかに同じアーティファクトの 2 つのバージョンがあり、maven の解決では 1 つが無視されます。とにかく、これを回避して、maven に同じアーティファクトの複数のバージョンを解決させることができますか?

4

2 に答える 2

0

Maven のコア機能の 1 つはDependency Mediationです。グラフに同じアーティファクトの 2 つのバージョンがある場合、maven は最も近いバージョンを見つけようとします (「一方を無視」するのではなく、もう一方を使用することを決定します)。

見積もり:

「依存関係の仲介 - これは、アーティファクトの複数のバージョンが検出されたときに使用される依存関係のバージョンを決定します。現在、Maven 2.0 は、プロジェクトに最も近い依存関係のバージョンを使用することを意味する「最も近い定義」の使用のみをサポートしています。依存関係のツリーにあります。」

異なるバージョンで同じバンドルを持つことができる OSGi とは反対に、maven は常に、アーティファクトが 1 つの (最も近い) バージョンにのみ存在するように依存関係を解決します。これが不可能な場合 (たとえば、異なるバージョンが強制されているため)、競合が発生し、ビルドは失敗します。

于 2013-01-30T20:26:27.907 に答える
0

maven-bundle-plugin で Embed-Dependency タグを使用できますが、これは最善の方法ではない可能性があります。

このブログを作成しました。このブログでは、この OSGi の問題に対処する方法をいくつかの方法で詳細に説明しています。自分に最も適した方法を選択してください: http://www.citizenrandom.com/?cat=2

于 2015-02-20T18:41:45.193 に答える