为什么SBT版本在完全合格的依赖关系名称中起作用?

时间:2013-08-21 01:45:30

标签: scala sbt

为什么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版本?如何解决?

1 个答案:

答案 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作为替代