两个库引入了相同依赖项的不同版本。如何导入它们?
Two libraries bring in different version of the same dependency. How to import them both?
我有以下情况:
+ DentistApp
L TreatsLibrary
L IceCream 1.0
L CavityCausesLib
L IceCream 2.0
现在我得到一个 VerifyError
,因为 TreatsLibrary
正在使用 IceCream.giveToKidAfterDrill()
,由于法律原因,它在 2.0 版中被删除了。
如何导入两个版本并确保每个版本都使用自己的版本?
此答案假设您正在谈论如何在运行时从打包的超级 JAR 加载这些库。
您需要使用 sbt-assembly
隐藏您的依赖项。
这可以按如下方式完成:
assemblyShadeRules in assembly ++= Seq(
ShadeRule.rename("IceCream.**" -> "my_icecream.@1")
.inLibrary("com.library.treats" % "TreatsLibrary" % "1.0.0")
.inProject
)
这将隐藏 com.library.treats
中的 IceCream
依赖项,并将每个包名称更改为以 my_icecream
开头。
我有以下情况:
+ DentistApp
L TreatsLibrary
L IceCream 1.0
L CavityCausesLib
L IceCream 2.0
现在我得到一个 VerifyError
,因为 TreatsLibrary
正在使用 IceCream.giveToKidAfterDrill()
,由于法律原因,它在 2.0 版中被删除了。
如何导入两个版本并确保每个版本都使用自己的版本?
此答案假设您正在谈论如何在运行时从打包的超级 JAR 加载这些库。
您需要使用 sbt-assembly
隐藏您的依赖项。
这可以按如下方式完成:
assemblyShadeRules in assembly ++= Seq(
ShadeRule.rename("IceCream.**" -> "my_icecream.@1")
.inLibrary("com.library.treats" % "TreatsLibrary" % "1.0.0")
.inProject
)
这将隐藏 com.library.treats
中的 IceCream
依赖项,并将每个包名称更改为以 my_icecream
开头。