有没有一种方法可以为多项目构建的不同部分获得不同的跨 scala 版本?这样做的动机是我将客户端和服务器库捆绑在一个构建中。客户端库需要同时支持 2.9 和 2.10,但我想在服务器中使用 2.10 特定的库和功能。
我们有一个 hacky 解决方法:
def forkSrcDirs(srcDirectory: File, scalaVer: String) = {
val ver = scalaVer.split("\\.").take(2).mkString(".")
Seq(srcDirectory / "scala-%s".format(ver), srcDirectory / "java-%s".format(ver))
}
lazy val forkSourceSettings = {
seq(
unmanagedSourceDirectories in Compile <++= (sourceDirectory in Compile, scalaVersion) apply forkSrcDirs,
unmanagedSourceDirectories in Test <++= (sourceDirectory in Test, scalaVersion) apply forkSrcDirs
)
}
这让我们可以通过将所有代码放在 server/src/main/scala-2.10 中来实现目标,但看起来这应该是我们可以直接通过 SBT 设置完成的事情。