我有一个包含两个模块的项目Array
(
[INDEX1] => No
[INDEX4] => No
)
和A
。每个都有B
和application.conf
,其中包括前者。我的项目local.conf
文件指定:
build.sbt
模块B.dependsOn(A % "compile->compile")
的{{1}}似乎包含模块local.conf
的{{1}},因为模块中的替换值会出现B
异常尝试运行模块application.conf
时A
' s UnresolvedSubstitution
。
我认为它正在合并A
个文件。有没有办法阻止它这样做?特别是,我可以通过application.conf
文件吗?
答案 0 :(得分:1)
执行此操作时:
B.dependsOn(A % "compile->compile")
当编译B
时,会执行A
编译并使其可用于B
。这意味着A
中的配置文件可供B
使用,因为Type-Safe配置会将这些配置放入类路径中。
最简单的解决方案可能是为您的属性命名空间,以便模块B
仅使用来自其自身配置的属性,而不是A
。 (这是一种最佳做法,可以明确区分关注点。)如果意图是B
配置为覆盖 A
的'默认'配置,并且假设A
本质上是B
使用的库,best practice guideline here之后,resource.conf
文件放在A
和application.conf
文件中B
,因为application.conf
具有更高的优先级。
在您的情况下,A
和B
都依赖于公共代码。为了保持关注点的分离,最好将这个公共代码重构到它自己的库模块中,然后 A
和B
引用该代码。通过这种方式,您可以确保其所依赖的属性位于C
中,A
或B
正确设置的属性仅在其域中。