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/

10-16 02:56