Giriş olarak bir lazy val setting = SettingKey[String]
alan bir görevim var lazy val task = TaskKey[Unit]
. Ayrıca, her bir yapılandırma kapsamı (setting in stage := "foo"
...) için setting
için farklı değerler belirten bir build.sbt
ve bir build.sbt
dosya ve üç farklı bağımsız yapılandırma kapsamı var (setting in stage := "foo"
...).Sbt görevi nasıl oluşturulur belirli bir yapılandırma kapsamı kullanır?
beklediğim o görevi (ilgili yapılandırma kapsamından değerleri kullanın yapacak yapılandırma kapsamı öneki kullanılarak task
arayarak örn >dev:task
görev setting
kullanmak yapacak komutu >stage:task
kullanarak, dev
den setting
değerleri kullanın yapacak stage
, ...) değerleri. Ancak, bu işe yaramıyor.
Ayarları belirli bir yapılandırma kapsamından kullanmak için task
'u nasıl zorlayabilirim?
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)
}
Bu nedenle, çalışma zamanında hangi yapılandırma kapsamının kullanılacağına karar vermek mümkün değil, biri her olası yapılandırma için bir görev tanımlamalı mı? – esarbe
Emin değilim. Ancak, "map" için _same function_ (görev gövdesi) 'ni birden çok kez kullanabilirsiniz. Burada uzman değil, belki daha fazla yorum için bekleyin. –
Eh, bu bir başlangıç! Teşekkürler! : D – esarbe