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,或者有一些更深层次的原因导致无法解决传递依赖关系,而我并没有理解。