Maven是一个项目管理和构建工具
作用 / 好处
- 统一项目结构:提供标准、统一的项目结构
- 项目构建:Maven 使用生命周期和目标的概念来自动化构建过程,这意味着常见的构建任务如编译、测试、打包、部署等都可以通过简单的命令来完成。
- 依赖管理:Maven 提供了一种强大的依赖管理机制,可以自动下载项目所需的库,并解决依赖之间的版本冲突,确保项目使用正确的库版本。
项目结构
生命周期
上图为maven生命周期中常用的命令。
maven有三套生命周期,每套生命周期包含一些阶段,也就是上面的命令,命令都是有顺序的,后面的命令依赖于前面的命令。
但是每套生命周期相互独立,比如执行package命令,compile和test会先执行,而clean不会执行,因为不属于同一套。
- 一套用于清理项目,移除之前构建产生的文件,确保构建的干净性,clean属于此套。
- 一套用于构建和打包项目,属于核心命令,圈住的除了clean,其余都属于此套。
- 一套用于生成项目站点文档,通常用于发布项目文档和报告
依赖管理
所谓依赖管理,就是项目中会用到很多jar包,在maven中存在依赖的传递,简化项目的构建过程,同时maven也解决了依赖冲突的问题。
依赖传递:A依赖了B,B依赖了C,C依赖了D,当引入A依赖后,BCD也引入进来了。
依赖冲突:比如一个项目同时依赖库 A 的版本 1.0 和版本 2.0,也就是说1和2都引入进来了,而这两个版本之间有不兼容的地方。
maven项目在pom.xml中通过dependency标签引入jar包。
在此标签中需要声明三个要素:groupId、artifactId、version。依赖的坐标信息,可以到 https://mvnrepository.com/ 中搜索
仓库:用于存储资源,管理各种jar包。
- 本地仓库:自己计算机上的一个目录。
- 中央仓库:由Maven团队维护的全球唯一的。 仓库地址:https://repo1.maven.org/maven2/
- 远程仓库(私服):一般由公司团队搭建的私有仓库。
jar包在maven本地仓库是按照三层目录结构存放的,如下图: