构建 Fat JAR 时类型安全应用程序和参考配置文件不合并
Typesafe Application and Reference Config Files not Merging When Building Fat JAR
我有一个 sbt 应用程序,当 运行 通过 intellij 或通过终端使用 sbt 运行 时,它将 运行。但是,当我创建一个胖 jar 以便能够将其部署到服务器时,我遇到了各种 com.typesafe.config.ConfigException$UnresolvedSubstitution
错误。它们不是我的应用程序 conf 中的用户定义的,它们都是在多个 akka conf 文件中定义的。
我尝试使用以下方法合并它们:
val config = ConfigFactory.load(getClass().getClassLoader())
private lazy val userConfig = ConfigFactory.parseResources("application.conf")
val config = userConfig.resolve()
mergeStrategy in assembly := {
case PathList("reference.conf") => MergeStrategy.concat
case "reference.conf" => MergeStrategy.concat
case "application.conf" => MergeStrategy.concat
case x if x.contains("akka\http\") => MergeStrategy.concat
case x if x.contains("akka/http/") => MergeStrategy.concat
我也尝试过硬编码它在我的 application.conf 中抱怨的任何值,但它只是抱怨另一个它无法解析的变量。
事实证明,如果我使用 sbt assembly
而不是 IntelliJ 方式构建 fat jar,那么它就可以工作了。
我有一个 sbt 应用程序,当 运行 通过 intellij 或通过终端使用 sbt 运行 时,它将 运行。但是,当我创建一个胖 jar 以便能够将其部署到服务器时,我遇到了各种 com.typesafe.config.ConfigException$UnresolvedSubstitution
错误。它们不是我的应用程序 conf 中的用户定义的,它们都是在多个 akka conf 文件中定义的。
我尝试使用以下方法合并它们:
val config = ConfigFactory.load(getClass().getClassLoader())
private lazy val userConfig = ConfigFactory.parseResources("application.conf")
val config = userConfig.resolve()
mergeStrategy in assembly := {
case PathList("reference.conf") => MergeStrategy.concat
case "reference.conf" => MergeStrategy.concat
case "application.conf" => MergeStrategy.concat
case x if x.contains("akka\http\") => MergeStrategy.concat
case x if x.contains("akka/http/") => MergeStrategy.concat
我也尝试过硬编码它在我的 application.conf 中抱怨的任何值,但它只是抱怨另一个它无法解析的变量。
事实证明,如果我使用 sbt assembly
而不是 IntelliJ 方式构建 fat jar,那么它就可以工作了。