看看这里的例子:http ://www.scala-sbt.org/release/docs/Extending/Plugins.html#example-plugin
在此示例中,定义了一个任务和设置:
val newTask = TaskKey[Unit]("new-task")
val newSetting = SettingKey[String]("new-setting")
val newSettings = Seq(
newSetting := "test",
newTask <<= newSetting map { str => println(str) }
)
然后,您插件的用户可以为他们的build.sbtnewSetting
中的设置提供他们自己的值:
newSetting := "light"
编辑
这是另一个示例,更接近您的目标:
构建.scala:
import sbt._
import Keys._
object HelloBuild extends Build {
val newSetting = SettingKey[String]("new-setting", "a new setting!")
val myTask = TaskKey[State]("my-task")
val mySettings = Seq(
newSetting := "default",
myTask <<= (state, newSetting) map { (state, newSetting) =>
println("newSetting: " + newSetting)
state
}
)
lazy val root =
Project(id = "hello",
base = file("."),
settings = Project.defaultSettings ++ mySettings)
}
使用此配置,您可以my-task
在 sbt 提示符下运行,您将看到newSetting: default
打印到控制台。
您可以在build.sbt中覆盖此设置:
newSetting := "modified"
现在,当您my-task
在 sbt 提示符下运行时,您会看到newSetting: modified
打印到控制台。
编辑 2
这是上面示例的独立版本:https ://earldouglas.com/ext/stackoverflow.com/questions/17038663/