sbt总成是否应执行;maven shade插件"-比如重新安排课程?

sbt总成是否应执行;maven shade插件"-比如重新安排课程?,sbt,sbt-assembly,Sbt,Sbt Assembly,对名为rename的合并策略的描述听起来可能允许类似于的着色操作,该操作将重新定位类及其引用,以允许管理库的不兼容版本 sbt组件是否适合执行该功能 我使用了下面的合并策略尝试使用重命名作为重新定位机制,但是当它匹配所有文件时,它会直接传递它们(这与查看代码一致)。 于2015年9月更新: sbt组件0.14.0增加了支持 sbt程序集可以从项目或库依赖项中隐藏类。在Jar链接的支持下,字节码转换(通过ASM)用于更改对重命名类的引用 assemblyShadeRules在程序集中:=Seq(

对名为rename的合并策略的描述听起来可能允许类似于的着色操作,该操作将重新定位类及其引用,以允许管理库的不兼容版本

sbt组件是否适合执行该功能

我使用了下面的合并策略尝试使用重命名作为重新定位机制,但是当它匹配所有文件时,它会直接传递它们(这与查看代码一致)。


于2015年9月更新

sbt组件0.14.0增加了支持

sbt程序集可以从项目或库依赖项中隐藏类。在Jar链接的支持下,字节码转换(通过ASM)用于更改对重命名类的引用

assemblyShadeRules在程序集中:=Seq(
重命名(“org.apache.commons.io.*”->“shadeio@1”).inAll
)

我看到部分问题得到了回答,即sbt总成不着色。哪一部分留下了“合适吗”?这有用吗??我也处于同样的情况…@acidghost:不,根据我的链接,sbt汇编不会进行这种转换。您只需使用sbt排除,它们非常依赖于当前的一组依赖JAR。sbt现在具有阴影支持
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)
    }
  }
}