maven 是一款强大的项目管理与构建工具,在 Java 开发中尤为常用,结合这张图,从核心功能、仓库体系、工作流程三方面快速了解:
一、核心作用
- 项目构建:自动完成编译、测试、打包、部署等流程(比如把
.java
编译成.class
、打成jar
/war
包 )。 - 依赖管理:帮你 “自动找 jar 包”,不用手动下载、复制粘贴,通过简单配置就能引入框架(如 Spring、MyBatis )。
二、仓库体系(重点)
Maven 用三级仓库管理 jar 包,流程像 “接力赛”:
- 本地仓库(蓝色):你电脑里的一个文件夹(比如
C:\Users\用户名\.m2\repository
),存下载好的 jar 包,优先查找,避免重复下载。 - 远程仓库(私服)(绿色):公司 / 团队自己搭的私有仓库(可选),用于存内部框架、公共组件,团队协作时用。
- 中央仓库(粉色):Maven 官方维护的 “全球仓库”,包含几乎所有开源 jar 包,本地和私服没有时,会从这下载。
三、工作流程(依赖查找逻辑)
当你在项目里通过 pom.xml
引入一个依赖(比如 Spring
),Maven 会按以下顺序找 jar 包:
- 先看本地仓库有没有 → 有就直接用。
- 没有的话,看公司有没有远程仓库(私服) → 有就从私服下载到本地。
- 还没有,就去中央仓库下载 → 下完存本地,下次直接用。
四、为什么用 Maven?
- 省心:不用手动管理 jar 包,一行配置自动下载。
- 规范:统一项目结构、构建流程,团队协作不 “打架”。
- 高效:一次下载,本地仓库复用,多人开发共享依赖。
简单说,Maven 是 Java 项目的 “管家”,用仓库体系帮你自动管依赖、管构建,让开发更专注写代码~
这张图聚焦 Maven 生命周期,是理解 Maven 构建流程的核心。以下用 “盖房子” 类比,拆解 Maven 核心逻辑:
一、核心概念:Maven 生命周期是 “构建流程的阶段组合”
Maven 把项目构建(从代码到可运行产物)拆成 3 套 “流程模板”(生命周期),每套模板包含多个阶段(Phase),类似 “盖房子分奠基→砌墙→装修” 的流程。
二、3 套生命周期详解(类比 “盖房子流程”)
1. clean 生命周期:“拆房子”(清理旧产物)
- 作用:删除上一次构建的残留文件(如
target
目录),为新构建 “腾地方”。 - 阶段:
pre-clean
:准备清理(极少手动用,Maven 自动触发前置逻辑)。clean
:执行清理(删除target
目录)。post-clean
:清理后收尾(同理,极少手动用)。
类比:拆房子前先断水断电(pre-clean
)→ 拆房子(clean
)→ 清理建筑垃圾(post-clean
)。
2. default 生命周期:“盖房子核心流程”(编译→测试→打包→部署)
- 作用:项目构建的核心流程,从源码到可运行产物的完整步骤。
- 阶段(重点,日常开发常用):
compile
:编译代码(把.java
转成.class
)。test
:运行单元测试(确保代码逻辑正确)。package
:打包(生成 Jar/War 包,类似 “把房子装修好封装”)。install
:安装到本地仓库(把 Jar 包存到本地 Maven 仓库,供其他项目引用)。
类比:
compile
→ 打地基、砌墙(把设计图转成实体结构)。
test
→ 验收(检查墙砌得直不直、水电通不通)。
package
→ 装修(给房子做最终包装,具备交付条件)。
install
→ 把房子登记到 “本地房产库”(方便其他项目 / 人引用)。
3. site 生命周期:“做房产证 / 说明书”(生成项目报告)
- 作用:生成项目文档、报告(如 API 文档、测试覆盖率报告)。
- 阶段:
pre-site
:准备生成报告(自动触发前置逻辑)。site
:生成报告(如 HTML 格式的项目文档)。post-site
:报告生成后处理(极少手动用)。
类比:给房子办房产证、拍宣传照(生成文档 / 报告),方便别人了解项目。
三、关键规则:“执行后边阶段,自动触发前边所有阶段”
同一生命周期内,执行某个阶段时,Maven 会自动执行它之前的所有阶段。
比如:
- 执行
mvn package
(属于 default 生命周期),Maven 会自动先执行compile
→test
→ 再执行package
。 - 执行
mvn install
,会自动执行compile
→test
→package
→install
。
四、总结:Maven 生命周期是 “标准化的构建流程”
Maven 通过 3 套生命周期,把项目构建拆成清晰的阶段,让构建流程标准化、自动化:
clean
负责 “清理旧产物”,default
负责 “核心构建流程”(从编译到部署),site
负责 “生成项目文档”。
执行命令时,Maven 会自动串联同一生命周期的阶段,让开发者只需关注 “要达到的目标”(如 package
或 install
),无需手动执行每个步骤。这就是 Maven 提升效率的核心逻辑~