Maven学习归纳(五)——继承与聚合实例讲解
一、Maven的继承
1.1 什么是继承?
继承:父工程拆分出很多子工程,可以通过父工程,统一管理依赖的版本
1.2 为什么要使用继承呢?
在A.jar 依赖着——》B.jar依赖着——》 C.jar 的范围内,
如果B.jar是在compile范围内的,则A.jar才依赖于C.jar
这样每次A依赖于B的时候,还得盯着B和其他的jar关系是不是compile
很是麻烦,可不可以有A依赖于B,就有A自然依赖于C???
于是这里就可以使用继承
只要A继承B,不管B是依赖C,D,E还是F。A都可以使用B的所有依赖,不用管compile这个东西
如下例子所示:
先建立一个父类工程B
如下:

需要给父工程写一下依赖,加一层<dependencyManagement></dependencyManagement>
子工程上HelloWrold(设定:没有junit这个包),继承一个父工程B(设定:有junit这个包)

因为是继承,所以B有的,HelloWrold也有的话,有点多余了
所以就注释掉HelloWrold跟B重复的,只要写模块名就有了

父类B可能依赖的太多了,子类HelloWrold没必要用那么多
那么子类HelloWrold就需要声明一下它需要用到哪些父类的依赖,子类声明哪些就用哪些,即时父类用了100个,子类仅要3个都是可以的。
当然,不声明就不给用,但在Effective POM上可以查看到子类已经继承父类所有的 jar了

二、关于聚合
2.1 什么是聚合?
Maven将一个大工程拆分成若干个子工程模块,聚合可以将拆分的多个子工程合起来
2.1 为什么要聚合?
我们最终都要将各个Maven工程安装到仓库中,但是由于存在继承关系使得我们必选先安装父工程才可以安装子工程,否则会报错。
而且必须一个一个的install。那么能不能有一种更好的方式完成一键安装呢?聚合工程就可以完成。
Maven项目能够识别的:自身项目包含,本地仓库的,其他位置就不行
Maven2依赖Maven1,则在执行时,必须先将Maven1加入到本地仓库,之后才能执行Maven2

前置工作的install操作,可以交由“聚合”一次性搞定,没必要手工一个一个把项目ABCDE......install
就是说如果Maven2依赖很多工程,没有必要手动install所有的依赖工程,这样太麻烦
聚合的使用:
在一个总工程中配置聚合:聚合的配置,只能配置在打包方式为pom的MavenAggration工程中
需要在Maven1,Maven2,总工程ManvenAggration的配置文件上加如下:

为了验证这个功能,所以我必须保证我的本地仓库,现在还没有Maven1上传进来。
仅仅靠clean是不能清除掉的,所以要手动删除文件夹

打包看看结果,如图所示:
发现本地仓库新增了三个项目,这就是聚合的效果


Maven学习归纳(五)——继承与聚合实例讲解的更多相关文章
- (转)Maven学习总结(五)——聚合与继承
孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(五)——聚合与继承 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 1 <mod ...
- Maven学习总结(5)——聚合与继承
Maven学习总结(五)--聚合与继承 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 <modules> <module> ...
- Maven学习(五)-- 聚合与继承
标签(空格分隔): 学习笔记 Maven的聚合特性能够把项目的各个模块聚合在一起构建: Maven的继承特性能够帮助抽取各模块相同的依赖和插件等配置,在简化POM的同时,还能够促进各个模块配置的一致性 ...
- Maven学习总结(五)——聚合与继承
一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 <modules> <module>模块一</module> & ...
- 转】Maven学习总结(五)——聚合与继承
原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4058008.html 感谢! 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1. ...
- maven之详解继承与聚合
说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各类用户对软件的要求越来越高, ...
- Maven学习小结(五 pom.xml详解[转])
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- 【maven】依赖、继承、聚合
依赖: <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId&g ...
- maven学习(五)插件和自定义插件
插件是可以配置在settings.xml和pom.xml中的 插件目标: 在了解插件和生命周期的绑定关系之前,先来说一下插件目标.在实际项目构建的过程中,需要经历编译.打包等等许许多多的操作,为每个操 ...
随机推荐
- Java +支付宝 +接入+最全+最佳-实战-demo
一.支付宝配置: 1.需要在支付宝商户平台购买支付的产品并开通支付. 2.购买支付产品登录支付宝:https://auth.alipay.com/login/index.htm 3.登录之后首页点击查 ...
- 邻域保持嵌入(NPE)
传统的线性降维方法,如主成分分析(PCA).因子分析(FA)等,关注的是样本的方差,能学习线性流形的结构,却无法学习非线性流形.而经典的流形学习方法虽然能够学习非线性流形结构,但由于本身属于直推学习, ...
- 大厂面试Kafka,一定会问到的幂等性
01 幂等性如此重要 Kafka作为分布式MQ,大量用于分布式系统中,如消息推送系统.业务平台系统(如结算平台),就拿结算来说,业务方作为上游把数据打到结算平台,如果一份数据被计算.处理了多次,产生的 ...
- mongoDB的CRUD的总结
今天开始接触非关系型数据库的mongoDB,现在将自己做的笔记发出来,供大家参考,也便于自己以后忘记了可以查看. 首先,mongoDB,是一种数据库,但是又区别与mysql,sqlserver.orc ...
- 一文了解:Redis的AOF持久化
Redis的AOF持久化 每当Redis-Server接收到写数据时,就把命令以文本形式追加到AOF文件里,当重启Redis服务时,AOF文件里的命令会被重新执行一次,重新恢复数据.当AOF过大时将重 ...
- 爬虫之爬取电影天堂(request)
#需要通过代码打开https://www.dytt8.net/网站,拿到网站内容 from urllib.request import urlopen #拿到urlopen import re con ...
- Django-用户-组-权限
前言 RBAC(Role-Based Access Control,基于角色的访问控制)就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角 ...
- NN入门,手把手教你用Numpy手撕NN(一)
前言 这是一篇包含极少数学推导的NN入门文章 大概从今年4月份起就想着学一学NN,但是无奈平时时间不多,而且空闲时间都拿去做比赛或是看动漫去了,所以一拖再拖,直到这8月份才正式开始NN的学习. 这篇文 ...
- 企查查app 初步探索
企查查app sign算法破解初步探索 之前有说过企查查的sign的解密,但这次是企查查app的sign算法破解,目前是初步进程. 已删除!!!! 上边一些变量已经找到了,其中就有时间戳,其余两个需要 ...
- Docker学习总结(五)--迁移与备份
将容器保存为镜像 docker commit myNginx mynginx_i 镜像备份 docker save -o myNginx.tar myNginx_i 镜像恢复 docker load ...