을 입력으로 사용하는 lazy val task = TaskKey[Unit]
작업이 있습니다. 또한 각각의 구성 범위 (setting in stage := "foo"
...)에 대해 setting
에 다른 값을 지정하는 세 가지 다른 독립 구성 범위 (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_ (작업 본문)을 여러 번 사용할 수 있습니다. 여기 전문가가 아니므로 더 많은 댓글을 기다릴 수도 있습니다. –
글쎄, 시작이야! 감사! :디 – esarbe