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


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

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

时间: 2024-12-22 11:46:37

Maven之——聚合与继承的相关文章

Maven学习笔记(三):Maven的聚合和继承

Maven的聚合其实就是把各个项目拷贝到一个项目里,便于统一构建(这种是父子目录结构构件,个人喜欢这种,平行结构不喜欢),实现聚合的方式为: -- 新建一个普通的Maven项目,只保留pom文件,其他的目录结构都删除 -- 配置新建项目的pom文件: 1 <project ...> 2 <modelVersion>4.0.0</modelVersion> 3 <groupId>XXXX</groupId> 4 <artifactId>

maven的聚合与继承5

一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 1 <modules> 2 <module>模块一</module> 3 <module>模块二</module> 4 <module>模块三</module> 5 </modules> 例如:对项目的Hello.HelloFriend.MakeFriends这三个模块进行聚合 1 <modules>

Maven实战——聚合与继承(上)

聚合 首先我们来看两个pom.xml文件,我们将通过这两个pom文件来引入我们要学习的聚合与继承 account-email <modelVersion>4.0.0</modelVersion> <groupId>com.juvenxu.mvnbook.account</groupId> <artifactId>account-email</artifactId> <name>Account Email</name&

Maven之 聚合与继承 详解

说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各类用户对软件的要求越来越高,软件本身也变得越来越复杂,然后软件设计人员开始采用各种方式进行开发,于是就有了我们的分层架构.分模块开发,来提高代码的清晰和重用.针对于这一特性,maven也给予了相应的配置. 情景分析一: 我们在开发过程中,创建了2个以上的模块,每个模块都是一个独立的maven project,在开始的时候我们可

Maven实战——聚合与继承(下)

聚合与继承的关系 聚合是为了方便快速构建项目,继承是为了消除重复配置 共同点是两者的packaging都是pom,聚合模块与继承关系中的父模块除了pom之外都没有实际内容. 聚合关系与继承关系的比较: 在现有实际项目中,往往发现一个pom既是聚合pom又是父pom,这么做主要是为了方便.一般来说,融合使用聚合和继承没有什么问题.例如,可以将account-aggregator和account-parent合并成为一个新的account-parent,如下: <modelVersion>4.0.

Maven中聚合与继承

何为继承? --?继承为了消除重复,我们把很多相同的配置提取出来 --?例如:grouptId,version等 就像写java程序一样,对于有共性切重复的东西,就提取出来. 如有三个pom.xml配置文件, Hello/pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sche

Maven模块聚合与继承

聚合 假如有account-email和account-persist两个模块,我们想要一次构建这两个项目,这时需要用到聚合. 聚合模块 package值必须为pom 必须有元素modules module值为相对目录名 新建account-aggregator模块,下面有如下pom文件,其它两个模块保持不变. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/

maven的聚合与继承

新建一个空的maven项目user-parent Pom.xml内容 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven

Maven真——聚合和继承(于)

依赖管理 我们谈论继承一个dependencies因素,我们非常easy这个特性被认为是适用于accout-parent于. 子模块account-email和account-persist同一时候依赖了org.springframework:spring-core:2.5.6,spring-beans:2.5.6,spring-context:2.5.6,junit:junit:4.7.以此能够将这些公共依赖放到父模块account-parent中,两个子模块就能移除这些依赖,简化配置. 上述