2017-01-16 3 views
1

私のクラスパスには間接依存の2つの異なるバージョンが含まれており、なぜそれが理解できません。Ivy Indirect Dependency Listed 2回

私のサブプロジェクト( "myJar")は、 "lib-subprojA"に依存する "utils"サブプロジェクトに依存します。私はこれらすべてのプロジェクトのコードを持っていますが、それらは独自仕様なので、スニペットを投稿することはできません。

myProject-myJar -> myProject-utils -> lib-subprojA 

私はlib-subprojAに変更を加えました。変更前の最終バージョンは0.0.100-SNAPSHOTでした。私の変更を含むバージョンは0.0.101-SNAPSHOTです。 "myProject-myJar"のクラスパスを見ると、 "lib-subprojA-0.0.100-SNAPSHOT.jar"(旧バージョン)と "lib-subprojA-0.0.101-SNAPSHOT.jar"(最新バージョン)。 どちらもclasspathにありますが、 "lib-subprojA"の古いバージョンを使用しているため、 "myProject-myJar"をコンパイルできません。

これはEclipse(IvyDE)とsbt(sbt clean update compile)で発生します。 私は、リーフプロジェクト( "myProject-myJar")を解決している間に、同じJARの2つのバージョン( "lib-subprojA"、バージョン0.0 .100、0.0.101)。

これは中間結果がキャッシュされるためですか?もしそうなら、どうすればそのキャッシュを削除できますか?

lib-subprojA // Made change here. Old version: 0.0.100; new: 0.0.101 
lib-subprojB 
myProject-utils: dependency ... name="lib-subprojA" rev="0.0.+" conf="compile->compile(*),master(*);runtime->runtime(*)" 
    resolves to: lib-subprojA-0.0.101-SNAPSHOT.jar 
myProject-myJar: dependency ... name="myProject-utils" rev="0.0.+" conf="compile->compile(*),master(*);runtime->runtime(*)" 
    resolves to: lib-subprojA-0.0.100-SNAPSHOT.jar, lib-subprojA-0.0.101-SNAPSHOT.jar 
+0

キャッシュをクリアするには、 'rm -rf〜/ .ivy2/cache'を実行します。 '〜/ .ivy2'に' local'フォルダもあります( 'sbt publishLocal'を使って公開されたライブラリを保存しています)。また、プロジェクトの依存関係グラフを見ることで、絞り込むのに役立つ素晴らしいツール(ここではhttps://github.com/jrudolph/sbt-dependency-graph)もあります。 – Eric

+0

'〜/ .ivy2'からキャッシュを削除しました。問題は残っている。私はバージョン0.0.100のgetが削除されることを期待して、(コード変更なしの) 'lib-subprojA'を数多くビルドしました。私は今バージョン0.0.100(古い、いいえ)と0.0.112(最新)に依存しています。 – radumanolescu

答えて

0

これは、LIB-subprojAのための設定ファイルのいずれかで、我々は${user.home}/ivy2代わりの${user.home}/.ivy2local.ivy.dirを設定していたことが判明。私は、これよりも大きくない単一の期間の文字を追跡するのに数時間を費やしました:.

これはすべて期待どおりに動作します。