如何解决不同版本的传递依赖?

时间:2021-02-17 03:18:34

标签: scala sbt

假设我的应用程序依赖于两个库,其中一个是 Spark。

Spark 具有 com.fasterxml.jackson 的传递依赖(特定版本且不可配置)。

另一个依赖库也有相同的传递依赖,但更新的版本(不适用于 Spark 需要的版本)。

所以基本上在测试(单元测试)应用程序时需要两个版本。

让两个版本共存的推荐方式(解决方法)是什么?如果有

1 个答案:

答案 0 :(得分:0)

您可以尝试使用 jarjar-abrams 遮蔽有问题的依赖项。着色是重写库的字节码以将其类移动到不同的包的过程,并且对这些类的所有引用也被重写以匹配。

https://eed3si9n.com/jarjar-abrams

不幸的是,当涉及反射时,它通常不起作用 - 我不知道 Jackson 是否以与此过程不兼容的方式使用反射,但值得一试。