Typesafe配置:如何合并资源文件

时间:2017-11-12 01:53:02

标签: scala typesafe-config

我无法理解在Typesafe配置中合并资源文件的机制。

根据Typesafe配置documentation

  

便捷方法ConfigFactory.load()加载以下内容   (首先列出的是更高优先级):

     
      
  • 系统属性
  •   
  • application.conf(具有此名称的classpath上的所有资源)
  •   
  • application.json(具有此名称的classpath上的所有资源)
  •   
  • application.properties(具有此名称的classpath上的所有资源)
  •   
  • reference.conf(具有此名称的classpath上的所有资源)
  •   

假设我有两个模块:ab,模块a取决于模块b

lazy val a = (project in file("a"))
  ...
  .dependsOn(b % "compile->compile;test->test")

如果两个模块都有资源文件reference.conf,它们将如何合并?

是否附加?是这样,它如何解决冲突?

1 个答案:

答案 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来明确表示您的覆盖是个好主意。