具有相同子依赖项

时间:2017-04-18 18:38:05

标签: java maven maven-3

我的Maven依赖项有这个场景:

  • X1需要D2.2。
  • Y1需要Z1,需要D2.1。

如果我强制每个人都使用D2.2,那么Z1在运行时失败,因为它需要D2.1中的类的一个版本(不再在D2.2中)。如果我强迫所有人使用D2.1,那么X1会失败,因为它需要一个更新版本的类,现在在D2.2中。将Z1升级到最新版本无效,因为它仍然使用D2.1。 X1和Y1也是如此。

我该如何做到这一点?

谢谢, 阿尔瓦罗

1 个答案:

答案 0 :(得分:3)

您刚刚遇到diamond dependency problem。这是一个真正的痛苦,它出现在有秩序的关系的任何地方。依赖性是顺序的,继承也是如此,这是Java中不允许multiple inheritance的原因。它甚至出现在推理中,所谓的Nixon Diamond是钻石依赖类似物。

要解决此问题,如果您有权访问Z1,或者它是开源的,请将其修补/分叉/修改它以使用D2.2,然后修改/ fork / patch Y1以使用修补的Z1。

如果您拥有自己的私有/镜像工件库,我建议您进行修补。创建一个构建作业,克隆开源版本,进行文件修改,构建它并发布到工件仓库。或者,或者另外,改变开源。

祝你好运。