【问题标题】:DeDuplication error with SBT assembly pluginSBT 程序集插件的重复数据删除错误
【发布时间】:2013-12-21 23:55:51
【问题描述】:

我正在尝试使用 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)
      }
    }

我已根据此文档编写了与我的应用程序集成的插件:Standalone deployment of Scalatra servlet

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

【问题讨论】:

    标签: scala sbt sbt-assembly


    【解决方案1】:

    您的MergeStrategy 看起来正确。唯一未处理的冲突是码头罐子中的“about.html”,所以case "about.html" =&gt; MergeStrategy.discard 应该这样做。

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

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

    如果可能的话,您能否在gist 上发布您的 Build.scala?

    【讨论】:

    • 下面是实际的非工作代码:gist.github.com/rajeevprasanna/7868988 我按照您在此链接的说明编写了上述代码:github.com/eed3si9n/sbt-assembly-full-config-sample/blob/master/… 现在我删除了与创建项目相关的底部三个链接。然后它起作用了。工作代码:gist.github.com/rajeevprasanna/7868999
    • 在我的示例中,buildSettings 仅包含所有项目通用的基本设置,例如versionorganization,而assemblySettings 加载到appSettings。您的第一个要点将各种设置加载到buildSettings,包括assemblySettings,并在appSettings 再次加载。因此,您可能已经阅读了我的代码,但您没有遵循我的代码的要点。如果您只需要根级别,最好使用build.sbt
    • 感谢您的解释。我刚开始学习 SBT。我对SBT知之甚少。所以进入了这个问题。
    猜你喜欢
    • 2015-01-27
    • 2014-11-02
    • 2017-06-16
    • 2015-03-09
    • 2019-06-03
    • 2014-11-13
    • 2015-05-28
    • 2014-09-28
    • 2016-07-10
    相关资源
    最近更新 更多