我在尝试使用typesafehub ConfigFactory fileParser的变量替换时遇到问题
我的代码是
Configuration(ConfigFactory.parseFile(new File("/Users/TDong/files/app.conf")).resolve())
我的app.conf文件包含
path = ${java.home}
对于每个解析我都无法使用变量替换来解析该变量以查找java系统属性home。任何想法如何使这项工作
答案 0 :(得分:2)
要利用覆盖ConfigFactory.load()
的最重要功能,或通过Config#withFallback
方法处理merging configuration。实际上就是这样
ConfigFactory#load()
有效。
https://github.com/typesafehub/config#standard-behavior
便捷方法ConfigFactory.load()加载以下内容 (首先列出的是更高优先级):
- 系统属性application.conf(classpath上的所有资源都带有 这个名字)
- application.json(类路径上的所有资源都带有此 姓名)
- application.properties(类路径上的所有资源都带有此 姓名)
- reference.conf(具有此名称的classpath上的所有资源)
恕我直言,您应该依赖默认行为并使用-Dconfig.file=/path/to/your.conf
将文件作为参数传递给您的应用程序。
我强烈建议您阅读编写得非常好的文档。
答案 1 :(得分:0)
在path = ${java.home}
,您指的是同一配置文件中java.home
下的其他值。要覆盖值,您应该使用
java -jar -Djava.home=VALUE your_jar.jar
或使用一些允许您传递参数的工具。
如果要在System.setProperty()
之前设置此值,则需要在加载配置文件之前设置该值。