处理maven多模块项目中的相互依赖关系



我一直在浏览Maven Framework。在进行多模块项目时,我了解到模块之间的循环依赖是不可接受的。所以我想到了一个场景,比如。。。

root ----------
- pom.xml    |
|
|--- moduleA
|  - pom.xml (moduleB has been added as a dependancy)
|
|--- moduleB
- pom.xml


假设moduleA具有属性类AppProperty和调用moduleB中可用的另一类BMain

moduleA中可用的Main类:-

someValue = AppProperty.get(propKey);
//some logic

B mb = new B();
B.process(...);

moduleBB类:-

process(...) {
someOtherValue = AppProperty.get(someKey)
// some other logic
}

现在Main将不会抛出任何compile-time errors,因为moduleB已被添加为moduleA'a pom.xml中的依赖项,因此其依赖项已被解决。但对于类B,情况并非如此,因为它调用的AppProperty类仅在moduleA中可用。我不能在moduleB的pom中添加moduleA的依赖性,因为这会导致循环依赖性(如果我理解正确的话(。

我知道,理想情况下,建议以非循环的方式维护代码,但如果由于某种原因,删除循环依赖性是不可行的呢在这种情况下,是否有任何方法可以在不主动更改现有代码逻辑的情况下处理循环依赖关系

不能构建具有循环依赖关系的项目。你需要在A之前先建B,然后再建B,这有点矛盾。

但像你这样的问题很容易解决:

  • 如果问题只是AppProperty类或其他一些类,只需将它们从a移动到B即可
  • 如果您有一些A和B的公共类,请创建一个辅助模块C,并将其用作A和B中的依赖项
  • 如果A和B一直相互调用,那么它们可能只是一个模块。所以将它们合并到一个模块中

相关内容

  • 没有找到相关文章

最新更新