使用sbt交叉编译Scala时如何使用不同的源代码? (MurmurHash的变化)

时间:2014-12-30 02:27:04

标签: scala sbt cross-compiling murmurhash

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

感谢。

1 个答案:

答案 0 :(得分: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: _*)

现在,src/main/scala_2.10是Scala 2.10.x源代码目录的一部分,而Scala 2.9.x是src/main/scala_2.9

<强>更新

@indrajitr Enable cross-version support for Scala sources. #1799

现在有一个拉取请求