par*_*tic 5 scala sbt scala-2.10
我正在使用一个带有交叉构建的项目,用于Scala 2.8,2.9和(希望)2.10,使用SBT.我想-feature在仅使用2.10编译时添加选项.
换句话说,当我使用小于2.10.0的版本进行编译时,我想将编译器选项设置为:
scalacOptions ++= Seq( "-deprecation", "-unchecked" )
Run Code Online (Sandbox Code Playgroud)
当使用大于或等于2.10.0的版本进行编译时:
scalacOptions ++= Seq( "-deprecation", "-unchecked", "-feature" )
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这个目标?
在交叉构建时,scalaVersion会反映您的项目当前构建的版本.所以取决于scalaVersion应该做的伎俩:
val scalaVersionRegex = "(\\d+)\\.(\\d+).*".r
...
scalacOptions <++= scalaVersion { sv =>
sv match {
case scalaVersionRegex(major, minor) if major.toInt > 2 || (major == "2" && minor.toInt >= 10) =>
Seq( "-deprecation", "-unchecked", "-feature" )
case _ => Seq( "-deprecation", "-unchecked" )
}
Run Code Online (Sandbox Code Playgroud)
我发现这是一种快速而简洁的方法:
scalaVersion := "2.10.0"
crossScalaVersions := "2.9.2" :: "2.10.0" :: Nil
scalacOptions <<= scalaVersion map { v: String =>
val default = "-deprecation" :: "-unchecked" :: Nil
if (v.startsWith("2.9.")) default else default :+ "-feature"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3351 次 |
| 最近记录: |