1、聚合的写法
<project>
<groupId />
<artifactId />
<version />
<packaging>pom</packaging>
<modules>
<module>abc</module>
<module>def</module>
</modules>
</project>
以上的配置和一般的POM有2个区别,一个是packaging要声明为pom,第二个是多了<modules>的配置
这里的abc和def都是子目录的目录名。也就是说,abc和def都是这个聚合项目的子目录,如果要平级的话,这里需要改成../abc和../def
2、继承
以下列表中的pom元素是可以被继承的:
<groupId>
<version>
<description>
<distributionManagement>
<properties>
<dependencies>
<dependencyManagement>
<repositories>
<build>
不过一般不会直接继承<dependencies>,因为未来增加的子项目,是否一定就需要依赖parent里声明的依赖,是很难说的。所以一般在parent pom里,只会配置<dependencyManagement>,以限定依赖的版本号。实际的依赖还是在具体子项目里声明的,但是对版本号进行了控制
3、聚合与继承的关系
聚合主要是为了多个maven工程协同构建项目,而继承主要是为了消除重复配置
对于聚合模块来说,它知道有哪些被聚合的模块,被聚合的模块并不知道聚合模块的存在
对于继承关系的parent pom来说,它并不知道哪些子模块继承自它,而子模块则必须知道父模块是什么
在实际项目中,往往会把聚合POM和父POM合一,这样也是有道理的,主要是为了方便起见。至于目录结构,可以是子目录,也可以是平行关系
4、裁剪Reactor
当构建一组存在聚合和继承关系的maven项目时,就存在一个Reactor的关系,也就是构建的顺序
默认情况下,构建顺序会形成一个有向非循环图
但是可以通过一些参数,来对构建顺序进行裁剪
mvn -pl aa,bb
仅构建aa和bb模块
mvn -pl aa -am
构建aa,及aa的依赖模块
mvn -pl aa -amd
构建aa,及依赖aa的模块
mvn -pl aa -amd bb
首先根据aa,及依赖aa的模块,计算出构建顺序之后,从bb模块开始构建(bb模块之前的模块不会被构建)
分享到:
相关推荐
读书笔记:Maven 实战读书笔记
读书笔记:maven实战学习笔记
本示例将深入探讨"Maven聚合与继承"的概念。 **一、Maven聚合(Aggregation)** Maven聚合允许我们将多个独立的Maven项目组织在一起,形成一个单一的构建单元。在我们的示例中,`parent`项目就是一个聚合项目。它...
读书笔记:Maven 实践学习按理阅读《Maven实战》笔记。
《Maven实战》是一本专为Java开发人员设计的指南,深入浅出地介绍了Maven这一强大的项目管理和构建工具。Maven是Apache软件基金会开发的一个开源项目,它以XML文件格式定义项目,能够自动化构建、依赖管理和项目信息...
从给定的文件信息来看,标题与描述都指向了“Maven3实战笔记(整合)”,这表明文档主要聚焦于Maven3的实践应用与整合经验分享。Maven是Apache软件基金会维护的一个开源项目,是一个项目管理和综合工具,主要用于Java...
maven总结笔记-继承和聚合
Maven实战的笔记,通读了Maven实战这本书之后,结合自己的经验,提取了其中大部分使用的操作以及使用经验。采用md编写文档,使用markdown编辑器查看效果更佳
本示例将深入探讨Maven中的“依赖”、“继承”和“聚合”这三个核心概念,帮助开发者更好地理解和应用Maven。 首先,我们来讨论"Maven依赖"。在Java开发中,一个项目往往需要引用其他库或者框架来完成特定功能。...
通过阅读《Maven3实战笔记(全)》,开发者不仅可以掌握Maven的基本操作,还能了解到如何高效地利用Maven解决实际项目中的问题,提升开发效率。书中生动的实例和幽默的讲解方式,使得学习过程更为轻松愉快。对于任何...
### Maven3实战笔记08——Maven反应堆:深度解析与实战应用 #### Maven反应堆的概念与作用 在深入探讨Maven反应堆之前,我们首先需要理解Maven项目是如何组织和构建的。Maven是一种自动化构建工具,它通过定义项目...
Maven 实战(361)_12804356.pdf
本篇文章将深入探讨Maven的两个重要特性:继承(Inheritance)和聚合(Aggregation),并结合提供的资源《一头扎进Maven3》第五讲源码及文档进行详细解释。 **一、Maven继承** Maven的继承机制允许我们在多个项目...
根据给定的文件信息,我们可以提取出关于"Maven3实战笔记整合"的知识点。由于文件内容部分出现了大量的乱码和不完整字符序列,无法直接从中提取有用的信息。但是,我们可以根据标题和描述以及通用的Maven知识点,来...
5. **聚合与继承**:聚合允许在一个顶级POM中管理多个子项目,而继承则可以让一个POM继承另一个POM的配置。 #### Maven高级特性 1. **使用Nexus建立私服**:Nexus是一个开源的仓库管理系统,可以帮助企业搭建私有...
### Maven实战——入门篇 #### Maven简介与概念 Maven是一种强大的、跨平台的项目管理工具,主要用于基于Java平台的项目构建、依赖管理和项目信息管理。无论是小型的开源类库项目还是大型的企业级应用,Maven都能...
** Maven实战:所有源代码详解 ** Maven是一款强大的项目管理和构建工具,广泛应用于Java开发领域。它通过一套约定优于配置的原则,简化了项目的构建、依赖管理以及文档生成等工作。本篇文章将深入探讨"Maven实战...
读书笔记:maven资源&《Maven实战》 TOREAD 《Maven实战完整版》