我无法理解在Typesafe配置中合并资源文件的机制。
根据Typesafe配置documentation:
便捷方法ConfigFactory.load()加载以下内容 (首先列出的是更高优先级):
- 系统属性
- application.conf(具有此名称的classpath上的所有资源)
- application.json(具有此名称的classpath上的所有资源)
- application.properties(具有此名称的classpath上的所有资源)
- reference.conf(具有此名称的classpath上的所有资源)
假设我有两个模块:a
和b
,模块a
取决于模块b
。
lazy val a = (project in file("a"))
...
.dependsOn(b % "compile->compile;test->test")
如果两个模块都有资源文件reference.conf
,它们将如何合并?
是否附加?是这样,它如何解决冲突?
答案 0 :(得分:0)
我相信它们在反向类路径顺序中排在首位(无法找到文档来确认这一点)。
classpath: a.jar;b.jar;
->
b reference.conf will be loaded first and then overridden by a reference.conf
这使得它与.properties文件的读取方式一致,将使用类路径中的第一个。
我认为,无论是以编程方式还是按照预期使用reference.conf和application.conf来明确表示您的覆盖是个好主意。