enter code here有没有办法关闭SBT的assembly插件中的重叠?
我一直在用老式的方式清除sbt assembly构建,使用sbt dependency-graph删除具有相同文件不同版本的jar文件。
但是,在我的例子中,这不是一个大问题:我只想完全避免重复,如果我有问题,稍后在运行时清理依赖冲突。这通常是像maven这样的工具的工作原理,我希望使用SBT来构建类似于这些工具构建的胖jars的jars。
发布于 2015-01-25 17:41:16
我想出了一个合理的合并策略,看起来像这样,取自client/blob/master/build.sbt。
mergeStrategy in assembly := {
case n if n.startsWith("META-INF/eclipse.inf") => MergeStrategy.discard
case n if n.startsWith("META-INF/ECLIPSEF.RSA") => MergeStrategy.discard
case n if n.startsWith("META-INF/ECLIPSE_.RSA") => MergeStrategy.discard
case n if n.startsWith("META-INF/ECLIPSEF.SF") => MergeStrategy.discard
case n if n.startsWith("META-INF/ECLIPSE_.SF") => MergeStrategy.discard
case n if n.startsWith("META-INF/MANIFEST.MF") => MergeStrategy.discard
case n if n.startsWith("META-INF/NOTICE.txt") => MergeStrategy.discard
case n if n.startsWith("META-INF/NOTICE") => MergeStrategy.discard
case n if n.startsWith("META-INF/LICENSE.txt") =>
MergeStrategy.discard
case n if n.startsWith("META-INF/LICENSE") => MergeStrategy.discard
case n if n.startsWith("rootdoc.txt") => MergeStrategy.discard
case n if n.startsWith("readme.html") => MergeStrategy.discard
case n if n.startsWith("readme.txt") => MergeStrategy.discard
case n if n.startsWith("library.properties") => MergeStrategy.discard
case n if n.startsWith("license.html") => MergeStrategy.discard
case n if n.startsWith("about.html") => MergeStrategy.discard
case _ => MergeStrategy.deduplicate
}对最初问题的回答很简单,在使用sbt程序集时,您必须定义一个MergeStrategy,并且有许多模板(如这个)可以借用并粘贴到build.sbt文件中。
https://stackoverflow.com/questions/28139176
复制相似问题