SBT 准备 WAR 文件,重复条目:META-INF/MANIFEST.MF
SBT prepare WAR file, duplicate entry: META-INF/MANIFEST.MF
我正在尝试将我的应用程序的一个模块打包到 war
中。
我选择了 xsbt-web-plugin 来帮助我。
我已经准备好了sbt,我猜对了:
lazy val `my-project` = (project in file("my-project"))
...
.enablePlugins(TomcatPlugin)
但在 sbt package
期间我收到此错误:
[info] Packaging /home/siatkowskim/Documents/....target/scala-2.11/my-project_2.11-1.2-SNAPSHOT.war ...
[error] java.util.zip.ZipException: duplicate entry: META-INF/MANIFEST.MF
我很熟悉 sbt-assembly
但我看不到这里有重复数据删除的方法。
我什至如何调试,它是从哪里复制的?或者如何解决这个重复?
原来我的类路径中有 MANIFEST.MF
文件。
我不知道它是做什么用的,但删除它解决了问题。
我有同样的问题,但我的类路径中没有明显的 MANIFEST.MF
文件。我只能假设它来自包含的大量 .jar
文件。
以下解决了问题:
assemblyMergeStrategy in assembly := {
case PathList("META-INF", xs @ _*) =>
(xs map {_.toLowerCase}) match {
case ("manifest.mf" :: Nil) | ("index.list" :: Nil) | ("dependencies" :: Nil) => MergeStrategy.discard
case _ => MergeStrategy.last
}
}
请参阅 了解双冒号符号的含义。
我正在尝试将我的应用程序的一个模块打包到 war
中。
我选择了 xsbt-web-plugin 来帮助我。
我已经准备好了sbt,我猜对了:
lazy val `my-project` = (project in file("my-project"))
...
.enablePlugins(TomcatPlugin)
但在 sbt package
期间我收到此错误:
[info] Packaging /home/siatkowskim/Documents/....target/scala-2.11/my-project_2.11-1.2-SNAPSHOT.war ...
[error] java.util.zip.ZipException: duplicate entry: META-INF/MANIFEST.MF
我很熟悉 sbt-assembly
但我看不到这里有重复数据删除的方法。
我什至如何调试,它是从哪里复制的?或者如何解决这个重复?
原来我的类路径中有 MANIFEST.MF
文件。
我不知道它是做什么用的,但删除它解决了问题。
我有同样的问题,但我的类路径中没有明显的 MANIFEST.MF
文件。我只能假设它来自包含的大量 .jar
文件。
以下解决了问题:
assemblyMergeStrategy in assembly := {
case PathList("META-INF", xs @ _*) =>
(xs map {_.toLowerCase}) match {
case ("manifest.mf" :: Nil) | ("index.list" :: Nil) | ("dependencies" :: Nil) => MergeStrategy.discard
case _ => MergeStrategy.last
}
}
请参阅