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.仓库
- 关于前面仓库文章没讲到的,maven 配置文件settings.xml
- 里面如镜像仓库配置,配置私服 maven pom.xml
- maven pom.xml 配置 上传jar包到私服
这些东西都需要建立
1.基于nexus搭建一套maven仓库私服
4.生命周期
如图
我们可以把clean 叫做一个phase,也可以叫做一个阶段,这个阶段会执行几个goal,这个goal我们可以叫做功能。此时我们可以认为一个阶段绑定了多个功能
比如 执行 mvn clean 这个phase 此时他会做几件事
- 执行pre-clean goal, 标记垃圾
- 执行clean goal,清除垃圾
- 执行 post-clean goal ,清除之后干什么 然后结束
此时再次执行,mvn install ,他会执行阶段 clean -> validate ->compile->test ->package….> install 结束
简单讲 清理,验证,编译,单元测试,打包到本地目录,把包安装到本地仓库
mvn deploy
执行 site ->打包到远程仓库 结束。
5.插件
插件,就是基于生命周期开发了多个goal功能 把他们绑定到,phase阶段统一执行。可以简单理解为生命周期就是一堆方法,但是方法里面没有写代码,插件就是写好了代码绑定到方法里面。
至于插件怎么配置,不同插件配置方法不一样,因为功能都是定制化得所有, 需要到maven官方查看。
牛逼得插件有哪些推荐?
- 基于cargo对web服务进行自动化部署
- 基于jetty插件在本地启动web服务进行功能测试
- 基于surefire插件运行单元测试以及输出覆盖率报告
6.结束
maven篇就此结束
