Scala 如何在任务或配置中将设置重写为新值?

Scala 如何在任务或配置中将设置重写为新值?,scala,sbt,Scala,Sbt,我有一些设置的默认值。当我调用distrib:package(distrib是新配置)或distrib任务(默认配置)时,我希望覆盖此设置。 此设置是为具有依赖于它们的项目的某些子项目设置的 更具体地说: 我使用xsbt web插件将服务器打包到war文件中。我有一个像这样的环境 webappPostProcess := { webappDir => (webstart in guiClient).value; IO.copy((webstartOutput in client).va

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

更具体地说:

我使用xsbt web插件将服务器打包到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(编译)
webstartSettings++Seq(useTsa:=false)++inConfig(Distrib)(webstartSettings++Seq(useTsa:=true))
。它适用于
package
useTsa
为false)和
distrib:package
useTsa
为true)。但是在
distrib:publish
设置中
useTsa
为false。

如果要重新设置设置,必须
重新加载项目。这在任务中是不可能的,您需要一个命令,它(几乎)是一个接受
状态
并返回新的
状态
的函数。在这里可以将设置设置为新值

继续读下去

但是,如果您希望每个配置有不同的设置值,那么就这么简单(在
build.sbt
中):

然后在外壳中:

> show compile:abc
[info] abc in Compile
> show test:abc
[info] abc in Test

阅读。

如果要重新设置设置,必须重新加载项目。这在任务中是不可能的,您需要一个命令,它(几乎)是一个接受
状态
并返回新的
状态
的函数。在这里可以将设置设置为新值

继续读下去

但是,如果您希望每个配置有不同的设置值,那么就这么简单(在
build.sbt
中):

然后在外壳中:

> show compile:abc
[info] abc in Compile
> show test:abc
[info] abc in Test

阅读。

这不是我想做的。我想有一些配置文件与一些设置的不同值。所以,当我开发时,我使用一组设置,当我需要发布时,我使用另一组设置。我认为配置是可能的,但我不理解它们是如何工作的。我在问题中提供了更多信息。我仍然不理解您的问题中的“我想覆盖此设置。此设置是为某些子项目设置的,这些子项目的项目依赖于它们。”。而这次更新也没什么帮助。对不起,这不是我想做的。我想有一些配置文件与一些设置的不同值。所以,当我开发时,我使用一组设置,当我需要发布时,我使用另一组设置。我认为配置是可能的,但我不理解它们是如何工作的。我在问题中提供了更多信息。我仍然不理解您的问题中的“我想覆盖此设置。此设置是为某些子项目设置的,这些子项目的项目依赖于它们。”。而这次更新也没什么帮助。很抱歉