Maven的阴影插件可以影响第三方库吗?
我的同事和我一直在争论使用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的阴影插件来遮蔽baz:1.1.1
或baz:2.2.2
以使其工作,但这听起来不符合逻辑,因为要使它工作,它必须修改bar
或boo
的班级文件中的签名。令人惊讶的是,他确实设法通过NoSuchMethodError
他正在处理使用阴影,并且说实话我不太确定如何...
那么,阴影实际上会影响第三方库而不仅仅是我自己的代码吗? 另外,如果没有,有没有办法解决上述冲突?
答案 0 :(得分:1)
好问题。试图在foo中遮蔽baz不会起作用,因为Maven将只选择两个baz依赖中的一个。 阴影(有重新安置)baz会很奇怪,因为会有一些新的课程,酒吧或者嘘声不会认出来。 我会尝试使用foo,bar-shaded和boo-shaded设置一个多模块项目。对于foo,在这些模块上添加依赖项。 确保baz的重新定位不同。