scala - 如何解决不同版本的传递依赖?
问题描述
假设我的应用程序依赖于两个库,其中之一是 Spark。
Spark 具有传递依赖com.fasterxml.jackson
(特定版本且不可配置)。
另一个依赖库也具有相同的传递依赖,但版本较新(不适用于 Spark 所需的版本)。
所以基本上在测试(单元测试)应用程序时需要两个版本。
共存两个版本的推荐方式(解决方法)是什么?如果有的话
解决方案
您可以尝试使用 jarjar-abrams 对有问题的依赖项进行着色。着色是一个过程,其中库的字节码被重写以将其类移动到不同的包,并且对这些类的所有引用也被重写以匹配。
https://eed3si9n.com/jarjar-abrams
不幸的是,当涉及到反射时,它通常不起作用——我不知道杰克逊是否以与这个过程不兼容的方式使用反射,但值得一试。
推荐阅读
- sass - 如何使用特定于应用程序的值覆盖共享库中的 sass 变量
- javascript - 如何在javascript中获取样式变换旋转值?
- c# - 针对具有 Identity Server 4 授权的 asp.net webforms 的 Ajax 请求中的 CORS
- vue.js - 在vuejs2中将base64格式的pdf显示为缩略图
- javascript - 从 React Native 编辑浮动标签和按钮
- python - 将纪元时间更改为可读时间并在 python/pandas 中绘图
- r - 在 plotly 中复制带有刻面和箭头注释的 ggplot2 图表
- recharts - 问:Recharts 隐藏所有其他标签?
- java - 可迭代对象的迭代器应在 Java 中返回可迭代对象本身
- javascript - 如何等待按钮启用并使用 puppeteer 单击?