首页 > 解决方案 > 如何解决不同版本的传递依赖?

问题描述

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

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

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

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

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

标签: scalasbt

解决方案


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

https://eed3si9n.com/jarjar-abrams

不幸的是,当涉及到反射时,它通常不起作用——我不知道杰克逊是否以与这个过程不兼容的方式使用反射,但值得一试。


推荐阅读