文章目录
- [一、什么是 Maven 生命周期?](#一、什么是 Maven 生命周期?)
- 二、validate(校验阶段)
- 三、compile(编译阶段)
- 四、test(测试阶段)
- 五、package(打包阶段)
- 六、verify(校验阶段)
- 七、install(安装到本地仓库)
- 八、deploy(发布到远程仓库)
- 九、生命周期执行关系图
- 十、总结
一、什么是 Maven 生命周期?
生命周期(Lifecycle)= 一组有顺序的构建阶段(Phase)
Maven 定义好了一个 固定顺序 的流程:
validate → compile → test → package → verify → install → deploy
核心规则(非常重要)
执行某个阶段时,前面的所有阶段都会被自动执行
例如:
bash
mvn package
等价于:
bash
mvn validate compile test package
二、validate(校验阶段)
1️⃣ 作用
校验项目是否"合法、可构建"
主要做:
- 检查
pom.xml是否正确 - 检查项目结构是否完整
- 检查依赖坐标是否合法
2️⃣ 是否会编译代码?
❌ 不会
❌ 不下载依赖(除非插件需要)
3️⃣ 使用场景
- CI 构建前的快速校验
- 检查 pom 是否写错
bash
mvn validate
三、compile(编译阶段)
1️⃣ 作用
编译主代码(src/main/java)
2️⃣ 实际做的事情
-
下载依赖(scope=compile)
-
使用
maven-compiler-plugin -
输出到:
target/classes
3️⃣ 不做什么?
❌ 不编译测试代码
❌ 不运行测试
4️⃣ 使用场景
bash
mvn compile
- 验证代码能否通过编译
- 开发阶段常用
四、test(测试阶段)
1️⃣ 作用
运行单元测试
2️⃣ 实际流程
- 编译测试代码(
src/test/java) - 使用
maven-surefire-plugin - 执行测试用例
3️⃣ 依赖范围
scope=test的依赖会生效
4️⃣ 常见选项
bash
mvn test
跳过测试:
bash
mvn package -DskipTests
五、package(打包阶段)
1️⃣ 作用
将项目打包成可分发的形式
2️⃣ 常见打包结果
| packaging | 结果 |
|---|---|
| jar | xxx.jar |
| war | xxx.war |
| pom | pom 文件 |
输出目录:
target/
3️⃣ 常见插件
maven-jar-pluginmaven-war-pluginspring-boot-maven-plugin
4️⃣ 使用场景(最常用)
bash
mvn package
六、verify(校验阶段)
1️⃣ 作用(最容易被忽略)
对 package 阶段的结果进行"质量验证"
2️⃣ 通常做什么?
- 集成测试(Integration Test)
- 代码质量检查
- 安全扫描
- 覆盖率校验
3️⃣ 常用插件
maven-failsafe-pluginjacoco-maven-pluginspotbugs
4️⃣ 与 test 的区别 ⭐
| 阶段 | 目的 |
|---|---|
| test | 单元测试 |
| verify | 集成 / 质量 / 合规检查 |
七、install(安装到本地仓库)
1️⃣ 作用
将构建产物安装到本地 Maven 仓库
本地仓库路径:
~/.m2/repository
2️⃣ 意义
- 供 本机其他项目 使用
- 多模块项目内部依赖
3️⃣ 使用场景
bash
mvn install
❗ install ≠ 发布到服务器
它 只对本机生效
八、deploy(发布到远程仓库)
1️⃣ 作用
将构建产物发布到远程仓库
例如:
- Nexus
- Artifactory
- Maven Central
2️⃣ 前置条件
- 配置
distributionManagement - 配置账号凭证(settings.xml)
3️⃣ 使用场景
bash
mvn deploy
👉 一般只在 CI / 发布流程 中使用
九、生命周期执行关系图
validate
↓
compile
↓
test
↓
package
↓
verify
↓
install
↓
deploy
十、总结
| 需求 | 命令 |
|---|---|
| 快速校验 pom | mvn validate |
| 只编译 | mvn compile |
| 运行测试 | mvn test |
| 打包 | mvn package |
| 本地可用 | mvn install |
| 发布仓库 | mvn deploy |
Maven 的默认生命周期由 validate、compile、test、package、verify、install、deploy 组成。
每个阶段都有明确职责,执行某个阶段时,前面的阶段会自动执行。
package 用于生成构建产物,install 将产物安装到本地仓库,deploy 则发布到远程仓库。