2016-12-01 4 views
1

いくつかのアプリケーションがいくつかのモジュールとして用意されています。 NetBeansを使用しています。私は開発を日食に移そうとしています。eaven依存関係の競合が一度だけ発生する

すべてのプロジェクトはMavenで構築されています。それらの1つはdbunitとPOIを使用します。私がEclipseでコンパイルしようとすると、悪いメソッドのシグネチャにエラーが発生します。 NetBeansをmavenやコマンドラインビルドでビルドしても、このエラーは発生しません。

コンパイラが私たちが使用しているバージョンより古いバージョンのPOIを使用してコンパイルしようとしていることが判明しました。 POIの特定のバージョンは、dbunitのメインリポジトリ情報に従って、コンパイルスコープ内でdbunitの依存関係として指定されます。なぜ私はdbunitを使用していてコンパイルしていないのでPOIのバージョンをコンパイルに引き込むのか理解できません。

私はそれが他の2つのコンパイル操作のいずれかではなく、日食のために引き込まれる理由は理解しません。

私は、Eclipseと1つのクラスパスのみを使用するEclipseのバグレポートサイトに関する多くのコメントを見てきました。変更するのは難しく、変更する予定はないということです。

これが当てはまる場合、他の人たちはどのようにこれに対処していますか?プロジェクトのコンパイルと矛盾するコンパイル依存関係を持つライブラリを使用する唯一のプロジェクトは、世界で(あるいは私の街でも)できません。 m2eのパッチ、またはEclipseの回避策がありますか?うまくいけば、20個のpom.xmlファイルをすべて変更する必要はありません。

答えて

0

コンパイルの依存関係は推移的です。 Maven2Eclipseプラグインは、ライブラリのツリーからの依存関係を1つだけ使用します(おそらくMavenと同じではありません)。

はDbUnitをを使用するときにPOIを除外し、安全のために:

<dependency> 
    <groupId>org.dbunit</groupId> 
    <artifactId>dbunit</artifactId> 
    <version>...</version> 
    <exclusions> 
    <exclusion> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi</artifactId> 
    </exclusion> 
    </exclusions> 
</dependency> 

をあなたは2.4.3のようにDbUnitをの新しいバージョンを使用している場合は、POIへの依存関係は推移ない、オプションの意味です。

+0

'コンパイル依存性は推移的ですか? 'なぜ、天国のために?私のビルドでdbunitをコンパイルする必要はありません。私のビルドではライブラリが使用されており、そのライブラリは特定のバージョンの別のライブラリを使用しているため、2つ目のライブラリを使用するたびに同じバージョンのライブラリを使用する必要がありますか?だから、私たちはこのような試行錯誤でそれらのライブラリを発見すると、そのようなライブラリごとに除外項目を追加する必要があります。それは、ツールが削除するために造られたと主張する「ジャーナル地獄」のようなものです。だから、これは "ツリーから1つの依存関係のみを使用する"はMaven2Eclipseだけですか? – arcy

関連する問題