如何解决处理Maven多模块项目中的相互依赖性
我正在经历Maven Framework
。在进行多模块项目时,我读到模块之间的循环依赖性是不可接受的。
所以我想到了一个场景,就像...
root ----------
- pom.xml |
|
|--- moduleA
| - pom.xml (moduleB has been added as a dependancy)
|
|--- moduleB
- pom.xml
假设moduleA
具有一个属性类AppProperty
和一个Main
类,该类将调用B
中可用的另一个类moduleB
Main
类在moduleA
中可用:-
someValue = AppProperty.get(propKey);
//some logic
B mb = new B();
B.process(...);
B
之moduleB
类:-
process(...) {
someOtherValue = AppProperty.get(someKey)
// some other logic
}
现在Main
将不会抛出任何 compile-time errors
,因为其依赖性已得到解决,因为已将moduleB
作为依赖性添加到moduleA'a pom.xml
中。但是对于类B
而言,与其调用AppProperty
类不同,后者仅在moduleA
中可用。我无法在moduleA
的pom中添加moduleB
的依赖关系,因为这会导致循环依赖关系(如果我正确理解的话)。
我了解,理想情况下,建议以非循环方式维护代码,但是如果由于某种原因而消除循环依赖性只是不可行怎么办? 在这种情况下,有没有办法在不主动更改现有代码逻辑的情况下处理循环依赖关系??
解决方法
您不能构建具有循环依赖性的项目。您需要在A之前先在B之前先构建B,这是一个矛盾。
但是像您这样的问题很容易解决:
- 如果问题仅是课程
AppProperty
或其他几个问题,只需将它们从A移到B。 - 如果您对A和B有一些通用的类,请创建一个辅助模块C并将其用作A和B中的依赖项。
- 如果A和B始终互相调用,则它们可能应该只是一个模块。因此,将它们合并到一个模块中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。