[Maven]
基础
Maven本质是项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM—Project Object Model)
仓库
用于储存资源,包括各种jar包
本地仓库:位于本地,连接远程仓库获取资源。
远程仓库(包括中央仓库和私服):为本地仓库提供资源
私服作用:保护具有版权的资源,包括购买和自主研发的jar(中央仓库为开源),只在一定范围内共享
坐标
描述仓库中资源的位置
坐标组成
groupId:定义当前Maven项目隶属组织名称(通常是域名反写)
artifactId:定义当前Maven项目名称(通常是模块名称)
version:定义当前项目版本号
packaging:定义项目的打包方式
坐标作用
使用唯一标识,定位资源位置
依赖管理
依赖配置
1 | <dependencise> |
依赖传递
直接依赖:在当前项目通过配置建立
间接依赖:资源间接依赖(依赖的依赖)
冲突问题
路径优先:层级越深,优先度越低
声明优先:在同级时,按配置顺序
特殊优先:后配置的覆盖先配置的
可选依赖
1 | <optional>true</optional> |
排除依赖
1 | <dependency> |
依赖范围
jar默认可以在任何时间使用,即compile
1 | <dependency> |
依赖范围的传递性
- 该表格表示间接依赖的作用范围
- web01依赖web02,作用范围是compile
- web02依赖junit,作用范围是runtime
- 则此时junit在web01中范围是runtime
声明周期
maven对项目构建的生命周期划分为3个阶段
- clean:清理工作
- default:核心工作,例如编译,测试,打包,部署等等
- site:产生报告,发布站点等等
插件
添加插件和添加tomcat类似
build标签->plugins标签->plugin标签->插件内容
- 插件与生命周期内的阶段绑定,相应的生命周期执行相应的插件
- 默认都有预设的功能
- 通过插件可以自定义更多的插件
1 | <build> |
自定义插件作用周期
- 使用execution标签
1 | <plugin> <groupId>org.apache.maven.plugins</groupId> |
高级
聚合
作用
用于快速构建maven工程,一次构建多个项目模块
制作方式
创建一个空模块,打包类型定位为pom
定义当前模块进行构建操作时关联的其他模块名称
1 | <modules> |
继承
作用
通过继承可以实现在子工程中沿用父工程中的配置
maven中的继承与java中的继承相似,在子工程中配置继承关系
制作方式
在子工程中声明其父工程坐标与对应的位置
1 | <parnt> |
在父工程中定义依赖管理,在子工程中定义依赖关系,无需声明依赖版本,参照父工程
继承的资源
自定义属性
作用
等同于自动变量,方便统一维护
1 | <!--定义自定义属性--> |
多环境配置
加载指定环境:mvn 指令 -p 环境定义id
私服
仓库分类
宿主仓库hosted
保存无法从重要仓库获取的资源
自主研发
第三方非开源项目
代理仓库proxy
代理远程仓库,通过nexus访问其他公共仓库
仓库组group
将若干个仓库组成一个群组,仓库组不能保存配置,属于设计型仓库