在一个与2.9交叉构建的项目中使用仅限2.10的SBT插件

时间:2014-07-03 16:11:57

标签: scala sbt

假设我有一个与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的奥秘感到惊讶

2 个答案:

答案 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添加了一个插件,该插件在项目中可用,并启用它,就可以将设置添加到项目中。