称为重命名的sbt-assembly合并策略的描述听起来像它可能允许类似于maven-shade-plugin的着色操作,它将重定位类及其引用以允许管理不兼容的库版本.
sbt-assembly是否适合执行该功能?
我使用以下合并策略尝试使用重命名作为重定位机制,但是当它匹配所有文件时,它直接传递它们(这与查看代码一致).
assemblyMergeStrategy in assembly := { s =>
s match {
case PathList("com", "clearspring", "analytics", _*) => {
println("match_cs: " + s)
MergeStrategy.rename
}
case x => {
println("x: " + x)
val oldStrategy = (assemblyMergeStrategy in assembly).value
oldStrategy(x)
}
}
}
Run Code Online (Sandbox Code Playgroud)
2015年9月更新:
sbt-assembly 0.14.0增加了阴影支持.
sbt-assembly可以为您的项目或库依赖项中的类着色.由Jar Jar Links支持,字节码转换(通过ASM)用于更改对重命名类的引用.
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("org.apache.commons.io.**" -> "shadeio.@1").inAll
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1369 次 |
| 最近记录: |