我正在使用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
文件。我该怎么做?
感谢。
答案 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
现在有一个拉取请求