Maven中解决或编译循环依赖问题

23

我有一个有点有趣的问题,而不是寻找解决办法,我正在寻找多个解决方案。

项目Alice有一个pom.xml文件。在其中,pom表示她被打包为一个jar包,虽然她是一个强大的女性,但她依赖于Bob。项目Bob作为补充者,他也依赖于Alice。因此形成了循环依赖。

当然,在Alice上运行mvn compile时会说“缺少Bob”。而那真正的浪漫主义者Bob,如果你试着编译他,他也会想念Alice。

由于没有另一个存在,他们都不会服从,所以我在寻找解决方法

我只知道两种解决方法:

  1. 让他们结婚,成为一个Maven项目。
  2. 打破他们的相互依赖。

除了我不想提倡乱伦之外,制作一个父POM并使Alice和Bob成为兄弟姐妹,这样做是否能解决这个问题呢?

还有其他的解决方案吗?


9
这让我的一天变得更美好了。 - BackSlash
1
当它们不相互依赖并且后来彼此依赖于另一个旧版本时,您能否创建并发布到Maven存储库? - Gábor Bakos
2
你可以通过依赖不同的版本来引导它,这样你就可以编译出不依赖于Bob的Alice1。然后你可以编译出依赖于Alice1的Bob1,接着你再引入依赖于Bob1的Alice2。但是最好的解决方案是不要这样做。 - eckes
2
如果问题以严肃的方式书写,我会给你一个认真的答案。也许解决方案是让爱丽丝和鲍勃有一段婚外情。 - Stephen C
2
我本想说“那是真正的 POMantic”。 - Sangimed
显示剩余5条评论
1个回答

8
找出Alice和Bob彼此迫切需要的东西,将其作为独立的POM引入(称之为Charlie),然后让Alice和Bob依赖于Charlie。
需要注意的是,循环依赖经常出现在某些模块包含超出其需要的内容时。由于Alice需要Bob,而Bob需要Alice,因此可以从这两个模块中拆分出一些内容来,并引入第三个模块。
这可能不是最具吸引力的解决方案,但却是最干净的解决方案。这样您就可以在系统中引入更多的模块化,并提供一些模块重构的机会。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接