我在下面的文件夹中有一个配置文件,减去
main
scala
resources
application.conf
并且包含
path{
http{
url = "http://testingurl"
}
}
我正在使用以下代码阅读
import com.typesafe.config.Config;
val url = conf.getString("path.http.url")
我正在读取在构建期间提供的静态信息。
现在,我想在运行时阅读这些内容,即使构建了jar,用户也应该能够修改配置。
我的要求是在构建jar之后修改url事件,我不想将其作为参数传递给main函数,因为我有这么多的值需要在jar构建之后进行修改
答案 0 :(得分:2)
在运行时使用:
-Dconfig.file=<relative or absolute path>
请参阅:
For applications using application.{conf,json,properties},
system properties can be used to force a different config source
(e.g. from command line -Dconfig.file=path/to/config-file):
config.resource specifies a resource name - not a basename, i.e. application.conf not application
config.file specifies a filesystem path, again it should include the extension, not be a basename
config.url specifies a URL
These system properties specify a replacement for application.{conf,json,properties}, not an addition.
They only affect apps using the default ConfigFactory.load() configuration.
In the replacement config file, you can use include "application" to include the original default config file;
after the include statement you could go on to override certain settings.
答案 1 :(得分:0)
我假定使用
提供的密钥构建.jar文件。val url = conf.getString(“ path.http.url”)
,您将每次使用修改后的.config
文件
我的要求是在构建jar之后修改url事件,
一种可能的解决方案是提供一个配置值数组,其中.jar文件中的键保持不变
import com.typesafe.config.ConfigFactory
ConfigFactory.load().getStringList("url.key").stream().map(eachUrl => functionToBeCalled)
答案 2 :(得分:0)
您可以使用System.setProperty
覆盖LightBend Config
import com.typesafe.config.ConfigFactory
println(ConfigFactory.load.getString("path.http.url"))
// http://testingurl
ConfigFactory.invalidateCaches()
System.setProperty("path.http.url", "http://example.com")
println(ConfigFactory.load.getString("path.http.url"))
// http://example.com