sbt- assembly:重命名具有合并冲突的类(阴影)

SRo*_*mes 3 sbt sbt-assembly

我如何告诉 sbt-Assembly 保留其现有的合并/重复数据删除规则,除非两个.class文件冲突、重命名(并发出警告以便我了解)?

这与 Maven 中使用的阴影策略相同吗?

Eug*_*ota 5

rename策略实际上只是重命名文件,不会更改内容,因此它不适用于 .class 文件。重命名的主要用例是许可证文件。

2015 年 9 月更新

sbt- assembly 0.14.0 添加了着色支持。

sbt-assemble 可以遮蔽项目或库依赖项中的类。在 Jar Jar Links 的支持下,字节码转换(通过 ASM)用于更改对重命名的类的引用。

assemblyShadeRules in assembly := Seq(
  ShadeRule.rename("org.apache.commons.io.**" -> "shadeio.@1").inAll
)
Run Code Online (Sandbox Code Playgroud)