Ivy 间接依赖两次列出

Ivy Indirect Dependency Listed Twice

我的类路径包含两个不同版本的间接依赖项,我不明白为什么。

我的子项目 ("myJar") 依赖于一个 "utils" 子项目,而该子项目又依赖于 "lib-subprojA"。我有所有这些项目的代码,但它们是专有的,所以我不能 post 片段。

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"(最新版本)。 不知道为什么两者都在类路径中,但我无法编译 "myProject-myJar" 因为它使用旧版本的 "lib-subprojA".

这发生在 Eclipse(使用 IvyDE)和 sbt(sbt clean update compile)中。 我不知道为什么解析中间项目 ("myProject-utils") 会产生正确的依赖关系,而解析叶项目 ("myProject-myJar") 会引入同一 JAR 的两个版本("lib-subprojA",版本 0.0.0.1)。 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

事实证明,在 lib-subprojA 的配置文件之一中,我们将 local.ivy.dir 设置为 ${user.home}/ivy2 而不是 ${user.home}/.ivy2。我花了几个小时跟踪单个句点字符,不超过这个:.

现在一切正常。