对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)
}
}
}
最佳答案
于2015年9月更新:
sbt-assembly 0.14.0添加了对shading的支持。
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("org.apache.commons.io.**" -> "shadeio.@1").inAll
)
关于sbt - sbt-assembly是否应该执行类似于 "maven-shade-plugin"的类重定位?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28846389/