我一直在浏览Maven Framework
。在进行多模块项目时,我了解到模块之间的循环依赖是不可接受的。所以我想到了一个场景,比如。。。
root ----------
- pom.xml |
|
|--- moduleA
| - pom.xml (moduleB has been added as a dependancy)
|
|--- moduleB
- pom.xml
假设moduleA
具有属性类AppProperty
和调用moduleB
中可用的另一类B
的Main
类
moduleA
中可用的Main
类:-
someValue = AppProperty.get(propKey);
//some logic
B mb = new B();
B.process(...);
moduleB
的B
类:-
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一直相互调用,那么它们可能只是一个模块。所以将它们合并到一个模块中