У меня есть задача 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"
Строй.скала:
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)
}