How to create sbt ShadeRule with cats 0.9.0 and 2.8.0?

问题描述 投票:0回答:0

我在 Scala 2.12 (sbt 1.5.5) 上有 Scala Play 2.6 应用程序

"com.eed3si9n" % "sbt-assembly" % "1.2.0"
。该应用程序使用 cat 2.8.0,我添加了另一个带有 0.9.0 的库。这导致了如下所示的二进制不兼容问题。

[error] (app / update) found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
[error] 
[error]         * org.typelevel:cats-core_2.12:2.8.0 (early-semver) is selected over {0.9.0, 2.2.0}
[error]             +- org.scala-sbt.temp:temp-resolve-4579dec96ae08171122c66ca210e0186a9f70b99:1.0 (depends on 2.8.0)
[error]             +- org.typelevel:cats-free_2.12:2.2.0 ()              (depends on 2.2.0)
[error]             +- org.typelevel:cats-laws_2.12:0.9.0 ()              (depends on 0.9.0)
[error]             +- org.typelevel:cats_2.12:0.9.0 ()                   (depends on 0.9.0)
[error]             +- org.typelevel:cats-jvm_2.12:0.9.0 ()               (depends on 0.9.0)
[error]             +- org.typelevel:cats-free_2.12:0.9.0 ()              (depends on 0.9.0)
[error] 
[error]         * org.typelevel:cats-kernel_2.12:2.8.0 (early-semver) is selected over {2.2.0, 0.9.0}
[error]             +- org.typelevel:cats-core_2.12:2.8.0 ()              (depends on 2.8.0)
[error]             +- org.typelevel:cats-laws_2.12:0.9.0 ()              (depends on 0.9.0)
[error]             +- org.typelevel:cats-kernel-laws_2.12:0.9.0 ()       (depends on 0.9.0)
[error]             +- org.typelevel:cats-core_2.12:0.9.0 ()              (depends on 0.9.0)
[error]             +- org.typelevel:cats_2.12:0.9.0 ()                   (depends on 0.9.0)
[error]             +- org.typelevel:cats-core_2.12:2.2.0 ()              (depends on 2.2.0)

我试过这个 ShadeRule 来解决,但似乎没有解决问题。 (省略了特定于工作的库)。我试过

.inProject
.inAll
,都没有。

 ThisBuild / assemblyShadeRules := Seq(
  ShadeRule.rename("org.typelevel.**" -> "shadeTypelevel.@1")
    .inLibrary(
      "org.typelevel" % "cats-core_2.12" % "0.9.0",
      "org.typelevel" % "cats-kernel_2.12" % "0.9.0",
      "org.typelevel" % "cats-law_2.12" % "0.9.0",
      "org.typelevel" % "cats_2.12" % "0.9.0",
      "org.typelevel" % "cats-jvm_2.12" % "0.9.0",
      "org.typelevel" % "cats-free_2.12" % "0.9.0",
      "org.typelevel" % "cats-kernel-laws_2.12" % "0.9.0",
      "org.typelevel" % "cats-macros_2.12" % "0.9.0",
    ).inProject
 )

sbt 立即因提供的错误而失败,因此无法打印依赖树。对我的 ShadeRule 出了什么问题感到困惑。在 0.x.x 版本中,我可以链接

.inLibrary
调用,但是在 1.x.x 版本中,我只能调用
.inLibrary
一次?我尝试引用 sbt-assembly GitHub https://github.com/sbt/sbt-assembly#shading.

scala playframework sbt sbt-assembly
© www.soinside.com 2019 - 2024. All rights reserved.