您的位置:首页 > 其它

maven中的聚合与继承

2013-09-24 11:12 337 查看
maven中的聚合和继承是2个不同的概念,虽然经常在一个父模块里同时完成这2个功能

一、聚合

聚合的作用是把子项目的构建过程串到一起:
<modules>
<module>../project-moduleA</module>
<module>../project-moduleB</module>
</modules>

或者
<modules>
<module>project-moduleA</module>
<module>project-moduleB</module>
</modules>

前者是对应平行结构的,后者是对应树形结构的

在平行结构的情况下



pom所在的当前目录是D:\example\project-aggregator,所以需要配置为../project-moduleA,才能找到D:\example\project-moduleA

在树形结构的情况下



pom所在的当前目录是D:\example\project-aggregator,所以可以直接配置为project-moduleA,即可找到D:\example\project-aggregator\project-moduleA

聚合模块清楚地知道将要聚合哪些子模块,但是子模块对于自己被聚合毫不知情

二、继承

与聚合不同,继承的目的是为了在父模块中进行一些公共配置,以简化子模块的POM文件
<parent>
<groupId>net.kyfxbl.modules.project</groupId>
<artifactId>project-aggregator</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../project-aggregator</relativePath>
</parent>

或者
<parent>
<groupId>net.kyfxbl.modules.project</groupId>
<artifactId>project-aggregator</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>

前者是对应平行结构的,后者是对应树形结构的

在平行结构的情况下



pom所在的当前目录是D:\example\project-moduleA,所以需要配置为../project-aggregator,才能找到D:\example\project-aggregator\pom.xml

在树形结构的情况下



pom所在的当前目录是D:\example\project-aggregator\project-moduleA,所以可以直接配置为../,即可找到D:\example\project-aggregator\pom.xml

聚合模块清楚地知道自己继承自哪个父模块,但是父模块并不知道自己将会被哪些子模块继承

实际应用中,将module和parent放在一个pom里,是一种常见的做法



大小: 25.5 KB



大小: 3.7 KB

查看图片附件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: