Pom文件
Super Pom
pom文件是可以继承的,达到高效复用
占位符
- 通过version占位符,可以统一管理相同框架下的jar包
- 可以在子pom里修改父pom的配置
Profile扩展
用途:针对不同的环境提供不同的配置文件
Maven Scope
- compile:用于所有阶段,会随着项目一起发布
- runtime:只在运行时使用,
- provided:JDK,容器提供的依赖
- test:只在测试时使用,用于编译和运行测试代码,不会随项目发布
- import:仅仅用来导入依赖
Jar包版本的使用与维护
- 版本定义
<主版本>.<次版本>.<增量版本>-<里程碑版本>- <主版本>:重大架构变更
- <次版本>:较大范围的功能增加和变化
- <增量版本>:日常bug修复或者小需求发布
- 快照版本
- 为了不频繁的修改version
- maven在编译时,会按照一定策略拉去最新的快照版本
- 不稳定,不能用于线上
依赖冲突
原因:依赖的传递性
解决方案
- 最短路径优先
- 第一声明优先
版本冲突
- 尽量使用更高版本
- 尽量使用已知最稳定版本
- 不要exclude,除非理由充分
Duplicated classes
- exclude 某个jar包
生命周期和插件
生命周期概述
maven的生命周期是对所有构建过程的抽象和统一
- clean 主要完成清理工作
- pre-clean
- clean
- post-clean
- default 包括核心构建工作
- compile
- test
- package
- install
- deploy
- site 建立项目站点
- pre-site
- site
- post-site
- site-deploy
插件机制
- Maven是一个 微内核 的框架,主要通过插件来完成核心功能
- 每个插件可以支持多个功能,通过goal来表达
插件工具
- dependency:依赖分析
- versions:版本管理
- help:maven基础功能
- archetype:maven项目架构
- idea:生成idea配置
- eclipse:生成eclipse配置
- tomcat:tomcat Web容器
- jetly:jetly Wed容器