sbt dependsOn,typesafe配置合并application.conf

时间:2016-10-24 11:15:56

标签: dependencies sbt typesafe-config

我有一个包含两个模块的项目Array ( [INDEX1] => No [INDEX4] => No ) A。每个都有Bapplication.conf,其中包括前者。我的项目local.conf文件指定:

build.sbt

模块B.dependsOn(A % "compile->compile") 的{​​{1}}似乎包含模块local.conf的{​​{1}},因为模块中的替换值会出现B异常尝试运行模块application.confA' s UnresolvedSubstitution

我认为它正在合并A个文件。有没有办法阻止它这样做?特别是,我可以通过application.conf文件吗?

1 个答案:

答案 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文件放在Aapplication.conf文件中B,因为application.conf具有更高的优先级。

在您的情况下,AB都依赖于公共代码。为了保持关注点的分离,最好将这个公共代码重构到它自己的库模块中,然后 AB引用该代码。通过这种方式,您可以确保其所依赖的属性位于C中,AB正确设置的属性仅在其域中。