新的sbt“特性”配置在X中未找到/未解决(传递)依赖。

9

sbt最近的一个“功能”,可能是0.13.7或0.13.8版本,是一个非常恼人的行为,即不再发现传递依赖项。

例如,我有一个名为A的项目,它依赖于库B版本1.25.1,该库又依赖于库C版本1.13.1。只有在A中定义了库依赖项B,当然,因为我不想定义数十个子库的整个树形结构。好的,这样可以构建。

现在我将A中的依赖项更新为库B版本1.25.2,该库又依赖于库C版本1.13.2。现在sbt会抱怨一个相当无用的消息“library-C;1.13.2: 'master'在配置中未找到。它是从library-B;1.25.2编译所需的”,后跟一个“未解决的依赖项”异常。Sbt甚至不费力地从Maven Central下载库C版本1.13.2,或者实际上已经发现了它已经本地发布。唯一的“解决”方法是将对库C版本1.13.2的依赖关系添加到项目A中,这正是我不想做的。

以下是示例打印输出:

[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: de.sciss#scalacolliderugens-core_2.11;1.13.2: configuration not found in de.sciss#scalacolliderugens-core_2.11;1.13.2: 'master'. It was required from de.sciss#scalacolliderswing-core_2.11;1.25.2 compile
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn] 
[warn]  Note: Unresolved dependencies path:
[warn]      de.sciss:scalacolliderugens-core_2.11:1.13.2
[warn]        +- de.sciss:scalacolliderugens-plugins_2.11:1.13.2
[warn]        +- de.sciss:scalacolliderswing-core_2.11:1.25.2 (/home/hhrutz/Documents/devel/SoundProcesses/build.sbt#L167)
[warn]        +- de.sciss:soundprocesses-compiler_2.11:2.20.0-SNAPSHOT

我觉得这可能是sbt中令人厌烦的bug,或者有一些更深层次的原因导致无法解决传递依赖关系,而我并没有理解。

1个回答

9

即使我已经明确添加了库C,问题仍然在一段时间后再次出现。通常情况下,最终解决方案是:

$ rm -r ~/.ivy2/cache/
$ rm -r ~/.ivy2/local/

然后重新下载互联网。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接