Maven 构建生命周期
Maven 构建生命周期(Build Lifecycle)完全解析
一句话总结:
Maven 的构建过程是标准化的、可预测的、一条命令自动执行多个阶段。
一、Maven 三大生命周期(独立运行)
| 生命周期 | 作用 | 典型命令 |
|---|---|---|
| default | 核心构建:编译 → 测试 → 打包 → 部署 | mvn package |
| clean | 清理项目:删除 target/ 目录 | mvn clean |
| site | 生成文档:项目报告、Javadoc、测试覆盖率 | mvn site |
重点:
default是最常用的生命周期!
二、default 生命周期(23 个阶段)
validate
├── generate-sources
├── process-sources
├── generate-resources
├── process-resources
├── compile
├── process-classes
├── generate-test-sources
├── process-test-sources
├── generate-test-resources
├── process-test-resources
├── test-compile
├── process-test-classes
├── test
├── prepare-package
├── package
├── pre-integration-test
├── integration-test
├── post-integration-test
├── verify
├── install
└── deploy
运行
mvn package会自动执行从validate到package的所有阶段!
三、常用阶段详解(你必须知道的 8 个)
| 阶段 | 命令 | 作用 | 输出目录 |
|---|---|---|---|
validate | — | 验证项目配置是否正确 | — |
compile | mvn compile | 编译主代码 | target/classes |
test | mvn test | 运行单元测试 | target/test-classes |
package | mvn package | 打包成 JAR/WAR | target/xxx.jar |
verify | mvn verify | 运行集成测试 | — |
install | mvn install | 安装到本地仓库 | ~/.m2/repository/... |
deploy | mvn deploy | 发布到远程仓库 | Nexus / Artifactory |
clean | mvn clean | 删除 target/ 目录 | — |
四、执行流程图(一图胜千言)
graph TD
A[validate] --> B[compile]
B --> C[test]
C --> D[package]
D --> E[verify]
E --> F[install]
F --> G[deploy]
H[clean] --> I[删除 target/]
J[site] --> K[生成 reports/]
五、实际命令演示
# 1. 清理 + 编译 + 测试 + 打包
mvn clean package
# 2. 只编译
mvn compile
# 3. 跳过测试打包
mvn package -DskipTests
# 4. 跳过测试 + 编译检查
mvn package -Dmaven.test.skip=true
# 5. 安装到本地仓库
mvn install
# 6. 查看当前阶段
mvn help:effective-pom
六、阶段与插件绑定(核心机制)
每个阶段都由插件(plugin)的目标(goal)执行
| 阶段 | 绑定插件 | 目标(goal) |
|---|---|---|
compile | maven-compiler-plugin | compile |
test | maven-surefire-plugin | test |
package | maven-jar-plugin | jar |
install | maven-install-plugin | install |
deploy | maven-deploy-plugin | deploy |
自定义绑定示例(在 pom.xml 中):
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.5</version>
<configuration>
<skipTests>false</skipTests> <!-- 强制运行测试 -->
</configuration>
</plugin>
</plugins>
</build>
七、生命周期执行顺序(重要!)
mvn install
等价于执行:
validate
→ compile
→ test
→ package
→ verify
→ install
你永远不需要手动运行前面的阶段!
八、clean + default 组合(最常用)
mvn clean install
执行顺序:
clean生命周期 → 删除target/default生命周期 → 到install阶段
九、site 生命周期(生成项目报告)
mvn site
生成目录:target/site/
index.html- Javadoc
- 测试报告
- 依赖分析
部署站点:
mvn site-deploy
十、生命周期总结表
| 命令 | 执行阶段 | 是否删除 target | 是否运行测试 |
|---|---|---|---|
mvn compile | 到 compile | No | No |
mvn test | 到 test | No | Yes |
mvn package | 到 package | No | Yes |
mvn install | 到 install | No | Yes |
mvn clean package | clean + 到 package | Yes | Yes |
mvn clean install -DskipTests | clean + 到 install | Yes | No |
十一、高级技巧
1. 查看生命周期执行过程
mvn clean package -X
2. 自定义阶段绑定
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals><goal>java</goal></goals>
<configuration>
<mainClass>com.example.App</mainClass>
</configuration>
</execution>
</executions>
</plugin>
3. 跳过特定插件
mvn package -Dmaven.main.skip -Dmaven.test.skip
十二、一句话记住
“一条命令,自动完成从编译到部署的全部阶段”
十三、实战建议
| 场景 | 推荐命令 |
|---|---|
| 本地开发 | mvn compile |
| 提交前检查 | mvn clean test |
| 打包发布 | mvn clean package |
| 发布到仓库 | mvn clean deploy |
| CI/CD | mvn clean verify |
恭喜!你已掌握 Maven 构建生命周期!
下一步推荐
| 方向 | 内容 |
|---|---|
| Spring Boot 构建 | spring-boot:repackage |
| 多模块生命周期 | 父模块控制子模块构建 |
| CI/CD 集成 | Jenkins + Maven |
需要 Spring Boot 打包流程解析?回复 Spring Boot Lifecycle 立即获取!