我有以下情况:
+ DentistApp
L TreatsLibrary
L IceCream 1.0
L CavityCausesLib
L IceCream 2.0
现在我收到VerifyError
,因为TreatsLibrary
正在使用IceCream.giveToKidAfterDrill()
,因为法律原因,该版本已在2.0版中删除。
如何导入这两个版本并确保每个版本都使用自己的版本?
答案 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
开头。