更改当前sbt任务范围中的变量

这编译,但它不会将scalacOptions添加到compile任务。 什么是正确的方法来做到这一点?

compileWall in ThisBuild := Def.task {
  scalacOptions += "-Xfatal-warnings"
  (compile in Compile).value
}.value

SBT设置在运行系统中是不可变的,所以我们无法更新自定义Task scalacOptions

http://www.scala-sbt.org/0.13/docs/Full-Def.html#Reminder%3A+it%E2%80%99s+all+immutable

但有一种方法可以通过创建自定义配置并在此配置中绑定scalacOptions来实现自定义Task中的更改scalacOptions ,如下所示:

lazy val MyCompile = config("MyCompile") extend Compile // customize config: MyCompile
configs(MyCompile) //configs 
inConfig(MyCompile)(Defaults.configTasks) //inConfig and append the Defaults.configTasks

val compileWall = taskKey[Unit]("compileWall")

compileWall in ThisBuild := {
  (compile in MyCompile).value
}

scalacOptions in MyCompile := Seq("-Xfatal-warnings") // bind the scalacOptions in customize config.
链接地址: http://www.djcxy.com/p/39393.html

上一篇: Change a variable in the current sbt task scope

下一篇: UITableView swipe gesture conflicts with UITableViewCell swipe