SBT - 在一个项目中使用两个版本的库?

时间:2016-04-26 09:49:29

标签: scala sbt scalatest

我有一个项目,其中包含一系列为Scalatest 1.x编写的测试,这些测试使用的是ShouldMatchers类,该版本在2.x版中已弃用。展望未来,我想使用版本2进行新的测试,但这意味着我必须重构所有现有的测试(我可以做,但需要一些时间)。

与此同时,SBT中是否有一种方法可以针对Scalatest 1.x编译现有的类,而针对Scalatest 2.0编译新的类?

或者更一般地说,将项目中的某些类针对不同版本的库编译到其他类中? (我知道这可能是一个非常可怕的想法。)

1 个答案:

答案 0 :(得分:2)

您可以创建两个相关的子项目,每个版本的scala-test一个。

lazy val root = project.in(file("."))

lazy val oldTests = project.in(file("old-tests"))
  .dependsOn(root)
  .settings(
    libraryDependencies += "org.scalatest" %% "scalatest" % "1.9.1" % "test"
  )

lazy val newTests = project.in(file("new-tests"))
  .dependsOn(root)
  .settings(
    libraryDependencies += "org.scalatest" %% "scalatest" % "2.2.6" % "test"
  )