当前位置: 首页 > news >正文

Maven生命周期:构建流程深度解析

Maven 生命周期详解

Maven 的生命周期是构建过程的核心抽象,它定义了项目构建、测试和部署的有序阶段序列。理解生命周期对于高效使用 Maven 至关重要。

一、三大内置生命周期

Maven 包含三个独立的生命周期,每个生命周期包含多个阶段(phase):

生命周期作用关键阶段
clean清理构建产物pre-clean, clean, post-clean
default项目编译、测试、打包、部署compile, test, package, install
site生成项目文档和报告pre-site, site, post-site, site-deploy

二、生命周期阶段详解

1. clean 生命周期

pre-clean
clean
post-clean
  • pre-clean:清理前的准备工作
  • clean:删除 target 目录(核心清理阶段)
  • post-clean:清理后的收尾工作

2. default 生命周期(核心)

validate
compile
test
package
verify
install
deploy
阶段作用触发命令
validate验证项目正确性(POM 完整性、依赖可用性)mvn validate
compile编译主源代码(输出到 target/classesmvn compile
test-compile编译测试代码(输出到 target/test-classes-
test运行单元测试(JUnit/TestNG)mvn test
package打包编译后的代码(JAR/WAR/EAR)mvn package
verify运行集成测试和检查(如 Sonar 质量检测)mvn verify
install将包安装到本地仓库(供其他项目引用)mvn install
deploy将包部署到远程仓库(Nexus/Artifactory)mvn deploy

3. site 生命周期

pre-site
site
post-site
site-deploy
  • site:生成项目文档(API 文档、测试报告等)
  • site-deploy:部署生成的站点到服务器

三、关键特性

1. 阶段顺序执行

# 执行 test 阶段会自动触发其前的所有阶段
mvn test = validate + compile + test-compile + test

2. 插件绑定机制

每个阶段绑定具体的插件目标(goal):

阶段绑定的插件目标
compilemaven-compiler-plugin:compile
testmaven-surefire-plugin:test
packagemaven-jar-plugin:jar (或 war/ear 插件)
installmaven-install-plugin:install

3. 多模块构建

在父 POM 执行命令会按依赖顺序构建所有子模块:

mvn clean install
# 构建顺序:common → service → webapp

四、常用命令组合

命令等效阶段序列用途
mvn cleanpre-clean → clean清理构建产物
mvn testvalidate → … → test运行单元测试
mvn packagevalidate → … → package打包项目
mvn installvalidate → … → install安装到本地仓库
mvn clean deployclean 生命周期 + default 到 deploy清理后部署到远程仓库
mvn sitepre-site → site生成项目文档
mvn compile -DskipTests只执行编译,跳过测试快速编译验证代码

五、自定义生命周期绑定

可通过配置添加插件目标到生命周期阶段:

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><version>3.6.0</version><executions><execution><phase>package</phase> <!-- 绑定到 package 阶段 --><goals><goal>jar</goal> <!-- 执行 javadoc:jar 目标 --></goals></execution></executions></plugin></plugins>
</build>

六、生命周期最佳实践

  1. 理解阶段依赖
    执行 mvn install 时会自动运行所有前置阶段

  2. 利用跳过选项

    mvn install -DskipTests      # 跳过测试
    mvn deploy -Dmaven.test.skip # 跳过编译测试和运行测试
    
  3. 多模块优化构建

    mvn -pl service clean install # 仅构建 service 模块
    mvn -am -pl webapp install    # 构建 webapp 及其依赖模块
    
  4. 生命周期调试

    mvn help:describe -Dcmd=compile # 查看 compile 阶段绑定的插件
    

核心要点:Maven 生命周期提供了标准化的构建流程。通过 mvn [phase] 命令触发从初始阶段到指定阶段的所有操作,插件目标绑定到各阶段实现具体功能。掌握生命周期可显著提升构建效率。

学习资源

  • 官方生命周期文档
  • 生命周期图示
http://www.dtcms.com/a/272189.html

相关文章:

  • eVTOL动力测试台架气动干扰分析与应对措施
  • TestCafe ➜ Playwright fixture 架构迁移指南
  • 上位机与Modbus的32位数据交互
  • 嘿嘿嘿嘿嘿
  • C++---多态
  • Camera2API笔记
  • Unity WebGL文本输入
  • centos7 安装jenkins
  • jenkins部署springboot项目
  • 抽象类与接口:Java面向对象设计的两大支柱
  • 表达式索引海外云持久化实践:关键技术解析与性能优化
  • Spring Boot 整合 RabbitMQ
  • 【前端】接口日志追踪
  • 06.消息传递网络
  • 「日拱一码」023 机器学习——超参数优化
  • 判断当前是否为钉钉环境
  • 【Pandas】pandas DataFrame from_dict
  • 1.2.3_1 OSI参考模型
  • STM32F103C8T6单片机内部执行原理及启动流程详解
  • vue3实现pdf文件预览 - vue-pdf-embed
  • 力扣热门算法题 127.单词接龙,128.最长连续序列,130.被围绕的区域
  • MySQL数据库基础教程:从安装到数据操作
  • 快速合并多个CAD图形为单一PDF文档的方法
  • 常见 Docker 错误及解决方法
  • (vue)前端区分接口返回两种格式,一种Blob二进制字节流,一种常规JSON,且将blob响应转为json
  • 基于Catboost算法的茶叶数据分析及价格预测系统的设计与实现
  • 多元函数的切平面与线性近似:几何直观与计算方法
  • 高数附录(1)—常用平面图形
  • 《O-PAS™标准的安全方法》白皮书:为工业自动化系统筑起安全防线
  • msf复现永恒之蓝