我有一个任务lazy val task = TaskKey[Unit]
,需要一个lazy val setting = SettingKey[String]
作为输入。 我也有三个不同的,独立的配置范围( config("dev")
config("stage")
config("prod")
和build.sbt
,指定不同的值的文件setting
为每个配置作用域( setting in stage := "foo"
...)。
我预计,调用task
使用的配置范围前缀会使任务从各自的配置范围内使用的数值(如>dev:task
将使任务使用setting
从值dev
,使用命令>stage:task
将使任务使用在setting
从值stage
,...)。 然而,这似乎并没有工作。
我如何可以强制task
从一个特定的配置范围使用的设置?
build.sbt:
setting := "default setting"
setting in stage := "stage setting"
setting in prod := "prod setting"
Build.scala:
import sbt._
import Keys._
object TaskBuild extends Build {
val setting = SettingKey[String]("setting", "a simple string setting")
val task = TaskKey[Unit]("task", "a simple task experiment")
val taskTask = task <<= setting map { s: String =>
println("Setting is: " + s)
}
lazy val dev = config("dev") describedAs("dev environment settings")
lazy val stage = config("stage") describedAs("stage environment settings")
lazy val prod = config("prod") describedAs("prod environment settings")
lazy val root = Project(
"project",
file("."),
settings = Defaults.defaultSettings ++ Seq(taskTask)
)
.configs(dev, stage, prod)
}