sbt-native-packager 打包项目的依赖找不到配置值

sbt-native-packager packaged project's dependency fails to find config value

我有一个 Scala 项目有很多依赖项。其中之一需要的设置不在其自身的 application.conf 中,而是在其他依赖项的 application.conf 中。当我 运行 带有 sbt run 的项目时,一切都很好,但是,当我 运行 来自 target/universal/stage/bin 的打包 deb 服务或 bin 脚本时,我得到一个错误:com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'roadmaps'。两个依赖项在其 jar 中的 application.conf 中具有此设置。当我将设置从 application.conf 移动到 reference.conf 并重新发布依赖项,然后重新打包我的项目时,打包版本有效。 那么,为什么我的设置没有从依赖项 jar 中的 application.conf 中提取,为什么我应该将库配置保留在 reference.conf 中,除了它在配置文件中的优先级最低这一事实?

-Dconfig.trace=loads帮我找到了答案。当我 sbt run 一个项目 dependsOn 其他项目时,它首先加载它自己的 application.conf,然后那些打包在它的直接依赖项的 jar 中(这是 'roadmaps' 设置的来源),然后 reference.confs 的依赖项。当我将 bashScriptExtraDefines += """addJava "-Dconfig.file=${app_home}/../conf/application.conf"""" 添加到 build.sbt 时,使用 stage 和 运行 将项目从 target/universal/stage/bin 中的脚本打包,它只加载指定的 application.conf 然后继续 reference.confs.