如何使SBT任务中使用一个特定的配置范围是什么? [英] How to make a sbt task use a specific configuration scope?
问题描述
我有一个任务懒VAL任务= TaskKey [单位]
,需要一个懒VAL设置= SettingKey [字符串]
作为输入。我也有三种不同的,独立的配置范围(配置(开发)
,配置(舞台)
, 配置(刺)
)和用于指定不同的值
为每个配置范围的( build.sbt
文件设置设置舞台:=富
...)。
我的预期,调用任务
使用的配置范围preFIX会使任务从各自的配置范围使用的值(如&GT ;开发:任务
将使任务使用设置
值从开发
,使用命令>阶段:任务
将使任务从期使用
,...)。然而,这似乎并没有工作。设置
值
我怎么能强迫任务
来从一个特定的配置范围内使用的设置?
build.sbt:
设置:=默认设置设置在舞台:=舞台布景在设置PROD:=PROD设置
Build.scala:
进口sbt._
进口Keys._反对TaskBuild扩展构建{
VAL设置= SettingKey [字符串](设置,一个简单的字符串设定) VAL任务= TaskKey [单位](任务,一个简单的任务实验) VAL taskTask =任务<< =设定图{S:字符串=>
的println(设置为:+ S)
} 懒VAL开发=配置(开发)describedAs(开发环境设置)
懒VAL阶段=配置(舞台)describedAs(阶段的环境设置)
懒VAL PROD =配置(刺)describedAs(PROD环境设置) 懒VAL根=项目(
项目,
文件(。),
设置= Defaults.defaultSettings ++ SEQ(taskTask)
)
.configs(开发,分期,督促)
}
我觉得你需要写像
VAL devTaskSetting =任务<<在开发地图{S =设置:字符串=>
的println(设置在开发是:+ S)
}
您也可以定义独立的任务键,这样
VAL devTask = TaskKey [单位]在开发中(任务,一个简单的任务实验)
VAL stageTask = TaskKey [单位](任务,一个简单的任务实验)的阶段
I have a task lazy val task = TaskKey[Unit]
that takes a lazy val setting = SettingKey[String]
as input. I also have three different, independent config scopes (config("dev")
, config("stage")
, config("prod")
) and a build.sbt
file that specifies different values for setting
for each of the config scopes (setting in stage := "foo"
... ).
I expected that calling task
using the config scope prefix would make the task use the values from the respective config scope (e.g. >dev:task
would make the task use the setting
values from dev
, using command >stage:task
would make the task use the setting
values from stage
, ...). However, this does not seem to work.
How can I force task
to use the settings from a specific config scope?
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)
}
I think you need to write something like
val devTaskSetting = task <<= setting in dev map { s: String =>
println("Setting in Dev is: " + s)
}
You can also define separate task keys, like this
val devTask = TaskKey[Unit]("task", "a simple task experiment") in dev
val stageTask = TaskKey[Unit]("task", "a simple task experiment") in stage
这篇关于如何使SBT任务中使用一个特定的配置范围是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!