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 会自动执行从 validatepackage 的所有阶段!


三、常用阶段详解(你必须知道的 8 个)

阶段命令作用输出目录
validate验证项目配置是否正确
compilemvn compile编译主代码target/classes
testmvn test运行单元测试target/test-classes
packagemvn package打包成 JAR/WARtarget/xxx.jar
verifymvn verify运行集成测试
installmvn install安装到本地仓库~/.m2/repository/...
deploymvn deploy发布到远程仓库Nexus / Artifactory
cleanmvn 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)
compilemaven-compiler-plugincompile
testmaven-surefire-plugintest
packagemaven-jar-pluginjar
installmaven-install-plugininstall
deploymaven-deploy-plugindeploy

自定义绑定示例(在 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

执行顺序:

  1. clean 生命周期 → 删除 target/
  2. default 生命周期 → 到 install 阶段

九、site 生命周期(生成项目报告)

mvn site

生成目录:target/site/

  • index.html
  • Javadoc
  • 测试报告
  • 依赖分析

部署站点:

mvn site-deploy

十、生命周期总结表

命令执行阶段是否删除 target是否运行测试
mvn compilecompileNoNo
mvn testtestNoYes
mvn packagepackageNoYes
mvn installinstallNoYes
mvn clean packageclean + 到 packageYesYes
mvn clean install -DskipTestsclean + 到 installYesNo

十一、高级技巧

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/CDmvn clean verify

恭喜!你已掌握 Maven 构建生命周期!


下一步推荐

方向内容
Spring Boot 构建spring-boot:repackage
多模块生命周期父模块控制子模块构建
CI/CD 集成Jenkins + Maven

需要 Spring Boot 打包流程解析?回复 Spring Boot Lifecycle 立即获取!

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注