您如何覆盖HOCONS中的数组元素?

时间:2019-07-09 01:38:42

标签: scala configuration sbt hocon

我在.conf文件中拥有此文件,我想覆盖数组field1中索引0处的值

database {
  master {
    field1:["a","b","c"]
  }
}

然后我通过sbt运行该应用程序:

sbt -Ddatabase.master.field1.0="11.111.11.111:3306" package

然后我在jar中查看.conf文件,什么都没有改变。

本指南指示按索引而不是整个数组更改每个数组元素(我也曾尝试过,但无济于事):https://salsa.debian.org/java-team/typesafe-config/blob/master/HOCON.md#array-and-object-concatenation

如何覆盖HOCONS中的数组元素?

1 个答案:

答案 0 :(得分:2)

我认为问题是,您的hocon是您尝试打包的内容的一部分,但是-D会将参数赋予sbt JVM。为什么sbt JVM的配置对您打包的.jar有什么影响?

编辑
阿德里安教我,这实际上是可能的。我下面的解决方案仍然是我想要的。它是明确且易于理解的。在我看来,某些参数和sbt调用似乎不太干净。

我想您想要一个特定于环境的数据库配置。
您可以像尝试sbt一样使用配置启动应用程序,也可以将不同系统的所有配置放在不同的hocons中,然后根据要启动的系统来加载hocons,您可以通过程序的参数对其进行定义。
Look at the docs,了解如何加载其他文件。