一、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学习归纳(五)——继承与聚合实例讲解的更多相关文章

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

    孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(五)——聚合与继承 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 1 <mod ...

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

    Maven学习总结(五)--聚合与继承 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 <modules> <module> ...

  3. Maven学习(五)-- 聚合与继承

    标签(空格分隔): 学习笔记 Maven的聚合特性能够把项目的各个模块聚合在一起构建: Maven的继承特性能够帮助抽取各模块相同的依赖和插件等配置,在简化POM的同时,还能够促进各个模块配置的一致性 ...

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

    一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 <modules> <module>模块一</module> & ...

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

    原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4058008.html 感谢! 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1. ...

  6. maven之详解继承与聚合

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

  7. Maven学习小结(五 pom.xml详解[转])

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  8. 【maven】依赖、继承、聚合

    依赖: <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId&g ...

  9. maven学习(五)插件和自定义插件

    插件是可以配置在settings.xml和pom.xml中的 插件目标: 在了解插件和生命周期的绑定关系之前,先来说一下插件目标.在实际项目构建的过程中,需要经历编译.打包等等许许多多的操作,为每个操 ...

随机推荐

  1. Spring系列(一):Spring核心概念

    一.Spring概念 Spring是一种多层的J2EE应用程序框架,其核心就是管理资源组件以及依赖关系,Spring框架为现代基于java的企业应用程序提供了一个全面的编程和配置模型. 二.Sprin ...

  2. SprintBoot

    简述 推出时间:从Maven仓库的时间看是2016.7.28 目的:摆脱大量的XML配置文件以及复杂的Bean依赖关系,快速.敏捷地开发新一代基于Spring框架的应用程序 思想:约定优于配置(con ...

  3. js学习之数据类型

    js学习之数据类型 基础类型:number string boolean null undefined 引用类型:object array function undefined值是派生自null值的( ...

  4. Java 安全之:csrf攻击总结

    最近在维护一些老项目,调试时发现请求屡屡被拒绝,仔细看了一下项目的源码,发现有csrf token校验,借这个机会把csrf攻击学习了一下,总结成文.本文主要总结什么是csrf攻击以及有哪些方法来防范 ...

  5. SpringBoot:Mybatis + Druid 数据访问

    西部开源-秦疆老师:基于SpringBoot 2.1.7 的博客教程 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! 简介 对于数据访问层 ...

  6. Kubernetes 服务发现

    目录 什么是服务发现? 环境变量 DNS 服务 Linux 中 DNS 查询原理 Kubernetes 中 DNS 查询原理 调试 DNS 服务 存根域及上游 DNS 什么是服务发现? 服务发现就是一 ...

  7. windows--OSError: [Errno 22] Invalid argument: '\u202aE:/desk/Desktop/test.txt' 读取文件的坑

    准备打开文件时,报了如下错误: 在路径中出现了这个Unicode 202a字符,导致了这个错误. 这玩意是哪里来的? 复制windows文件属性的时候复制下图中的路径而来的. 解释: 这个字符的含义是 ...

  8. 2014-09~11Removeapp配置篇

    金蝶ERP软件  Windows REMOVEAPP 功能需求:将服务器端金蝶客户端软件直接在本地实现,只需输入服务器密码即可启动该软件 配置需求:可用的金蝶软件,SERVER2008 或更高(必须激 ...

  9. 用Python写了个下载快手视频的小脚本

    最近又重新拾起了,对python的热情. 贴个地址: https://github.com/d1y/lovepack/blob/master/kuaishou.py 前戏说明 因为我近乎癫狂的喜欢一个 ...

  10. vue-cli+vue 2.0+element-ui+vue-router+echarts.js开发后台管理系统项目教程

    一.首先使用npm创建vue项目框架: 1.安装vue-cli:    $ npm install --global vue-cli 2.初始化项目:$ npm init webpack  项目名 3 ...