我已经将以下jar添加到build.sbt文件中,如下所示:
"com.amazonaws" % "aws-java-sdk" % "1.11.492"在合并的过程中,我得到了以下错误:
[error] 1 error was encountered during merge
java.lang.RuntimeException: deduplicate: different file contents found in the following:
/home/jenkins-slave/.ivy2/cache/io.netty/netty-codec-http/jars/netty-codec-http-4.1.17.Final.jar:META-INF/io.netty.versions.properties
/home/jenkins-slave/.ivy2/cache/io.netty/netty-handler/jars/netty-handler-4.1.17.Final.jar:META-INF/io.netty.versions.properties
/home/jenkins-slave/.ivy2/cache/io.netty/netty-codec/jars/netty-codec-4.1.17.Final.jar:META-INF/io.netty.versions.properties
/home/jenkins-slave/.ivy2/cache/io.netty/netty-transport/jars/netty-transport-4.1.17.Final.jar:META-INF/io.netty.versions.properties
/home/jenkins-slave/.ivy2/cache/io.netty/netty-resolver/jars/netty-resolver-4.1.17.Final.jar:META-INF/io.netty.versions.properties
/home/jenkins-slave/.ivy2/cache/io.netty/netty-buffer/jars/netty-buffer-4.1.17.Final.jar:META-INF/io.netty.versions.properties
/home/jenkins-slave/.ivy2/cache/io.netty/netty-common/jars/netty-common-4.1.17.Final.jar:META-INF/io.netty.versions.properties
at sbtassembly.Assembly$.applyStrategies(Assembly.scala:143)
at sbtassembly.Assembly$.x$1$lzycompute$1(Assembly.scala:25)
at sbtassembly.Assembly$.x$1$1(Assembly.scala:23)
at sbtassembly.Assembly$.stratMapping$lzycompute$1(Assembly.scala:23)
at sbtassembly.Assembly$.stratMapping$1(Assembly.scala:23)...........我已经尝试了许多为此提供的变通方法,例如:
1)在build.sbtcase PathList("io", "netty", xs @ _*) => MergeStrategy.discard的assemblyMergeStrategy中添加了这一行(在.last和.first中试用)
2)在build.sbtcase "META-INF\\io.netty.versions.properties" =>MergeStrategy.first的assemblyMergeStrategy中添加了这一行(在.last和.discard中试用)
3)针对excludedDependencies中出错的网络jar,增加了SBT排除规则,如下:
excludeDependencies ++= Seq(
SbtExclusionRule("io.netty", "netty-codec-http"),
SbtExclusionRule("io.netty", "netty-codec"),
SbtExclusionRule("io.netty", "netty-handler"),
SbtExclusionRule("io.netty", "netty-transport"),
SbtExclusionRule("io.netty", "netty-resolver"),
SbtExclusionRule("io.netty", "netty-buffer"),
SbtExclusionRule("io.netty", "netty-common")
)这些解决方案的above.None的许多这样的变体正在工作。
plugins.sbt如下所示:
addSbtPlugin("io.spray" % "sbt-revolver" % "0.7.2")
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.5.0")
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.9")
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.1")
addSbtPlugin("com.scalapenos" % "sbt-prompt" % "0.2.1")
addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.1.10")
addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.8.0")
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0")敬请指教。
发布于 2019-02-11 23:48:09
你可以在下面尝试一下:
assemblyMergeStrategy in assembly := {
case x if x.contains("io.netty.versions.properties") => MergeStrategy.discard
case x =>
val oldStrategy = (assemblyMergeStrategy in assembly).value
oldStrategy(x)
}或者在最坏的情况下
case x if x.contains("versions.properties") => MergeStrategy.discard发布于 2019-12-02 17:17:07
如果检查文件的内容,您可以看到每个jar文件中都有不同的值,因此为了在程序集中正确地处理这些文件,您需要合并这些文件以保留其中的所有属性。使用case "META-INF/io.netty.versions.properties" => MergeStrategy.concat it作为策略。
发布于 2020-04-15 18:30:09
在寻找问题的解决方案后,我在sbt-assembly存储库中找到了this issue。
它包含以下解决方法,为我解决了这个问题:
当外部依赖项被早期版本的AWS库"com.amazonaws" % "aws-java-sdk" % "1.11.80"替换时,
它会起作用,因为该库不包含任何重复的
META-INF/io.netty.versions.properties。
我可以想象,对于那些需要最新版本的人来说,这是不起作用的,但这至少是一些东西。
https://stackoverflow.com/questions/54625572
复制相似问题