如何在任务或配置中将设置覆盖为新值?

时间:2015-11-19 12:25:59

标签: scala sbt

我有一些设置的默认值。当我调用distrib:packagedistrib是新配置)或distrib任务(默认配置)时,我想覆盖此设置。 此设置是针对某些子项目设置的,项目依赖于它们。

更具体:

我使用xsbt-web-plugin在war文件中打包服务器。在我有一个像

的设置
webappPostProcess := { webappDir => (webstart in guiClient).value;
  IO.copy((webstartOutput in client).value, webappDir / "client") 
}

用于构建WebStart客户端并将其复制到war文件目录。在guiClient项目中,我有一个设置useTsa := false(来自自定义插件)。我想在发布服务器时将此设置设置为true。

目前我有lazy val Distrib = config("distrib").extend(Compile)webstartSettings ++ Seq(useTsa := false) ++ inConfig(Distrib)(webstartSettings ++ Seq(useTsa := true))。它适用于packageuseTsa为false)和distrib:packageuseTsa为真)。但在distrib:publish设置中useTsa为假。

1 个答案:

答案 0 :(得分:2)

如果要重新设置设置,则必须.and("field1").plus("field2")项目。在任务中是不可能的,并且您需要一个(几乎)一个接受reload并返回新State的函数的命令。您可以在此处将设置设置为新值。

继续阅读Commands

如果你想为每个配置设置不同的设置值,就像这样简单(在State中):

build.sbt

然后在shell中:

lazy val abc = settingKey[String]("A sample ABC setting")
abc in Compile := "abc in Compile"
abc in Test := "abc in Test"

阅读Keys

相关问题