4

我正在使用 SBT 0.13.2(也可以是 0.13.5),并且正在尝试为 2.10 编写一个项目并将其交叉编译为 2.9 和 2.10。它使用scala.util.hashing.MurmurHash32.9 中不存在的;而是有scala.util.MurmurHash(可能不兼容???)。我的来源需要不同来处理不同地方和不同接口的导入。我想我需要有两个不同的.scala文件,并以某种方式告诉 SBT.scala在为 2.9 编译时编译一个文件,.scala为 2.10 编译另一个文件。我该怎么做呢?

谢谢。

4

1 回答 1

1

您可以附加到unmanagedSourceDirectories

lazy val commonSettings = Seq(
  scalaVersion := "2.10.4",
  unmanagedSourceDirectories in Compile +=
    (sourceDirectory in Compile).value / ("scala_" + (scalaBinaryVersion.value match {
      case v if v startsWith "2.9." => "2.9"
      case v => v
    }))
)

lazy val root = (project in file(".")).
  aggregate(app).
  settings(commonSettings: _*)

lazy val app = (project in file("app")).
  settings(commonSettings: _*)

现在,它是 Scala 2.10.x 和Scala 2.9.xsrc/main/scala_2.10的源目录的一部分。src/main/scala_2.9

更新

现在有一个由 @indrajitr 打开的拉取请求 启用对 Scala 源的跨版本支持。#1799

于 2015-01-09T11:48:56.430 回答