Shade(重定位)传递依赖的一个版本,而不是另一个版本

chi*_*ity 10 java maven maven-shade-plugin

我有一个包含两个依赖项AB的Maven项目.每一种过渡地依赖于Ç,但它们依赖于不同版本的Ç.假设A取决于C版本1,B取决于C版本2.

不幸的是,一个不是字节码兼容版本2,也不是与第1版(碰巧,一个源兼容与2版本,但我不认为这将有助于我们在这里.)

这意味着我在项目中需要两个版本的传递依赖项,我需要A使用版本1,B需要使用版本2.

有办法做到这一点吗?

我曾假设我需要使用shade插件来重新定位A的包名及其所有依赖项,但这似乎不可能.如果我遮蔽A,它的依赖关系不会被遮挡,它仍然会选择版本2,并且无法运行.

a.l*_*.l. 3

创建另一个A名为 的项目包装器A-wrapper。搬迁CA-wrapper. 然后在您的主项目中,取决于A-wrapperB

我在 pb2 和 pb3 上遇到了类似的问题,并使用这种方式解决了。 /sf/answers/2897596761/