2012-12-21 50 views
5

当交叉构建时,是否可以将SBT配置为使用完全不同的库版本,具体取决于项目正在构建的scala版本?SBT交叉建筑 - 为不同的scala版本选择不同的库版本

例如:

  • 当斯卡拉2.9.2建设我想用"org.scalatest" % "scalatest_2.9.2" % "2.0.M5" % "test"
  • 当斯卡拉2.10.0我想用"org.scalatest" % "scalatest_2.10.0-RC5" % "2.0.M5-B1" % "test"

回答

8

像这样的东西应该工作的基础上:

libraryDependencies <+= scalaVersion(scalatestDependency(_)) 

def scalatestDependency(scalaVersion: String) = scalaVersion match { 
    case "2.9.2" => "org.scalatest" % "scalatest_2.9.2" % "2.0.M5" % "test" 
    case "2.10.0" => "org.scalatest" % "scalatest_2.10.0-RC5" % "2.0.M5-B1" % "test" 
} 

我认为你确实意味着图书馆版本应该是另一种方式? :-)

你可以在ScalaMock 2 build中看到这个主题的变化。

+0

谢谢!有用。我的Scala版本以'2.10.0-RC5'的形式出现,所以我不得不改变匹配语句来使用正则表达式,如链接所示。如果有一种方法可以完全在.sbt文件中完成此操作,那将是非常棒的,但我认为目前还没有这样做? – theon

+0

@kim - 非常感谢您修复代码中的愚蠢错误(脸红)。 –

+0

@theon - 我不知道有什么方法可以在.sbt文件中执行此操作。 –