我目前正在开展一个包含大约十二个子项目的项目。
每个子项目都包含一个POM,它单独构建依赖项。
上游子项目将下游子项目作为依赖项包含在内,就像在log4j中包含依赖项一样:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
我们将这些依赖项保存在本地Nexus存储库中。
这似乎对我们有用。
但是,经过11个月的开发,我今天已经决定重新考虑这些十几个POM文件,并考虑到重构。
我随后发现了<parent>
和<module>
标签,并开始质疑我的Maven项目策略是否“正确”。
重构我的POM会有什么好处,以便将最高级别的POM(Web WAR项目)更改为父POM,它列出模块而不是上面列出的一系列依赖项?
我希望大多数十几个子项目能够以自己的方式进行生命周期,这样它们就可以在公司的Nexus存储库中作为其他公司项目的代码库使用。
例如,是否使用多模块方法来分解和组织项目子组件的组合?或者是否会采用模块来表示项目的整个组件?
答案 0 :(得分:0)
感谢大家到目前为止的观点 - 我意识到这个问题是主观的。
过了一段时间,在我看来,这个问题的“正确”答案将由另一个问题决定:每个子项目是否都有自己的生命周期?
我想我们可以使用UML类聚合和组合作为隐喻。如果一个子项目(从@yorkw借用一个术语的叶子节点)不能单独存在,或者在父项目范围之外有一个自己的生命周期(那是一个WAR,一个EAR,无论如何)那么我会说恕我直言该结构将保证在父POM中使用模块。
否则,由于项目可以独立站立,我会说(再次恕我直言)该结构将保证将该项目作为对其父项的依赖。