【发布时间】:2019-01-02 12:27:14
【问题描述】:
我在 SBT (1.1.6) 中有一个多模块项目。
我的示例模块定义:
lazy val `example` = (project in file("example"))
.settings(
scalaVersion := "2.11.12",
crossScalaVersions := Seq("2.10.7", "2.11.12"),
libraryDependencies ++= Seq( ... )
)
现在我的意图是禁用2.11 jar 的发布,设置:
lazy val dontPublish: Seq[Def.Setting[_]] = Seq(
publish := {},
publishLocal := {},
publishM2 := {},
publishArtifact := false,
publishTo := None
).flatten
我可以阻止所有的情况,所以我希望一些简单的事情,比如:
lazy val `example` = (project in file("example"))
.settings(
scalaVersion := "2.11.12",
crossScalaVersions := Seq("2.10.7", "2.11.12"),
(if (scalaBinaryVersion.value == "2.11") dontPublish else Seq.empty),
libraryDependencies ++= Seq( ... )
)
可以工作,但是...我收到一个错误:
/path/build.sbt:371: error: `value` can only be used within a task or setting macro, such as :=, +=, ++=, Def.task, or Def.setting.
(if (scalaBinaryVersion.value == "2.11") dontPublish else Seq.empty).flatten,
^
[error] sbt.compiler.EvalException: Type error in expression
问题:
如何根据条件(例如,Scala 版本)添加设置?
【问题讨论】:
-
@Nio 我尝试使用它,但要么我错过了什么,要么它不再工作了。