【发布时间】:2014-08-27 03:04:29
【问题描述】:
我如何告诉 sbt-assembly 保留其现有的合并/去重规则,除非两个 .class 文件冲突、重命名(并发出警告以便我知道)?
这是否与 Maven 中使用的阴影策略相同?
【问题讨论】:
标签: sbt sbt-assembly
我如何告诉 sbt-assembly 保留其现有的合并/去重规则,除非两个 .class 文件冲突、重命名(并发出警告以便我知道)?
这是否与 Maven 中使用的阴影策略相同?
【问题讨论】:
标签: sbt sbt-assembly
rename 策略实际上只是重命名文件而不更改内容,因此它不适用于 .class 文件。重命名的主要用例是 LICENSE 文件。
2015 年 9 月更新:
sbt-assembly 0.14.0 添加了shading 支持。
sbt-assembly 可以隐藏项目或库依赖项中的类。在 Jar Jar Links 的支持下,字节码转换(通过 ASM)用于更改对重命名类的引用。
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("org.apache.commons.io.**" -> "shadeio.@1").inAll
)
【讨论】: