zoukankan      html  css  js  c++  java
  • Maven--聚合

    如果想要一次构建多个项目,而又不想分别进入到所有项目的目录下分别执行 mvn 命令。就可以使用 Maven 的聚合(或者称为多模块)特性。

    假设有两个模块 T-A 和 T-B,我们想要一次构建两个项目则需要创建一个额外的模块。这里创建一个名为 T-aggregator 的模块,然后通过 T-aggregator 模块构建整个项目的所有模块。T-aggregator 本身作为一个 Maven 项目,它必须要有自己的 POM,不过,同时作为一个聚合项目,其 POM 又有特殊的地方。

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3   <modelVersion>4.0.0</modelVersion>
     4 
     5   <groupId>org.wzh.maven</groupId>
     6   <artifactId>T-aggregator</artifactId>
     7   <version>0.0.1-SNAPSHOT</version>
     8   <packaging>pom</packaging>
     9   <name>T-aggregator</name>
    10   <modules>
    11       <module>T-A</module>
    12       <module>T-B</module>
    13   </modules>
    14   
    15 
    16 </project>

    上述 POM 为 T-aggregator 的 POM 文件,该 POM 文件和其他两个模块的版本、groupId 一致,Maven 并没有强制要求它们一致,最好的做法是使它们保持一致。且模块所处的目录名称也应该与 artifactId 一致,这是为了方便快速定位内容,Maven 同样没有强制要求。

     <module> :值是一个当前 POM 的相对目录。

     <packaging> :对于聚合模块来说,其打包方式的值必须为 pom,否则无法构建。

    为了方便用户构建项目,通常将聚合模块放在项目目录的顶层,其他模块则作为聚合模块的子目录存在,这样当用户得到源码的时候,第一眼发现的就是聚合模块的 POM,不用从多个模块中去寻找聚合模块来构建整个项目。

    聚合模块仅仅是帮助聚合其他模块构建的工具,它本身并无实质内容,所以这里 T-aggregator 内容仅仅是一个 pom.xml 文件。

    如果使用平行目录结构,聚合模块的 POM 也需要做相应的修改。

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3   <modelVersion>4.0.0</modelVersion>
     4 
     5   <groupId>org.wzh.maven</groupId>
     6   <artifactId>T-aggregator</artifactId>
     7   <version>0.0.1-SNAPSHOT</version>
     8   <packaging>pom</packaging>
     9   <name>T-aggregator</name>
    10   <modules>
    11       <module>../T-A</module>
    12       <module>../T-B</module>
    13   </modules>
    14   
    15 
    16 </project>

    Maven 会首先解析聚合模块的 POM、分析要构建的模块、并计算出一个反应堆构建顺序(Reactor Build Order),然后根据这个顺序依次构建各个模块。反应堆是所有模块组成的一个构建结构。

    构建的最终输出显示的是各模块的名称,而不是 artifactId,所以在 POM 中需配置合理的  <name> 值,其目的是让 Maven 的构建输出更清晰。

  • 相关阅读:
    ASP.NET 2.0 中的代码隐藏和编译
    魅族M8 UI新架构
    详细讲解大型数据库的设计原则与开发技巧
    [ZT]精彩的国外育儿教育读本,图文并茂
    企業導入ERP項目要防止「君子」作亂
    [ZT]VS2005 中 Lc.exe已退出,代码为 1,今天剛遇到就找了
    图像词汇
    VS2005 + VSS2005 的方法
    几种SQL Server数据库分页方式
    DB2 Express版与SQL Server标准版技术比较
  • 原文地址:https://www.cnblogs.com/microcat/p/7239159.html
Copyright © 2011-2022 走看看