Сборка sbt akka-stream_2.12:2.4.19 и akka-actor_2.12:2.4.19 выселены

Я хочу сделать толстую банку из моего проекта с помощью сборки sbt. Вот мой build.sbt:

name := "projName"

version := "1.0"

scalaVersion := "2.12.1"


libraryDependencies ++= Seq(
  "com.typesafe.akka" %% "akka-stream" % "2.5.3",
  "com.typesafe.akka" %% "akka-actor" % "2.5.3",
  "com.typesafe.akka" %% "akka-http" % "10.0.8",
  "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.8.6",
  "com.typesafe" % "config" % "1.3.1",
  "org.apache.kafka" % "kafka-clients" % "0.10.2.1",
  "org.knowm.xchange" % "xchange-core" % "4.2.0",
  "org.knowm.xchange" % "xchange-btce" % "4.2.0"
)

assemblyMergeStrategy in assembly := {
  case PathList("META-INF", xs @ _*) => MergeStrategy.discard
  case x => MergeStrategy.first
}

После запуска

sbt assembly

я получил такое предупреждение:

[warn] There may be incompatibilities among your library dependencies.
[warn] Here are some of the libraries that were evicted:
[warn]  * com.typesafe.akka:akka-stream_2.12:2.4.19 -> 2.5.3
[warn]  * com.typesafe.akka:akka-actor_2.12:2.4.19 -> 2.5.3
[warn] Run 'evicted' to see detailed eviction warnings

Тогда я бегу sbt evicted для более подробной информации и вот что я получил:

[warn] There may be incompatibilities among your library dependencies.
[warn] Here are some of the libraries that were evicted:
[warn]  * com.typesafe.akka:akka-stream_2.12:2.4.19 -> 2.5.3 (caller: com.typesafe.akka:akka-http-core_2.12:10.0.8, default:btceclient_2.12:1.0)
[warn]  * com.typesafe.akka:akka-actor_2.12:2.4.19 -> 2.5.3 (caller: com.typesafe.akka:akka-stream_2.12:2.5.3, com.typesafe.akka:akka-parsing_2.12:10.0.8, default:btceclient_2.12:1.0)
[info] Here are other libraries that were evicted:
[info]  * com.fasterxml.jackson.core:jackson-databind:2.8.2 -> 2.8.6 (caller: com.fasterxml.jackson.module:jackson-module-paranamer:2.8.6, com.github.mmazi:rescu:1.9.0, com.fasterxml.jackson.module:jackson-module-scala_2.12:2.8.6)
[info]  * com.fasterxml.jackson.core:jackson-annotations:2.8.0 -> 2.8.6 (caller: com.fasterxml.jackson.core:jackson-databind:2.8.6, com.fasterxml.jackson.module:jackson-module-scala_2.12:2.8.6)
[info]  * com.typesafe:config:1.2.0 -> 1.3.1 (caller: com.typesafe:ssl-config-core_2.12:0.2.1, default:btceclient_2.12:1.0, com.typesafe.akka:akka-actor_2.12:2.5.3)

Я знаю, что такое предупреждения о выселении, но я не знаю, как это решить в нынешней ситуации. Есть идеи?

3 ответа

Решение

Вы можете спокойно проигнорировать это сообщение, потому что версии 2.4 и 2.5 совместимы в двоичном формате, поэтому можно обновить версию с 2.4 до 2.5.

Модифицированная стратегия слияния:

assemblyMergeStrategy in assembly := {
      case PathList("META-INF", xs @ _*) => MergeStrategy.discard
      case PathList("reference.conf") => MergeStrategy.concat
      case x => MergeStrategy.first
    }

Здесь вы можете увидеть новую строку: case PathList("reference.conf") => MergeStrategy.concat,
Я думаю, что нет необходимости объяснять, что здесь происходит.

Сообщение о выселении ясно. Быстрый поиск в Maven для akka-http_2.12 : 10.0.8 покажет вам, что этот артефакт зависит от akka-stream_2.12:2.4.19, Одно решение, вы могли бы понизить akka-actor а также akka-stream до 2.4.19 в настройке зависимостей.

Другие вопросы по тегам