【问题标题】:How to get sbt-assembly merge right?如何正确获得 sbt-assembly 合并?
【发布时间】:2015-12-06 11:15:36
【问题描述】:

在我们的 Scala/Scalatra 项目中,我们为插件 sbt-assembly 设置了这个合并策略:

assemblyMergeStrategy in assembly := {
  case x =>
   val oldStrategy = (assemblyMergeStrategy in assembly).value
   oldStrategy(x)
}

[error] 合并期间遇到 11 个错误 java.lang.RuntimeException: deduplicate: 在以下发现不同的文件内容: ~/.ivy2/cache/org.scalatra/scalatra_2.11/jars/scalatra_2.11-2.3.1.jar:mime.types ~/.ivy2/cache/com.amazonaws/aws-java-sdk-s3/jars/aws-java-sdk-s3-1.10.1.jar:mime.types

重复数据删除:在以下位置发现不同的文件内容:
~/.ivy2/cache/commons-beanutils/commons-beanutils/jars/commons-beanutils-1.8.3.jar:org/apache/commons/collections/ArrayStack.class
~/.ivy2/cache/commons-collections/commons-collections/jars/commons-collections-3.2.1.jar:org/apache/commons/collections/ArrayStack.class
去重:在以下发现不同的文件内容:

对于不同的类名,同样的错误

这里正确的合并逻辑是什么?

版本:

斯卡拉:2.11.7
SBT:0.13.9
sbt 组装:0.13.0

【问题讨论】:

    标签: scala sbt scalatra


    【解决方案1】:

    我不认为,这是“合并策略”的问题,而是您正在使用的更多库及其依赖项。

    谁“拉动”了这些依赖关系?您具体使用哪些库?

    一种限制方法是将excludeAll(和类似的)与依赖声明一起使用。 (见library management in SBT),例如

    excludeAll(
      ExclusionRule("commons-beanutils", "commons-beanutils-core"),
      ExclusionRule("commons-collections", "commons-collections"),
      ExclusionRule("commons-logging", "commons-logging"),
      ExclusionRule("org.slf4j", "slf4j-log4j12"),
      ExclusionRule("org.hamcrest", "hamcrest-core"),
      ExclusionRule("junit", "junit"),
      ExclusionRule("org.jboss.netty", "netty"),
      ExclusionRule("com.esotericsoftware.minlog", "minlog")
      )
    

    【讨论】:

      【解决方案2】:

      我原来的问题是这样解决的:

      assemblyMergeStrategy in assembly := {
        case PathList("org", "apache", "commons", "collections", xs @ _*) =>
            MergeStrategy.last
        case PathList("mime.types") =>
            MergeStrategy.last
        case x =>
            val oldStrategy = (assemblyMergeStrategy in assembly).value
            oldStrategy(x)
      }
      

      【讨论】:

        猜你喜欢
        • 2015-12-27
        • 2020-05-18
        • 1970-01-01
        • 2018-12-11
        • 2014-11-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-25
        • 1970-01-01
        相关资源
        最近更新 更多