Plugins sbt程序集和依赖项中的多个类定义

Plugins sbt程序集和依赖项中的多个类定义,plugins,sbt,sbt-assembly,Plugins,Sbt,Sbt Assembly,作为sbt和sbt汇编插件的新手,我对如何处理涉及我试图打包的依赖项中不同类定义的构建感到困惑 [error] (*:assembly) deduplicate: different file contents found in the following: [error] /Users/dm/.ivy2/cache/org.apache.tika/tika-app/jars/tika-app-1.3.jar:javax/xml/XMLConstants.class [error] /Users

作为sbt和sbt汇编插件的新手,我对如何处理涉及我试图打包的依赖项中不同类定义的构建感到困惑

[error] (*:assembly) deduplicate: different file contents found in the following:
[error] /Users/dm/.ivy2/cache/org.apache.tika/tika-app/jars/tika-app-1.3.jar:javax/xml/XMLConstants.class
[error] /Users/dm/.ivy2/cache/stax/stax-api/jars/stax-api-1.0.1.jar:javax/xml/XMLConstants.class
[error] /Users/dm/.ivy2/cache/xml-apis/xml-apis/jars/xml-apis-1.3.03.jar:javax/xml/XMLConstants.class
我补充说:

mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
  {
    case PathList("javax", "xml", xs @ _*) => MergeStrategy.first
  }
}
程序集mergeStrategy.first中的
mergeStrategy
}
}
到我的build.sbt文件,但我仍然得到上面的错误(不管它是否在构建文件中)。任何指导都将不胜感激

谢谢


不要

我想你很接近了。确保加载
assemblySettings
后添加任何重新布线,并将未处理的任何图案传递到默认策略:

assemblySettings

mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
  {
    case PathList("javax", "xml", xs @ _*) => MergeStrategy.first
    case _ => old
  }
}
assemblySettings
在assembly mergeStrategy.first中使用mergeStrategy
大小写=>旧
}
}

仅是对当前sbt(0.13.8)和sbt组件(0.13.0)版本的更新,Eugene的代码变成:

assemblyMergeStrategy in assembly := {
  case PathList("javax", "xml", xs @ _*) => MergeStrategy.first
  case x =>
    val oldStrategy = (assemblyMergeStrategy in assembly).value
    oldStrategy(x)
}