2011-12-22 13 views
2

私は同じジャーの2つのバージョンを持つプロジェクトを持っています(それらは同じクラスと他の特定のクラスを実装しています)。 1つのjarはあるフォルダ内のjavaソースファイルに使用され、もう1つは他のフォルダ用です。Maven:競合のjarの依存性

問題は、両方のフォルダのような、依存関係リストで最初に見つかったjarファイルを使用しているようですので、それは、jarファイルの競合(別のクラスの実装を)引き起こすことがある:

jar_fileという ... 1.0 jar_fileという 0.0

...その後 2.0.0

は、私の質問は、私は目を関連付けることができる方法であります同じプロジェクト内の各フォルダへの特定の依存関係

乾杯。

+0

バージョン2.0にバージョン1.0との下位互換性は含まれていませんか? – Davos555

+0

プロジェクトのすべての場所でバージョン2.0を使用できないのはなぜですか? –

+0

こんにちは、下位互換性はありません:(実際には、同じ標準の異なる実装で、異なるバージョンではありません) – Soni

答えて

5

2つの「フォルダ」を2つの異なるMavenモジュールにリファクタリングする必要があります。それぞれが必要とするライブラリのバージョンを宣言できるようになりました。次に、maven-shade-pluginを使用して、両方のモジュールの結果として生じるJARファイルにライブラリをシェードします。さらに、ライブラリのクラスを新しいパッケージに再配置するには、maven-shade-pluginのclass relocation機能を使用します。ライブラリの2つのバージョンの異なるパッケージ名を選択します。結果として得られるJARファイルに影を付けた2つの異なるパッケージに、ライブラリの両方のバージョンを持つことになります。

関連する問題