`

《maven实战》读书笔记(四)——聚合与继承

阅读更多
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 实战读书笔记.zip

    读书笔记:Maven 实战读书笔记

    读书笔记:maven实战学习笔记.zip

    读书笔记:maven实战学习笔记

    maven聚合与继承配置

    本示例将深入探讨"Maven聚合与继承"的概念。 **一、Maven聚合(Aggregation)** Maven聚合允许我们将多个独立的Maven项目组织在一起,形成一个单一的构建单元。在我们的示例中,`parent`项目就是一个聚合项目。它...

    读书笔记:Maven 实践学习按理阅读《Maven实战》笔记。.zip

    读书笔记:Maven 实践学习按理阅读《Maven实战》笔记。

    maven总结笔记-继承和聚合

    maven总结笔记-继承和聚合

    Maven实战学习笔记

    Maven实战的笔记,通读了Maven实战这本书之后,结合自己的经验,提取了其中大部分使用的操作以及使用经验。采用md编写文档,使用markdown编辑器查看效果更佳

    maven依赖+继承+聚合

    本示例将深入探讨Maven中的“依赖”、“继承”和“聚合”这三个核心概念,帮助开发者更好地理解和应用Maven。 首先,我们来讨论"Maven依赖"。在Java开发中,一个项目往往需要引用其他库或者框架来完成特定功能。...

    Maven3实战笔记(全)

    通过阅读《Maven3实战笔记(全)》,开发者不仅可以掌握Maven的基本操作,还能了解到如何高效地利用Maven解决实际项目中的问题,提升开发效率。书中生动的实例和幽默的讲解方式,使得学习过程更为轻松愉快。对于任何...

    Maven3实战笔记08Maven反应堆

    ### Maven3实战笔记08——Maven反应堆:深度解析与实战应用 #### Maven反应堆的概念与作用 在深入探讨Maven反应堆之前,我们首先需要理解Maven项目是如何组织和构建的。Maven是一种自动化构建工具,它通过定义项目...

    maven学习笔记maven学习笔记

    maven学习笔记maven学习笔记maven学习笔记

    maven继承与聚合代码

    本篇文章将深入探讨Maven的两个重要特性:继承(Inheritance)和聚合(Aggregation),并结合提供的资源《一头扎进Maven3》第五讲源码及文档进行详细解释。 **一、Maven继承** Maven的继承机制允许我们在多个项目...

    Maven 实战(中文pdf)

    《Maven实战》是一本专为Java开发人员设计的指南,深入浅出地介绍了Maven这一强大的项目管理和构建工具。Maven是Apache软件基金会开发的一个开源项目,它以XML文件格式定义项目,能够自动化构建、依赖管理和项目信息...

    Maven 实战(361)_12804356.pdf

    Maven 实战(361)_12804356.pdf

    Maven实战Maven实战

    Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清

    Maven3实战笔记整合

    根据给定的文件信息,我们可以提取出关于"Maven3实战笔记整合"的知识点。由于文件内容部分出现了大量的乱码和不完整字符序列,无法直接从中提取有用的信息。但是,我们可以根据标题和描述以及通用的Maven知识点,来...

    Maven实战 Maven实战Maven实战

    5. **聚合与继承**:聚合允许在一个顶级POM中管理多个子项目,而继承则可以让一个POM继承另一个POM的配置。 #### Maven高级特性 1. **使用Nexus建立私服**:Nexus是一个开源的仓库管理系统,可以帮助企业搭建私有...

    Maven笔记Maven笔记Maven笔记

    1: 通过配置MAVEN_HOME 和 %% %MAVEN_HOME%\bin 然后进行mvn -version 测试 掌握 -Xms 与 -Xmx的相关配置 2: Maven目录分析: 2.1: bin: 含有mvn运行的脚本 2.2: boot:含有plexus-classworlds类加载器框架 ...

Global site tag (gtag.js) - Google Analytics