0

为什么 SBT 版本以完全限定依赖的名义发挥作用?

我认为它只取决于 Scala 的版本。

这是示例。

  • build.sbtscalaVersion设置为2.10.2
  • build.propertiessbt.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-RC5SBT 无法找到这个插件并在日志中说

[info] Resolving com.github.siasia#xsbt-web-plugin_2.10;0.12.0-0.2.11.1 ...

如果我的配置中仍然是 2.10.2,为什么它会更改 scala 版本?如何解决?

4

1 回答 1

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

于 2013-08-21T02:29:16.077 回答