【发布时间】:2015-08-15 00:46:41
【问题描述】:
我有一个 Maven 项目,它包含两个依赖项,A 和 B。这些中的每一个都传递地依赖于C,但它们依赖于不同版本的C。假设 A 依赖于 C 版本 1,而 B 依赖于 C 版本 2。
不幸的是,A 与版本 2 的字节码不兼容,B 与版本 1 也不兼容。(碰巧,A 是 source-compatible 与版本 2,但我认为这对我们没有帮助。)
这意味着我的项目中需要传递依赖的两个版本,并且我需要 A 使用版本 1,而 B 使用版本 2。
有没有办法做到这一点?
我曾假设我需要使用 shade 插件来重新定位 A 的包名及其所有依赖项,但这似乎是不可能的。如果我为 A 着色,它的依赖项不会被着色,它仍然会选择版本 2,并且无法运行。
【问题讨论】:
-
我不认为这是可能的,因为 jdk 只会加载一个版本而不是两个版本。
-
你可以看看这里:stackoverflow.com/questions/13620281/… 第一个答案表明这是可能的。第二个答案提供了一些可能对您有用的示例。
-
2 岁的问题。仍然相关。
标签: java maven maven-shade-plugin