为什么SBT的版本在完全限定依赖的名称中扮演角色?
我认为这只取决于Scala的版本。
这是一个例子。
build.sbt
已将scalaVersion
设置为2.10.2
build.properties
已将sbt.version
设置为0.12.1
plugins.sbt
具有插件依赖关系"com.github.siasia" %% "xsbt-web-plugin" % "0.12.0-0.2.11.1"
如果我构建它,我会在日志中看到以下内容:
[info] Resolving com.github.siasia#xsbt-web-plugin_2.9.2;0.12.0-0.2.11.1 ...
但如果我将sbt.version
设置为0.13.0-RC5
,则SBT无法找到此插件并在日志中说明
[info] Resolving com.github.siasia#xsbt-web-plugin_2.10;0.12.0-0.2.11.1 ...
为什么在我的配置中它仍然是2.10.2时它会改变scala版本?如何解决?
答案 0 :(得分:4)
sbt项目是递归的,因此每个图层都有自己的设置(包括scala版本和类路径)(参见http://www.scala-sbt.org/0.13.0/docs/Getting-Started/Full-Def.html)
sbt插件只是依赖于sbt的常规库,因此插件需要跨sbt版本交叉构建(并且每个sbt版本可能需要不同的scala版本)
addSbtPlugin函数负责处理并解析当前sbt和scala的适当工件
siasia#xsbt-web-plugin不再维护了,它没有sbt 0.13的版本,使用https://github.com/JamesEarlDouglas/xsbt-web-plugin作为替代