【发布时间】:2012-08-04 10:06:45
【问题描述】:
我有一个任务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 将使任务使用来自dev 的setting 值,使用命令@ 987654333@ 将使任务使用来自stage 的setting 值,...)。但是,这似乎不起作用。
如何强制task 使用来自特定配置范围的设置?
build.sbt:
setting := "default setting"
setting in stage := "stage setting"
setting in prod := "prod setting"
构建.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)
}
【问题讨论】: