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 立即获取!