Maven聚合与继承

1、聚合

  • 咱们须要创建一个额外的名为 account-aggregator的模块,而后经过该模块构建整个项目的全部模块。 account-aggregator自己也是个 Maven项目
<project>  
    <modelVersion>4.0.0</modelVersion>  
    <groupId>com.juvenxu.mvnbook.account</groupId>  
    <artifactId>account-aggregator</artifactId>  
    <version>1.0.0-SNAPSHOT</version>  
    <packaging> pom </packaging>  
    <name>Account Aggregator</name>  
     <modules>  
        <module>account-email</module>  
        <module>account-persist</module>  
     </modules>  
</project>

2、继承

** 可声明父POM供子 POM继承,相应的pom内容不作列出,能够自行网上搜索 **maven

最后:一样还须要把 account-parent加入到聚合模块account-aggregator中。

注意:ui

  1. 子模块没有声明groupId和version, 这两个属性继承至父模块。但若是子模块有不一样与父模块的 groupId、version ,也可指定;
  2. 不该该继承artifactId,若是groupId ,version,artifactId 彻底继承的话会形成坐标冲突;另外即便使用不一样的 groupId或version,一样的 artifactId也容易产生混淆。
  3. 使用继承后 parent也必须像自模块同样加入到聚合模块中。也就是在在聚合模块的 pom中加入<module>account-parent</module>

3、聚合与继承的关系

区别 :url

  1. 对于聚合模块来讲,它知道有哪些被聚合的模块,但那些被聚合的模块不知道这个聚合模块的存在。
  2. 对于继承关系的父 POM来讲,它不知道有哪些子模块继承与它,但那些子模块都必须知道本身的父 POM是什么。

共同点 :插件

1.聚合 POM与继承关系中的父POM的 packaging都是pom
2.聚合模块与继承关系中的父模块除了 POM以外都没有实际的内容。

4、Maven可继承的POM 元素

groupId :项目组 ID ,项目坐标的核心元素;  
version :项目版本,项目坐标的核心元素;  
description :项目的描述信息;  
organization :项目的组织信息;  
inceptionYear :项目的创始年份;  
url :项目的 url 地址  
develoers :项目的开发者信息;  
contributors :项目的贡献者信息;  
distributionManagerment :项目的部署信息;  
issueManagement :缺陷跟踪系统信息;  
ciManagement :项目的持续继承信息;  
scm :项目的版本控制信息;  
mailingListserv :项目的邮件列表信息;  
properties :自定义的 Maven 属性;  
dependencies :项目的依赖配置;  
dependencyManagement :醒目的依赖管理配置;  
repositories :项目的仓库配置;  
build :包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等;  
reporting :包括项目的报告输出目录配置、报告插件配置等。
相关文章
相关标签/搜索