所以这个问题真的很简单,我希望解决方案也可以。
所以基本上我有两个配置文件application.conf
和dev.conf
。我正在从sbt -Dconfig.file=dev.conf
这样的命令行传递配置文件。
问题是,当我从主对象(ConfigFactory.load
)加载配置时使用extends App
时,我通过命令行(在本例中为dev.conf
)传递了配置,但是当我加载时来自其他对象的配置,它将加载默认的application.conf
。
我可以加载从任何对象的参数传递来的配置吗?
答案 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
设置控制,如上例所示。