【发布时间】:2015-12-20 17:32:38
【问题描述】:
TL;DR 版本
Maven 的 shade 插件会影响第三方库吗?
加长版
我和我的同事一直在争论使用 Maven 的 shade 插件来修复第三方库的依赖错误。我们有以下依赖层次结构:
foo (our project)
+--- bar:1.0.0
| \--- baz:1.1.1
\--- boo:1.0.0
\--- baz:2.2.2
(foo 依赖于bar 和boo;两者都依赖于不同版本的baz)
问题是,bar 和boo 不能使用不同版本的baz。
在我们的项目中,我们不直接依赖baz,但我们确实依赖bar和boo。
我的同事说我们可以使用 Maven 的 shade 插件来遮蔽 baz:1.1.1 或 baz:2.2.2 使其工作,但这听起来不合逻辑,因为它必须修改类中的签名bar 或 boo 的文件。不过令人惊讶的是,他确实设法通过了他一直在处理使用阴影的NoSuchMethodError,老实说我不太确定如何..
那么,阴影是否真的会影响第三方库而不仅仅是我自己的代码?
另外,如果没有,有没有办法解决上述冲突?
【问题讨论】:
标签: java maven maven-shade-plugin