使用 shadowJar 和 Scala 依赖项时如何修复丢失的 conf 文件?

Posted

技术标签:

【中文标题】使用 shadowJar 和 Scala 依赖项时如何修复丢失的 conf 文件?【英文标题】:How can I fix missing conf files when using shadowJar and Scala dependencies? 【发布时间】:2016-03-23 10:11:05 【问题描述】:

为像我这样有未来问题的用户写这篇文章。基于 Typesafe 配置构建的库通常使用自己的 reference.conf 文件并引用某些配置键。使用 Gradle shadowJAR 插件构建胖 JAR 时,不包含这些文件。

当胖 JAR 尝试运行时,Spray 和 Akka 等依赖项会引发错误。错误看起来像:

Exception in thread "main" com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'spray'
Exception in thread "main" com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'akka'

如何解决这个问题?检查下面的答案。

【问题讨论】:

【参考方案1】:

最终的修复是将以下内容添加到 build.gradle 文件中:

shadowJar 
  transform(com.github.jengelman.gradle.plugins.shadow.transformers.AppendingTransformer) 
    resource = 'reference.conf'
  

在这里找到解决方案:http://www.sureshpw.com/2015/10/building-akka-bundle-with-all.html

【讨论】:

【参考方案2】:

简单地说:

  shadowJar 
    append('reference.conf')
  

见Controlling JAR Content Merging

【讨论】:

以上是关于使用 shadowJar 和 Scala 依赖项时如何修复丢失的 conf 文件?的主要内容,如果未能解决你的问题,请参考以下文章

使用 SBT 和 Scala IDE 添加和删除依赖项

安装 scala 测试库依赖项错误

Gradle 中的 uberJar、fatJar 和 shadowJar 有啥区别?

如何将清单部分与 Gradle 和 shadowJar 合并

Gradle ShadowJar 输出包含混淆和非混淆类

无法为 gradle 任务设置类型 shadowJar