2017-08-15 17 views
0

私のGradleプロジェクトに2つの依存関係のライブラリがあります。内部の依存関係のクラス修飾名の競合

  • OLD:フルutilの
  • NEW libに:唯一のlibデシベル(固定LIB)

両方パッケージを含む同じdb接続クラスを保持します。例:net.mycompany.common.dbsq.DBConnector()

私が必要とするのは、NEWからDB接続クラスを使用することですが、NEWでは使用できない残りの必要なutilによって、OLD(dbクラスなしでも可能)を依存関係として維持することです。

依存関係の特定のクラスまたはパッケージだけを除外/包含する可能性はありますか?または、同じ名前のクラスの「オーバーライド」を確実にしますか?残念なことに、推移的な依存性の問題ではありませんが、名前の競合するdb接続クラスは両方にあります。また、依存関係の内容には何の影響もありません。

IDE(Idea)はコンパイルの依存関係を両方とも指定すると、NEWのクラスを使用しますが、weblogicサーバーの.warを実行するとOLDのdb接続クラスが使用されます。

アイデア?私はより具体的な説明を与えることができますが、これは非常に一般的な質問です。

答えて

1

2つのライブラリを含む場合は、それらをいっぱいに含めます。

私は2つのだけのアプローチと考えることができます:

  1. は、古い依存関係を削除し、あなたが依存するクラスが含まれる新しいライブラリである確認してください。通常、プロジェクトが1つの完全なjarに基づくパッケージをより細かいものに基づいてパッケージングすることで置き換えられた場合、すべての細かいライブラリを追加するだけで、完全なクラスを持つことができます。あなたのライブラリがどちらであるか教えてくれれば、より具体的なもので簡単に答えることができます。
  2. 古いライブラリを取り出し、必要なクラスのみで再パッケージします。落胆して問題につながりやすい

ベストオプションは1

+0

ありがとう、それはもはや維持されていないので、私は私の中よりgrinedバージョン(別のDBの一部のような任意の更新や継続を期待するカント内部数歳のlibです場合)。私はOLDの.jarを取ってみて、dbクラスパッケージを削除します。 –

+0

しかし、これは理想的な解決策から遠く離れているので、OLD .jarをダウンロードし、必要なパッケージを削除し、ファイル依存関係を設定して問題を解決してください。 –

関連する問題