Typesafe配置加载错误的配置

时间:2018-12-23 22:54:10

标签: scala typesafe-config

所以这个问题真的很简单,我希望解决方案也可以。

所以基本上我有两个配置文件application.confdev.conf。我正在从sbt -Dconfig.file=dev.conf这样的命令行传递配置文件。

问题是,当我从主对象(ConfigFactory.load)加载配置时使用extends App时,我通过命令行(在本例中为dev.conf)传递了配置,但是当我加载时来自其他对象的配置,它将加载默认的application.conf

我可以加载从任何对象的参数传递来的配置吗?

1 个答案:

答案 0 :(得分:3)

使用runMain SBT任务运行应用程序时,by default SBT不会为您的代码创建单独的JVM。在应用程序生命周期中,当然还有在系统属性方面,都会产生一些后果。

通常,只要您的构建配置未启用forking,您的方法就应该有效。但是,我认为更好的方法是实际上依赖于派生并显式指定系统属性。这样可以保证工作。为此,您需要将fork任务中的run设置为true,然后添加JVM命令行选项:

Compile / run / fork := true,
Compile / run / javaOptions += "-Dconfig.file=dev.conf",

不要忘记在那之后重新启动SBT。您无需通过这种方法将config.file属性传递给SBT;而是由javaOptions设置控制,如上例所示。

相关问题