011.maven 继承与聚合
聚合:对于聚合模块来说,它知道有哪些被聚合的模块,而对于被聚合的模块来说,它们不知道被谁聚合了,也不知道它的存在;
继承:对于继承关系的父POM来说,它不知道自己被哪些子模块继承了,对于子POM来说,它必须知道自己的父POM是谁;
在一些最佳实践中我们会发现:一个POM既是聚合POM,又是父POM,这么做主要是为了方便。
一、继承
为了避免重复。通过继承拥有Parent项目中的配置。
https://www.cnblogs.com/xdp-gacl/p/4058008.html
<!--子工程POM 继承父工程-->
<parent>
<artifactId>父artifactId</artifactId>
<groupId>父groupId</groupId>
<version>父version</version>
<relativePath>父pom.xml的相对路径</relativePath>
</parent>
二、聚合
主要为了快速构建项目,可以一次构建所有子模块。
https://www.cnblogs.com/xdp-gacl/p/4058008.html
//聚合工程 POM (module的值为子模块项目目录相对于聚合工程POM的路径)
<modules>
<module>子artifactId01</module>
<module>子artifactId02</module>
</modules>
三、解决多个子模块依赖某个子模块的版本统一的问题
如果一个项目有多个子模块,而且每个模块都需要引入依赖,但为了项目的正确运行,必须让所有的子项目(以下子项目即指子模块)使用依赖项的版本统一,才能保证测试的和发布的是相同的结果。
Maven 使用 dependencyManagement 来统一模块间的依赖版本问题。
子模块中引用一个依赖而不用显式列出版本号,Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在dependencyManagement元素中指定的版本号。
// 聚合工程 (同时也是父工程)
// 以下两个 子模块依赖的 javaee-api 版本均为 ${javaee-api.version}
<groupId>父groupId</groupId>
<artifactId>父artifactId</artifactId>
<version>父version</version>
<packaging>pom</packaging> <modules>
<module>子artifactId01</module>
<module>子artifactId02</module>
</modules> <dependencyManagement>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>${javaee-api.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
// 子模块01 <!--继承父工程-->
<parent>
<artifactId>父artifactId</artifactId>
<groupId>父groupId</groupId>
<version>父version</version>
<relativePath>父pom.xml的相对路径</relativePath>
</parent> <groupId>子groupId01</groupId>
<artifactId>子artifactId01</artifactId>
<packaging>jar</packaging> <!--依赖关系-->
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
</dependency>
</dependencies>
// 子模块02 <!--继承父工程-->
<parent>
<artifactId>父artifactId</artifactId>
<groupId>父groupId</groupId>
<version>父version</version>
<relativePath>父pom.xml的相对路径</relativePath>
</parent> <groupId>子groupId02</groupId>
<artifactId>子artifactId02</artifactId>
<packaging>jar</packaging> <!--依赖关系-->
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
</dependency>
</dependencies>
https://blog.csdn.net/qq_39940205/article/details/80307795
- dependencyManagement 特性
https://blog.csdn.net/wanghantong/article/details/36427411
在dependencyManagement中配置的元素既不会给parent引入依赖,也不会给它的子模块引入依赖,仅仅是它的配置是可继承的
011.maven 继承与聚合的更多相关文章
- Maven——继承和聚合
实际项目中,可能正要构建一个大型的系统,但又不想一遍又一遍的重复同样的依赖元素,这种情况是经常出现的.不过还好,maven提供了继承机制,项目可以通过parent元素使用继承,可以避免这种重复.当一个 ...
- Java-Maven(七):Eclipse中Maven依赖、聚合、继承特性
之前通过学习了解,maven集成到eclipse中的如何创建项目,以及maven命令插件在eclipse中安装后的用法.那么接下来我们将会学习一些maven在项目中的一些特性,及如何使用. Maven ...
- maven项目的聚合与继承
maven项目的聚合与继承: 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 1 <modules> 2 <module>模 ...
- maven 继承关系和聚合
maven继承管理 让版本的管理只在一个地方改变 modules用于聚合,把执行的项目都放到同一的地方用module包括,可以省去一个个项目去mvn install,这样可以所有项目一次聚合 mvn ...
- Maven的继承和聚合
Maven的继承和聚合子项目的pom文件里通过<parent>节点来继承父项目 <parent> <groupId>com.tykj</groupId> ...
- maven pom继承与聚合
一.POM聚合模块: 在分布式架构,分模块化开发中,每个某块可能都是一个单独的maven项目,能够独立的进行项目构架,当模块比较多时,可以使用maven聚合聚合项目来简化maven构建,一次构建多个项 ...
- maven中的继承和聚合的关系
maven中的继承和聚合的关系:两者的目的是不一样的,聚合的目的是能够快速的构建项目,继承的目的是减少重复配置.聚合:定义一个聚合模块,然后在pom文件中添加<module></mo ...
- pom.xml的继承、聚合与依赖
原文地址:https://my.oschina.net/zh119893/blog/232896 6.1 简介 pom.xml文件是Maven进行工作的主要配置文件.在这个文件中我们可以配置M ...
- pom文件继承与聚合
1.简介 pom.xml文件是Maven进行工作的主要配置文件.在这个文件中我们可以配置Maven项目的groupId.artifactId和version等Maven项目必须的元素:可以配置Mave ...
随机推荐
- docker容器跨服务器的迁移的方法
docker的备份方式有export和save两种. export是当前的状态,针对的是容器,docker save 是针对镜像images. export 找出要备份容器的ID ? 1 2 3 [r ...
- tornado基础
一.初识tornado 1.什么是tornado 全称Tornado Web Server,是一种Web服务器软件的开源版本. 2.特点 作为Web框架,它是一个轻量级的Web框架,类似于另一个Pyt ...
- Mysql类
架构层面可以采用读写分离,主从复制等等,在数据库前端加cache,如memcache,用于用户登录,商品查询 1.mysql优化的原则是什么? 答: 1.mysql的优化首先要从设计表的过程中 ...
- 6、zabbix自定义监控
一.概述 为什么需要自定义监控呢? 虽然zabbix已经给我们准备好了很多的模板,但是有的东西还是无法监控,这时候就要我们自定义监控了. 自定义监控的思路? 比如我们现在想要监控这个值,如下所示,模板 ...
- day77_10_24分页器
一.偏移分页器. 在偏移分页器中,limit代表的是一次性显示的条数,而offset代表的是他基于开头的偏移量. from rest_framework.pagination import Limit ...
- ASP.NET开发实战——(十)ASP.NET MVC 与数据库之MySQL&EF
之前介绍EF时介绍了provider这个配置项,而且也介绍了在ASP.NET访问MySQL数据仍然是通过ADO.NET,不同的地方仅仅是更换了MySQL的数据提供器,那么在EF中是否也只需更换“提供器 ...
- BDFramework.Core 学习
x哥(懂的都懂)的框架, 拿点代码过来做注释. 想了解详情可以去他的github https://github.com/yimengfan/BDFramework.Core # Object file ...
- PHP常用数字函数以及排序函数
一:数字函数 .ceil() 进一取整 示例:ceil(0.9) 结果为1 .abs() 绝对值 示例:abs(-1) 结果为1 .rand() 随机数 示例:rand(1. 100) 1到100 以 ...
- AChartEngine折线图实例
最近做项目要用到图表,在网上找相关的解决方案找了很久,搜到最多的就是这个框架,所以就开始研究下怎么使用,首先研究的就是折线图,如是做了一个实例. AChartEngine下载地址:http://cod ...
- 物联网架构成长之路(40)-Bladex开发框架入门
0. 前言 前一小节,讲了如何入门,这里就简单讲一下如何自定义查询和权限控制配置. 1. 配置多租户 如果要启用该表的多租户功能,需要在application.yml 这里配置. 2. 配置模糊匹配 ...