假设我有一个与Scala 2.9.3和2.10.4交叉构建的SBT 0.13项目。我想仅为2.10版本使用SBT插件(sbt-coveralls),因为该插件不适用于2.9。
我知道我可以使用CrossVersion
有条件地将插件设置添加到2.10版本中,但这对addSbtPlugin
无法为2.9找到任何内容这一事实没有帮助建立等等。
我认为这是不可能的(缺少一些非常混乱的ad-hoc shell脚本)但我不是一个SBT向导,并且很高兴能够以一种好的方式对SBT的奥秘感到惊讶
答案 0 :(得分:3)
发现这个可怕的黑客攻击方法,但似乎确实有效:
resolvers <++= scalaVersion {
case v if v startsWith( "2.12" ) =>
Seq.empty
case _ =>
addSbtPlugin( "org.scoverage" % "sbt-scoverage" % "1.0.4" )
addSbtPlugin( "org.scoverage" % "sbt-coveralls" % "1.0.0" )
Seq( Classpaths.sbtPluginReleases )
}
答案 1 :(得分:2)
我可能会误解这个问题,但我认为你可能会对某个项目的Scala版本感到困惑。
您不能使用与sbt不兼容的插件 - 运行时。如果插件不支持Scala sbt使用的版本,则插件被认为是不兼容的,因此sbt将拒绝启动。 sbt 0.13.5使用2.10.4,因此插件只能使用Scala API 2.10.4。这就是为什么addSbtPlugin
不提供%%
。
对于项目,情况有所不同。在这里你可以使用你想要的任何版本,无论sbt使用的版本和插件。一旦您addSbtPlugin
添加了一个插件,该插件在项目中可用,并启用它,就可以将设置添加到项目中。