7

我正在尝试使用 SBT 程序集插件创建一个可执行 jar。

我最终得到以下错误:

[error] (app/*:assembly) deduplicate: different file contents found in the following:
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty.orbit/javax.servlet/orbits/javax.servlet-3.0.0.v201112011016.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-continuation/jars/jetty-continuation-8.1.8.v20121106.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-http/jars/jetty-http-8.1.8.v20121106.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-io/jars/jetty-io-8.1.8.v20121106.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-security/jars/jetty-security-8.1.8.v20121106.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-server/jars/jetty-server-8.1.8.v20121106.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-servlet/jars/jetty-servlet-8.1.8.v20121106.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-util/jars/jetty-util-8.1.8.v20121106.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-webapp/jars/jetty-webapp-8.1.8.v20121106.jar:about.html
[error] /Users/rajeevprasanna/.ivy2/cache/org.eclipse.jetty/jetty-xml/jars/jetty-xml-8.1.8.v20121106.jar:about.html
[error] Total time: 2562 s, completed Dec 5, 2013 12:03:25 PM

在阅读了组装插件的 wiki 之后,我在 build.scala 文件中添加了合并策略。似乎它不起作用。我不确定它是否正确修复。有人可以建议我正确的策略。

下面是我在 build.scala 文件中的代码:

mergeStrategy in assembly <<= (mergeStrategy in assembly) {
      (old) => {
        case "about.html" => MergeStrategy.discard
        case "logback.xml" => MergeStrategy.first //case PathList("logback.xml") => MergeStrategy.discard
        case x => old(x)
      }
    }

我已经按照这个文档对我的应用程序的插件集成进行了编码:Scalatra servlet 的独立部署

我尝试了不同的策略,例如 MergeStrategy.rename 和 MergeStrategy.deduplicate。但是没有任何效果..寻求帮助...

4

1 回答 1

1

你的MergeStrategy样子是对的。唯一未处理的冲突是码头罐子中的“about.html”,所以case "about.html" => MergeStrategy.discard应该这样做。

如果您仍然收到错误,我怀疑mergeStrategy in assembly 设置的重新接线要么没有进入,要么按错误的顺序进行。唯一确定的方法是查看您的 Build.scala。@Stefan Ollinger 对您的链接问题的回答例如将项目设置如下:

lazy val project = Project("myProj", file(".")).
  settings(mySettings: _*).
  settings(myAssemblySettings:_*)

如果可能的话,你能把你的 Build.scala 发布在 gist 上

于 2013-12-07T01:48:04.507 回答