2017-01-16 1 views
1

My classpath содержит две разные версии косвенной зависимости, и я не понимаю, почему.Ivy Indirect Dependency Listed Twice

Мой подпроект («myJar») зависит от подпроекта «utils», который зависит от «lib-subprojA». У меня есть код для всех этих проектов, но они являются собственностью, поэтому я не могу публиковать фрагменты.

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, но я не могу скомпилировать «myProject-myJar», потому что он использует старую версию «lib-subprojA».

Это происходит в Eclipse (с IvyDE) и sbt (sbt clean update compile). Я понятия не имею, почему решение среднего проекта («myProject-utils») создает правильную зависимость при разрешении листового проекта («myProject-myJar») содержит две версии одного JAR («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' есть также локальная папка, которую вы также можете попробовать удалить (она хранит библиотеки, которые были опубликованы с использованием' sbt publishLocal'). Там также есть хороший инструмент [здесь] (https://github.com/jrudolph/sbt-dependency-graph) для просмотра графика зависимости вашего проекта, который может помочь его сузить. – Eric

+0

Удаленные кеши от '~/.ivy2'. Проблема остается. Я даже сделал множество сборок 'lib-subprojA' (без изменений кода), надеясь, что версия 0.0.100 будет очищена. У меня теперь есть зависимости от версий 0.0.100 (старые, не хорошие) и 0.0.112 (последние) – radumanolescu

ответ

0

Оказывается, что в одном из конфигурационных файлов для Lib-subprojA мы установили local.ivy.dir в ${user.home}/ivy2 вместо ${user.home}/.ivy2. Я провел несколько часов, отслеживая один период, не более: .

Все работает как ожидается.

 Смежные вопросы

  • Нет связанных вопросов^_^