私は入力としてlazy val setting = SettingKey[String]
を取るlazy val task = TaskKey[Unit]
というタスクを持っています。また、構成スコープ(setting in stage := "foo"
...)ごとに異なるsetting
の異なる値を指定する3つの異なる独立した構成スコープ(config("dev")
,config("stage")
、config("prod")
)とbuild.sbt
ファイルもあります。どのように特定の構成スコープを使用するsbtタスクを作成するには?
は私が期待されるタスクは、(それぞれの設定範囲から値を使用するだろうコンフィグスコープ接頭辞を使用してtask
を呼び出すなど>dev:task
タスクは、タスクがsetting
を使用するだろうコマンド>stage:task
を使用して、dev
から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)
}
実行時に、どのコンフィグスコープを使用するかを決めることはできません。可能な設定ごとにタスクを定義する必要がありますか? – esarbe
わかりません。しかし、 'map'に対して_same function_(タスク本体)を複数回使用することができます。ここでは専門家ではないので、もっとコメントを待つかもしれません。 –
さて、これは始まりです!ありがとう! :D – esarbe