J'ai une tâche lazy val task = TaskKey[Unit]
qui prend un lazy val setting = SettingKey[String]
comme entrée. Je dispose également de trois scopes de configuration différents et indépendants ( config("dev")
, config("stage")
, config("prod")
) et un build.sbt
qui spécifie différentes valeurs pour setting
pour chacun des scopes de configuration ( setting in stage := "foo"
... ).
Je m'attendais à ce qu'appeler task
en utilisant le préfixe de l'étendue de la configuration, la tâche utiliserait les valeurs de l'étendue de la configuration respective (par ex. >dev:task
ferait en sorte que la tâche utilise le setting
valeurs de dev
en utilisant la commande >stage:task
ferait en sorte que la tâche utilise le setting
valeurs de stage
, ...). Cependant, cela ne semble pas fonctionner.
Comment puis-je forcer task
pour utiliser les paramètres d'un champ de configuration spécifique ?
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)
}