Maven模块与独立Maven POM作为依赖关系

时间:2012-12-03 17:57:28

标签: maven pom.xml parent-pom

我目前正在开展一个包含大约十二个子项目的项目。

每个子项目都包含一个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存储库中作为其他公司项目的代码库使用。

例如,是否使用多模块方法来分解和组织项目子组件的组合?或者是否会采用模块来表示项目的整个组件?

1 个答案:

答案 0 :(得分:0)

感谢大家到目前为止的观点 - 我意识到这个问题是主观的。

过了一段时间,在我看来,这个问题的“正确”答案将由另一个问题决定:每个子项目是否都有自己的生命周期?

我想我们可以使用UML类聚合和组合作为隐喻。如果一个子项目(从@yorkw借用一个术语的叶子节点)不能单独存在,或者在父项目范围之外有一个自己的生命周期(那是一个WAR,一个EAR,无论如何)那么我会说恕我直言该结构将保证在父POM中使用模块。

否则,由于项目可以独立站立,我会说(再次恕我直言)该结构将保证将该项目作为对其父项的依赖。