scala - 玩json库和sbt assembly合并报错

即使是一个简单的 Hello 程序,如果我在 build.sbt 文件中添加 play-json 作为库依赖项,当我在 sbt 中执行“assembly”命令时,我总是会遇到合并错误(sbt-assembly 插件).

[error] stack trace is suppressed; run last assembly for the full output
[error] (assembly) deduplicate: different file contents found in the following:
[error] /home/heitor/.cache/coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.10.1/jackson-annotations-2.10.1.jar:module-info.class
[error] /home/heitor/.cache/coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.10.1/jackson-core-2.10.1.jar:module-info.class
[error] /home/heitor/.cache/coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.10.1/jackson-databind-2.10.1.jar:module-info.class
[error] /home/heitor/.cache/coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.10.1/jackson-datatype-jdk8-2.10.1.jar:module-info.class
[error] /home/heitor/.cache/coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.10.1/jackson-datatype-jsr310-2.10.1.jar:module-info.class

MergeApp.scala

object MergeApp extends App {
  println("Hello")
}

构建.sbt

name := "MergeBug"

version := "0.1"

scalaVersion := "2.13.1"

val playJsonVersion = "2.8.1"

libraryDependencies ++= Seq("com.typesafe.play" %% "play-json" % playJsonVersion)

项目/build.properties

sbt.version = 1.3.8

项目/plugins.sbt

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.10")

最佳答案

您需要定义自定义合并策略。参见 https://github.com/sbt/sbt-assembly#merge-strategy

由于 module-info.class 文件仅对 Java 9+ 模块有用,您可以安全地丢弃它们:

assemblyMergeStrategy in assembly := {
  case "module-info.class" => MergeStrategy.discard
  case x =>
    val oldStrategy = (assemblyMergeStrategy in assembly).value
    oldStrategy(x)
}

https://stackoverflow.com/questions/60114651/

相关文章:

list - 得到 "Fatal error: Index out of range": show

css - 如何为 Material UI 按钮 'startIcon' 分配自定义图标?

bash - 如何在 bash 中循环遍历 jq 唯一数组?

typescript - typescript 中的 bool 列表是否有 "all"或 "any"

google-cloud-platform - 共享 VPC 和 VPC 对等组合

mongodb - 使用 mongodb 中的条件将字段添加到集合

python - 如何在 XGBoost 库的 plot_tree 函数中包含特征名称?

node.js - Firebase 函数错误 : The default Firebase app

powershell - Terraform azurerm_virtual_machine_ext

r - 确定一周中的某一天是否是 R 中每月的第 2/3 等星期一/星期二/等