两个库带来了相同依赖的不同版本。如何导入它们?

时间:2017-11-10 22:25:05

标签: scala dependencies sbt sbt-assembly

我有以下情况:

+ DentistApp
   L TreatsLibrary
     L IceCream 1.0
   L CavityCausesLib
     L IceCream 2.0

现在我收到VerifyError,因为TreatsLibrary正在使用IceCream.giveToKidAfterDrill(),因为法律原因,该版本已在2.0版中删除。

如何导入这两个版本并确保每个版本都使用自己的版本?

1 个答案:

答案 0 :(得分:6)

这个答案假设您正在讨论如何在运行时从打包的超级JAR加载这些库。

您需要使用sbt-assembly为依赖项着色。 这可以按如下方式完成:

assemblyShadeRules in assembly ++= Seq(
  ShadeRule.rename("IceCream.**" -> "my_icecream.@1")
    .inLibrary("com.library.treats" % "TreatsLibrary" % "1.0.0")
    .inProject
)

这会遮蔽IceCream中的com.library.treats依赖关系,并将每个包名称更改为以my_icecream开头。