如何为SBT依赖项降级Scala版本?

11
我在我的build.sbt中有一些依赖关系,它们没有为我使用的Scala版本2.9.0-1指定特定的构建,而是应该使用2.9.0的构建。如何配置构建以便它确定每个依赖项的确切版本,而无需指定每个依赖项的版本号?例如,subcut没有适用于2.9.0-1的构建。
我的build.sbt中的一些行:
...
scalaVersion := "2.9.0-1"
libraryDependencies ++= Seq(
  "org.scala-tools" %% "subcut" % "0.8"
)
...

我宁愿避免这个:

  "org.scala-tools" % "subcut_2.9.0" % "0.8"

类似于指定多个版本并按照指定顺序尝试。


2
我并不是说这是不可能的,但sbt应该如何猜测你实际想要的版本呢? - Debilski
2
是的,这正是我想的。也许我可以添加一些次要版本以供选择,除非主要版本不可用。 - hleinone
1
"org.scala-tools" % "subcut_2.9.0" % "0.8" 看起来现在似乎只有这种方式。 - jilen
1个回答

8
以下是我所做的内容:

这是我所做的:

libraryDependencies <++= (scalaVersion) { (v) =>
  val scalaVersionString = v match {
    case "2.9.0-1" => "2.9.0"
    case _ => v
  }
  Seq(
    "org.scala-tools.testing" % ("scalacheck_" + scalaVersionString) % "1.8" % "test" withSources,
    "org.specs2" %% "specs2" % "1.3" % "test" withSources,
    "com.github.dmlap" %% "sizeof" % "0.1" % "test" from "http://cloud.github.com/downloads/dmlap/jvm-sizeof/jvm-sizeof-0.1.jar"
  )
}

在这个解决方案中,你仍然需要知道哪些依赖支持你正在使用的主要版本,哪些不支持,并在定义那些不支持的依赖时使用单个“%”语法。 - hleinone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接