用于管理和构建Java项目的工具,基于项目对象模型(POM)的项目,通过一小段描述信息来管理项目的构建、报告和文档
功能
- 提供了一套标准化的项目结构
- 提供了一套标准化的构建流程
- 提供了一套依赖管理机制
仓库
- 本地仓库: 自己计算机上的一个目录
- 中央仓库: 由
Maven
团队维护的全球唯一的仓库 - 远程仓库: 一般由公司团队搭建的私有仓库
常用命令
compile
: 编译clean
: 清理package
: 打包,Java
程序打包成jar
,web
项目打包成war
test
: 测试,会执行test
文件夹下的test
代码install
: 下载jar
包
生命周期
clean
: 清理工作default
: 核心工作,例如编译、测试、打包、安装site
: 产生报告,发布站点等
坐标
Maven中的坐标是资源的唯一标识,使用坐标来定义项目或引入项目中需要的依赖
坐标的主要组成
groupid
: 定义当前Maven
项目隶属组织名称(通常是域名反写,例如: work.xlrong)artifactid
: 定义当前Maven
项目名称(通常是模块名称,例如 goods-service)version
: 定义当前项目的版本号
Maven进阶
分模块开发
- 创建模块
- 书写模块
- install,将包部署到本地仓库
- 导入本地坐标
依赖传递
依赖具有传递性
- 直接依赖: 在当前项目中通过依赖配置建立的依赖关系
- 间接依赖: 被引用的资源如果依赖其他资源,当前项目间接依赖其他资源
依赖传递冲突问题
- 路径优先: 当依赖中出现相同的资源时,层级越深,优先级越低,层次越浅,优先级越高
- 声明优先: 当资源中相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
- 特殊优先: 当同级配置了相同资源的不同版本,后配置的覆盖先配置的
可选依赖
可选依赖是隐藏当前工程所依赖的资源,隐藏后对应资源将不具有依赖
<optional>false</optional>
排除依赖
排除依赖是隐藏当前资源对应的依赖关系
<exclusions>
<exclusion>
</exclusion>
</exclusions>
聚合与继承
聚合
- 聚合工程的打包方式:
pom
- 设置挂管理的模块名称:
<modules>
<module>../模块名</module>
</modules>
继承
继承描述的是两个工程之间的关系,与Java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
作用
- 简化配置
- 减少版本冲突
继承
继承描述的是两个工程之间的关系,与Java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
作用
- 简化配置
- 减少版本冲突