java - Ivy 间接依赖项列出两次

标签 java scala ivy

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

我的子项目(“myJar”)依赖于“utils”子项目,而“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”(最新版本)。 不知道为什么两者都在类路径中,但我无法编译“myProject-myJar”,因为它使用旧版本的“lib-subprojA”。

这发生在 Eclipse(使用 IvyDE)和 sbt(sbt clean updatecompile)中。 我不知道为什么解析中间项目(“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

最佳答案

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

现在一切都按预期运行。

关于java - Ivy 间接依赖项列出两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41685161/

相关文章:

scala - 使用 scala 导入的文件字段中带有换行符 (LF) 的 Spark CSV 问题

scala - Spark 无法与 pureconfig 一起使用

Scala:抽象类型模式 A 未被选中,因为它已被删除消除

ivy - 我如何告诉 ivy4r 保持离线状态?

dependencies - 使用gradle解决代理存储库中的ivy依赖项会导致资源丢失

java - 无法使用 Play Framework 1.2.5 发送电子邮件

java - 安全删除 "unused"运行时依赖项

java - 多线程,可重用的 Runnable 与调用者特定的操作

java - 字符串池内存分配

eclipse - 如何在eclipse中使用Ivy + IvyDE将不同的jar放入lib和web-inf/lib中