Maven之坐标和依赖_jerry_dyy的博客-CSDN博客

Maven之仓库_jerry_dyy的博客-CSDN博客

Maven之聚合与继承_jerry_dyy的博客-CSDN博客

Maven之生命周期和插件_jerry_dyy的博客-CSDN博客

聚合:

聚合的目的是为了:一次构件多个项目。

对于聚合模块来说,其打包方式为pom,不需要src/main/java之类的文件。

用户可以在一个打包方式为pom的Maven项目中声明任意数量的module元素,来实现模块的聚合。这里的每个module的值都是一个当前POM的相对目录。

继承:

继承的目的是为了:消除重复的配置。

继承就是把共同的配置放在一个父模块中,父模块打包方式为pom,不需要src/main/java之类的文件。

子模块中需要声明<parent>,其中<relativePath>表示父模块POM的相对路径,当项目构建时,Maven会首先根据<relativePath>检查父POM,如果找不到,再从本地仓库查找。

如果子模块与父模块的<groupId>、<version>相同,则子模块可以省略关于<groupId>、<version>的配置。

可以继承的父模块元素:

<groupId>、<version>、<distributionManagement>、<properties>、<dependencies>、<dependencyManagement>、<repositories>。

依赖管理:

<dependencyManagement>元素帮助管理依赖,在该元素中配置的依赖不会造成实际的插件调用行为,当POM中配置了真正的plugin元素,并且其<groupId>、<artifactId>与<dependencyManagement>中配置的插件匹配时,<dependencyManagement>的配置才会影响实际的插件行为。通过这样的方式,既能让子模块继承到父模块的依赖配置,又能保证了子模块依赖使用的灵活性。

Import的依赖范围:

该依赖范围通常指向一个POM,作用是将目标POM中的<dependencyManagement>配置导入并合并到当前POM的<dependencyManagement>元素中。Import范围依赖由于其特殊性,一般都是指向打包类型为pom的模块。

插件管理:

<pluginManagement>元素帮助管理插件,同<dependencyManagement>一样,在该元素中配置的依赖不会造成实际的插件调用行为,当POM中配置了真正的plugin元素,并且其<groupId>、<artifactId>与<pluginManagement>中配置的插件匹配时,<pluginManagement>的配置才会影响实际的插件行为。

聚合与继承的关系:

聚合是为了方便快速构建项目,而继承是为了消除重复配置。

它们的相同点是:打包方式都是pom,除了pom文件之外没有其他实际的内容。

不同点:聚合是聚合模块通过module引用被聚合模块,而继承是子模块通过parent引用父模块。

实际项目中通常把聚合和继承结合起来一起使用。parent项目既是聚合模块,也是父模块。

约定优于配置:

约定:其实就是默认配置

源码目录:src/main/java/

编译输出目录:target/classes

打包方式:jar

包输出目录:target/

之所以会有这些默认配置,是因为有超级POM的存在,超级POM里面配置了这些内容。

对于Maven3,超级POM在文件$MAVEN_HOME/lib/maven-module-builder-x.x.x.jar中的org/apache/maven/model/pom-4.0.0.xml路径下。

反应堆:

在一个多模块的Maven项目中,反应堆是指所有模块组成的一个构建结构。对于单模块项目,反应堆就是该模块本身,但对于多模块项目来说,反应堆就包括了各个模块之间继承与依赖的关系,从而自动计算出合理的模块构建顺序。

实际的构建顺序是这样形成的:Maven按顺序读取POM,如果该POM没有依赖模块,那么就构建该模块,如果该依赖还依赖于其他模块,则进一步先构建依赖的依赖。形成一个有向非循环图(DAG)。

裁剪反应堆:如果想要构建完整反应堆的某个模块,则需要裁剪。 -am, -amd, -pl, -rf等命令可以实现裁剪。

Maven之聚合与继承相关推荐

  1. maven的聚合和继承详解(2021版)

    前言:日常开发中,两处常见的项目开发场景:多模块项目或者Springboot项目,都会用到Maven的聚合和继承,本篇博客就针对maven这两个技术点进行总结整理,希望能对你有所帮助! 在进入正题之前 ...

  2. Maven的聚合与继承

    (尊重劳动成果,转载请注明出处:https://blog.csdn.net/qq_25827845/article/details/83867717冷血之心的博客) 关注微信公众号(文强的技术小屋), ...

  3. maven依赖,聚合和继承

    一 依赖 为什么要依赖呢?按照MVC分层思想分为dao,service和controller层,如果将这三层分为三个模块,那么service层要调用(既依赖)dao层代码,如下图 user-servi ...

  4. Maven的聚合和继承(六)

    我们使用Maven应用到实际项目的时候,需要将项目分成不同的模块.这个时候,Maven的聚合特性能够把项目的各个模块聚合在一起构件,而Maven的继承特性则能帮助抽取各模块相同的依赖和插件等配置.在简 ...

  5. Maven学习总结(五)——聚合与继承

    2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(五)--聚合与继承 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1. ...

  6. Maven详解之聚合与继承

    Maven详解之聚合与继承 说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各 ...

  7. Maven学习总结(5)——聚合与继承

    2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(五)--聚合与继承 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1. ...

  8. 6.Maven聚合和继承,相关案例配置

     1有时候一个项目中有很多个模块,要想各个模块之间影响较小,可以将每个模块拿出来作为一个项目模块,对每个项目模块进行独立的开发. 2在这些过程中会遇到关于聚合和继承的问题. 3何为聚合? A如果我 ...

  9. java继承eclipse_Java-Maven(七):Eclipse中Maven依赖、聚合、继承特性

    之前通过学习了解,maven集成到eclipse中的如何创建项目,以及maven命令插件在eclipse中安装后的用法.那么接下来我们将会学习一些maven在项目中的一些特性,及如何使用. Maven ...

最新文章

  1. 内存检测工具Dr. Memory的使用
  2. 12个有趣的C语言面试题
  3. 信号与系统实验:用Matlab表示常用连续时间信号
  4. Linux安装MySQL8.0
  5. exe可执行程序及堆栈分配(转载)
  6. Linux rpm命令详解
  7. MFC框架类、文档类、视图类相互访问的方法
  8. 2021-10-14 矩阵求导相关
  9. http抓包实践--(一)--fiddler和http(s)
  10. CSITool的安装过程(参照官方教程进行细节处理)
  11. 京东首推的“SpringBoot+Vue前后端分离全栈项目”牛炸天了?
  12. 如何解决控件附件上传时超大附件无法上传的问题
  13. 导数与微分及简单例题
  14. 在企业中TPM管理如何开展?
  15. java 反编译软件 推荐
  16. Android 仿微信通讯录
  17. IDEA编译输出/控制台改为英文,运行信息报错信息改为英文
  18. 【ubuntu】开机进入initramfs,无法开机
  19. matlab编写拉格朗日插值代码函数
  20. 香港科技大学牵手小i机器人共建认知智能联合实验室

热门文章

  1. php网页采集 修正版
  2. 计算机专业第五批什么意思,2019下半年高中信息技术学科教师资格证面试试题(精选)第五批...
  3. python可以开发app吗-惊呆!那些顶级App居然是用Python开发的
  4. 【思路】2021美国大学生数学建模竞赛(美赛)思路+参考文献获取/【2021美国大学生数学建模】
  5. 拿下18Koffer,黑马老学长分享了4点学习建议!
  6. 金仓数据库KingbaseES运维工具参考手册(5. 辅助运维工具)
  7. C语言程序设计第二版 甘勇, 李烨 , 卢冰
  8. 计算机网络工程方向,计算机网络专业发展方向
  9. CSRF——跨站请求伪造攻击
  10. [生而为人-思考] 沈定刚教授座谈会感悟记录