我有两个通过 Maven 导入的依赖项,它们都导入了一个公共库,但版本不同,但版本彼此不兼容。基本上是这篇文章中描述的问题:

但不幸的是,对我来说,解决方案并不像博文描述的那么简单,因为没有通用版本的包 Z适用于这两个依赖项。
跳过导致这一点的糟糕设计决策,因为我不控制这些库中的任何一个,我希望重新打包顶级依赖项之一并遮蔽其所有依赖项,以便它基本上可以使用自己的独立版本的 Z。这可以用 Maven 完成吗?
我考虑过的一个解决方案是隔离所有依赖于包的类,Y并将它们放在一个单独的应用程序中,然后将其作为导入的阴影jar进行传送X,但是我想知道是否有更简单的方法来实现这一点。