2

我正在尝试将我的应用程序的一个模块打包到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但我在这里看不到重复数据删除的方法。我什至如何调试,它是从哪里复制的?或者如何解决这种重复?

4

2 回答 2

1

原来MANIFEST.MF我的类路径中有文件。我不知道它的用途,但删除它解决了问题。

于 2018-05-09T12:40:45.603 回答
1

我有同样的问题,但我的类路径中没有明显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
  }
}

请参阅此处以了解双冒号表示法的含义。

于 2019-04-25T12:08:08.077 回答