首页 > 代码库 > Maven之——聚合与继承

Maven之——聚合与继承

Maven之——聚合与继承

1、    聚合


        所谓聚合就是用一个pom.xml配置文件将一个或者多个项目关联起来、这样当我们执行聚合文件pom.xml的生命周期阶段的时候、他就会执行在聚合文件中指定聚合的所有项目的对应生命周期阶段。

        包含聚合文件的是一个额外的模块、这个模块必须要有自己的POM文件、并切此聚合项目的POM的packaging必须是pom:

   <modelVersion>4.0.0</modelVersion>
    <groupId>org.andy.items</groupId>
    <artifactId>scattered-items</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>items-thkinjava</module>
    </modules>

        Scattered-items是一个聚合模块、包含具体的items-thkinjava项目。要注意的是:这里items-thkinjava是在scattered-items文件夹内的、如果items-thkinjava与scattered-items同级、则要写成:

    <modelVersion>4.0.0</modelVersion>
    <groupId>org.andy.items</groupId>
    <artifactId>scattered-items</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>../items-thkinjava</module>
    </modules>

2、    继承


        加入一个项目有多个模块、每个模块都有自己的依赖、并且模块之间的依赖有大量的重复、这样谁用谁的不但重复、还复杂、不利于后面的管理、也容易产生冲突。此时就可以抽象一个父类结构pom指定公共部分、以便统一管理。父   POM的配置一般放在项目根目录、或者建立一个额外的项目、包含多个项目、父pom的配置要注意的地方和继承一样、pom.xml中packaging类型也是pom。比如上面提到的scattered-items项目就是一个我用来存放所有平时练习的小项目的集合、每个小项目都是由maven构建的、每个小项目都有使用到单元测试、那么我就可以在scattered-items中配置一个pom.xml作为父POM:

   <groupId>org.andy.items</groupId>
   <artifactId>scattered-items</artifactId>
   <packaging>pom</packaging>
   <version>1.0-SNAPSHOT</version>

        可以发现这个并没有与继承有什么区别、就是少了一个<modules>标签。关键是子POM中比如items-thkinjava的pom.xml要指定继承的是哪个父POM:

    <parent>
        <artifactId>scattered-items</artifactId>
        <groupId>org.andy.items</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <artifactId>items-thkinjava</artifactId>

        最后一行是用来说明、当其继承的有父POM的时候、如果groupId、version与父类一样、就可以完全省略不写、这样他会默认的继承使用父POM的groupId、version两个属性值。


3、    可继承的POM元素


        首先可以看一下maven的pom文件所包含的所有子元素以及他们的意义:http://maven.apache.org/ref/3.2.3/maven-model/maven.html

具体如下、并附上简单说明:

                       

groupId

项目组的id

version

项目版本

Decription

项目的描述信息

Organization

项目的组织信息

Inception Year

项目的创始年份

url

项目的url地址

Developers

项目的开发者信息

Contributors

项目的贡献者信息

distributionManagement

项目的部署配置信息

issueManagement

项目的缺陷跟踪信息

ciManagement

项目的持续集成系统信息

Scm

项目的版本控制系统信息

mailingLists

项目的邮件列表信息

Properties

自定义的maven属性

Dependencies

项目的依赖配置

dependencyManagement

项目的依赖管理配置

Repositories

项目的仓库配置

Build

包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等

reporting

包括项目报告输出目录的配置、报告插件配置等。

        具体的想知道元素的配置方式以及表示的意义、可以查看上面给的网址。


Maven之——聚合与继承