由于找到不同的文件内容,sbt 程序集失败
sbt assembly fails due to different file contents found
我正在尝试在 GitLab 中构建一个项目。
在 gitlab-ci.yml 中,我 运行 sbt assembly 遇到了恼人的异常。
[error] (soda/*:assembly) deduplicate: different file contents found in the following:
[error] /root/.ivy2/cache/io.netty/netty-buffer/jars/netty-buffer-4.0.42.Final.jar:META-INF/io.netty.versions.properties
[error] /root/.ivy2/cache/io.netty/netty-common/jars/netty-common-4.0.42.Final.jar:META-INF/io.netty.versions.properties
[error] /root/.ivy2/cache/io.netty/netty-codec-http/jars/netty-codec-http-4.0.42.Final.jar:META-INF/io.netty.versions.properties
[error] /root/.ivy2/cache/io.netty/netty-codec/jars/netty-codec-4.0.42.Final.jar:META-INF/io.netty.versions.properties
[error] /root/.ivy2/cache/io.netty/netty-transport/jars/netty-transport-4.0.42.Final.jar:META-INF/io.netty.versions.properties
[error] /root/.ivy2/cache/io.netty/netty-handler/jars/netty-handler-4.0.42.Final.jar:META-INF/io.netty.versions.properties
[error] /root/.ivy2/cache/io.netty/netty-transport-native-epoll/jars/netty-transport-native-epoll-4.0.42.Final-linux-x86_64.jar:META-INF/io.netty.versions.properties
我尝试按照 sbt-assembly: deduplication found error 中的说明进行操作,看起来 MergeStrategy 已经到位,但异常仍然存在:
[info] Merging files...
[warn] Merging 'NOTICE' with strategy 'rename'
[warn] Merging 'README' with strategy 'rename'
[warn] Merging 'META-INF/NOTICE.txt' with strategy 'rename'
[warn] Merging 'license/NOTICE' with strategy 'rename'
[warn] Merging 'META-INF/NOTICE' with strategy 'rename'
[warn] Merging 'org/xerial/snappy/native/README' with strategy 'rename'
[warn] Merging 'license' with strategy 'rename'
[warn] Merging 'license/LICENSE' with strategy 'rename'
[warn] Merging 'META-INF/license' with strategy 'rename'
[warn] Merging 'META-INF/LICENSE.txt' with strategy 'rename'
[warn] Merging 'LICENSE.txt' with strategy 'rename'
[warn] Merging 'META-INF/LICENSE' with strategy 'rename'
[warn] Merging 'LICENSE' with strategy 'rename'
[warn] Merging 'META-INF/DEPENDENCIES' with strategy 'discard'
[warn] Merging 'META-INF/INDEX.LIST' with strategy 'discard'
[warn] Merging 'META-INF/MANIFEST.MF' with strategy 'discard'
我也尝试过更改sbt版本,但问题依旧。
任何关于如何解决这个问题的帮助都会很棒。
找遍了也没找到解决办法。
检查以下解决方案是否适合您,它对我不起作用:
https://github.com/sbt/sbt-assembly/issues/297
我曾经遇到过一些 Java 包和 log4j 的类似问题,我所做的是创建一个自定义合并策略,我只选择了第一个出现的地方。也许您可以调整该代码以适合您:
assemblyMergeStrategy in assembly := {
// case PathList("javax", "servlet", xs @ _*) => MergeStrategy.first
case PathList("org", "apache", "commons", xs @ _*) =>
// println(s"$xs")
MergeStrategy.first
case PathList(ps @ _*) if ps.last endsWith ".html" => MergeStrategy.first
case "application.conf" => MergeStrategy.concat
case "log4j.properties" => MergeStrategy.first
case "unwanted.txt" => MergeStrategy.discard
case x =>
val oldStrategy = (assemblyMergeStrategy in assembly).value
oldStrategy(x)
}
也许如果你改变
case PathList("org", "apache", "commons", xs @ _*) =>
// println(s"$xs")
MergeStrategy.first
你有问题的包(netty
)你设法解决了它:
case PathList("io", "netty", xs @ _*) =>
// println(s"$xs")
MergeStrategy.first
最终我找到了解决这个问题的方法。
由于它是一个游戏项目,我可以使用激活器将其包装起来并创建一个包。
我使用以下代码来创建包:
wget https://downloads.typesafe.com/typesafe-activator/1.3.7/typesafe-activator-1.3.7.zip && 解压缩 typesafe-activator-1.3.7.zip 1> /dev/null
activator-dist-1.3.7/activator -Dsbt.log.noformat=true -java-home /usr/lib/jvm/java-1.8-openjdk package clean compile test dist
我正在尝试在 GitLab 中构建一个项目。 在 gitlab-ci.yml 中,我 运行 sbt assembly 遇到了恼人的异常。
[error] (soda/*:assembly) deduplicate: different file contents found in the following:
[error] /root/.ivy2/cache/io.netty/netty-buffer/jars/netty-buffer-4.0.42.Final.jar:META-INF/io.netty.versions.properties
[error] /root/.ivy2/cache/io.netty/netty-common/jars/netty-common-4.0.42.Final.jar:META-INF/io.netty.versions.properties
[error] /root/.ivy2/cache/io.netty/netty-codec-http/jars/netty-codec-http-4.0.42.Final.jar:META-INF/io.netty.versions.properties
[error] /root/.ivy2/cache/io.netty/netty-codec/jars/netty-codec-4.0.42.Final.jar:META-INF/io.netty.versions.properties
[error] /root/.ivy2/cache/io.netty/netty-transport/jars/netty-transport-4.0.42.Final.jar:META-INF/io.netty.versions.properties
[error] /root/.ivy2/cache/io.netty/netty-handler/jars/netty-handler-4.0.42.Final.jar:META-INF/io.netty.versions.properties
[error] /root/.ivy2/cache/io.netty/netty-transport-native-epoll/jars/netty-transport-native-epoll-4.0.42.Final-linux-x86_64.jar:META-INF/io.netty.versions.properties
我尝试按照 sbt-assembly: deduplication found error 中的说明进行操作,看起来 MergeStrategy 已经到位,但异常仍然存在:
[info] Merging files...
[warn] Merging 'NOTICE' with strategy 'rename'
[warn] Merging 'README' with strategy 'rename'
[warn] Merging 'META-INF/NOTICE.txt' with strategy 'rename'
[warn] Merging 'license/NOTICE' with strategy 'rename'
[warn] Merging 'META-INF/NOTICE' with strategy 'rename'
[warn] Merging 'org/xerial/snappy/native/README' with strategy 'rename'
[warn] Merging 'license' with strategy 'rename'
[warn] Merging 'license/LICENSE' with strategy 'rename'
[warn] Merging 'META-INF/license' with strategy 'rename'
[warn] Merging 'META-INF/LICENSE.txt' with strategy 'rename'
[warn] Merging 'LICENSE.txt' with strategy 'rename'
[warn] Merging 'META-INF/LICENSE' with strategy 'rename'
[warn] Merging 'LICENSE' with strategy 'rename'
[warn] Merging 'META-INF/DEPENDENCIES' with strategy 'discard'
[warn] Merging 'META-INF/INDEX.LIST' with strategy 'discard'
[warn] Merging 'META-INF/MANIFEST.MF' with strategy 'discard'
我也尝试过更改sbt版本,但问题依旧。
任何关于如何解决这个问题的帮助都会很棒。
找遍了也没找到解决办法。 检查以下解决方案是否适合您,它对我不起作用: https://github.com/sbt/sbt-assembly/issues/297
我曾经遇到过一些 Java 包和 log4j 的类似问题,我所做的是创建一个自定义合并策略,我只选择了第一个出现的地方。也许您可以调整该代码以适合您:
assemblyMergeStrategy in assembly := {
// case PathList("javax", "servlet", xs @ _*) => MergeStrategy.first
case PathList("org", "apache", "commons", xs @ _*) =>
// println(s"$xs")
MergeStrategy.first
case PathList(ps @ _*) if ps.last endsWith ".html" => MergeStrategy.first
case "application.conf" => MergeStrategy.concat
case "log4j.properties" => MergeStrategy.first
case "unwanted.txt" => MergeStrategy.discard
case x =>
val oldStrategy = (assemblyMergeStrategy in assembly).value
oldStrategy(x)
}
也许如果你改变
case PathList("org", "apache", "commons", xs @ _*) =>
// println(s"$xs")
MergeStrategy.first
你有问题的包(netty
)你设法解决了它:
case PathList("io", "netty", xs @ _*) =>
// println(s"$xs")
MergeStrategy.first
最终我找到了解决这个问题的方法。 由于它是一个游戏项目,我可以使用激活器将其包装起来并创建一个包。 我使用以下代码来创建包: wget https://downloads.typesafe.com/typesafe-activator/1.3.7/typesafe-activator-1.3.7.zip && 解压缩 typesafe-activator-1.3.7.zip 1> /dev/null activator-dist-1.3.7/activator -Dsbt.log.noformat=true -java-home /usr/lib/jvm/java-1.8-openjdk package clean compile test dist