1.depdendencyManagement||pluginManagement

84033
场景:
父模块声明了server-jar 1.0版本,子模块继承父类,此时子模块不需要声明该依赖自动继承。

但是如果我多个模块都把需要得jar声明到父类,有一些子模块原本不需要得jar也继承过来了,导致打包慢,项目臃肿,此时怎么办呢?
声明到父类depdendencyManagement 统一管理depdendency,此时不会强制继承,子模块需要依赖则声明depdendency 但是不需要声明版本,父类depdendencyManagement 统一管理了版本号。
插件pluginManagement 同理。

2.前文回顾

maven就这几块东西,依赖 仓库 生命周期

当然maven有一些实战场景都没有讲,这些东西不是一篇博客能讲清楚得 ,需要去实战如常用得,

1.基于nexus搭建一套maven仓库私服
2.基于maven artchetype 为团队统一创建脚手架
3.基于资源过滤+profile功能自动适配各个发布环境

3.仓库

  1. 关于前面仓库文章没讲到的,maven 配置文件settings.xml
  2. 里面如镜像仓库配置,配置私服 maven pom.xml
  3. maven pom.xml 配置 上传jar包到私服

这些东西都需要建立

1.基于nexus搭建一套maven仓库私服

4.生命周期

如图
image.png

我们可以把clean 叫做一个phase,也可以叫做一个阶段,这个阶段会执行几个goal,这个goal我们可以叫做功能。此时我们可以认为一个阶段绑定了多个功能
比如 执行 mvn clean 这个phase 此时他会做几件事

  1. 执行pre-clean goal, 标记垃圾
  2. 执行clean goal,清除垃圾
  3. 执行 post-clean goal ,清除之后干什么 然后结束

此时再次执行,mvn install ,他会执行阶段 clean -> validate ->compile->test ->package….> install 结束
简单讲 清理,验证,编译,单元测试,打包到本地目录,把包安装到本地仓库

mvn deploy

执行 site ->打包到远程仓库 结束。

5.插件

插件,就是基于生命周期开发了多个goal功能 把他们绑定到,phase阶段统一执行。可以简单理解为生命周期就是一堆方法,但是方法里面没有写代码,插件就是写好了代码绑定到方法里面。

至于插件怎么配置,不同插件配置方法不一样,因为功能都是定制化得所有, 需要到maven官方查看。

牛逼得插件有哪些推荐?

  1. 基于cargo对web服务进行自动化部署
  2. 基于jetty插件在本地启动web服务进行功能测试
  3. 基于surefire插件运行单元测试以及输出覆盖率报告

6.结束

maven篇就此结束