Maven的生命周期

在 Maven 中,生命周期(Lifecycle)是指一系列定义好的构建阶段(phase),这些阶段帮助管理和组织项目的构建过程。Maven 生命周期的设计让构建过程自动化和可重复,从项目的清理、编译、测试、打包到部署的各个步骤,都能被统一管理。

Maven 有三个内建的生命周期:

  1. 默认生命周期(Default Lifecycle)
  2. 清理生命周期(Clean Lifecycle)
  3. 站点生命周期(Site Lifecycle)

每个生命周期由多个 阶段(phase)组成,Maven 会按顺序执行这些阶段,确保项目从编译到打包再到部署的全过程。

默认生命周期(Default Lifecycle)

默认生命周期是 Maven 最常用的生命周期,它负责项目的 构建部署。这个生命周期包括了编译、测试、打包、安装、部署等常见的构建步骤。

默认生命周期的阶段(Phases):

  1. validate:验证项目是否正确配置。这个阶段检查项目的配置文件(如 pom.xml)是否有效,确保项目是可构建的。
  2. compile:编译项目的源代码。这个阶段将位于 src/main/java 下的所有 Java 源代码编译成字节码(.class 文件),并将其存储在 target/classes 目录下。
  3. test-compile:编译测试代码。这个阶段编译位于 src/test/java 下的测试代码,生成测试类(.class 文件),并存储在 target/test-classes 目录下。
  4. test:执行测试。使用测试框架(如 JUnit 或 TestNG)运行测试代码,通常测试代码存放在 src/test/java 中,测试报告会生成在 target/test-classes 下。
  5. package:将编译后的代码打包。此阶段将项目的编译结果(.class 文件、资源文件等)打包成 JAR、WAR、EAR 或其他格式的文件,通常存放在 target 目录中。
  6. verify:进行验证。验证项目是否通过了所有的测试,是否符合质量要求。这个阶段通常用于执行集成测试或其他验证工作。
  7. install:将打包好的构件(如 JAR、WAR 文件)安装到本地 Maven 仓库。这样,其他项目就可以依赖和使用这个构件。
  8. deploy:将构建的构件上传到远程 Maven 仓库。通常用于将构件发布到公共仓库或私有仓库,使其可以供其他开发者使用。

示例:默认生命周期的执行顺序

在执行 mvn clean install 时,Maven 会依次执行以下阶段:

  1. clean:清理项目(执行清理生命周期)
  2. validate:验证项目的配置
  3. compile:编译源代码
  4. test-compile:编译测试代码
  5. test:执行测试
  6. package:打包项目(生成 JAR/WAR 文件)
  7. install:将构件安装到本地仓库
  8. deploy:将当前的项目打包成依赖,构件部署到远程仓库(如果是通过 mvn deploy 执行)

清理生命周期(Clean Lifecycle)

清理生命周期负责清理构建过程中生成的临时文件,例如编译生成的 .class 文件和打包生成的 .jar.war 文件。通过清理生命周期,Maven 可以确保每次构建都是干净的,不会受到旧构建的影响。

清理生命周期的阶段:

  1. pre-clean:在清理之前执行的阶段。可以用于执行一些预清理操作。
  2. clean:清理构建输出目录。通常会删除 target 目录,删除上一次构建的所有构件和临时文件。
  3. post-clean:在清理之后执行的阶段。可以用于执行一些后清理操作。

示例:清理生命周期的执行顺序

执行 mvn clean 时,Maven 会执行以下阶段:

  1. pre-clean(可选)
  2. clean:删除 target 目录
  3. post-clean(可选)

站点生命周期(Site Lifecycle)

站点生命周期用于生成项目的文档或网站。Maven 可以基于项目的 POM 文件生成项目站点,提供项目的相关信息、开发指南、API 文档等内容。

站点生命周期的阶段:

  1. pre-site:在生成站点之前执行的阶段。可以用于执行一些预生成的操作。
  2. site:生成项目的站点文档。此阶段生成 HTML 文件和其他资源,通常存放在 target/site 目录中。
  3. post-site:在站点生成之后执行的阶段。可以用于执行一些后生成操作。
  4. site-deploy:将生成的站点部署到远程服务器上(例如 GitHub Pages 或其他 Web 服务器)。

示例:站点生命周期的执行顺序

执行 mvn site 时,Maven 会执行以下阶段:

  1. pre-site(可选)
  2. site:生成项目的站点
  3. post-site(可选)
  4. site-deploy(可选):将站点部署到远程服务器

组合生命周期

Maven 通过将这三个生命周期组合起来,为项目提供了一个自动化的构建过程。例如,在执行 mvn clean install 时,Maven 会:

  • 首先执行清理生命周期,删除旧的构建输出文件;
  • 然后执行默认生命周期,完成项目的编译、测试、打包、安装等操作;
  • 最后执行站点生命周期 (如果你运行了 mvn site),生成项目的文档。

总结

默认生命周期(Default Lifecycle):负责项目的构建、打包和部署,包括编译、测试、打包、安装等。

清理生命周期(Clean Lifecycle):负责清理构建输出文件,确保每次构建都是干净的。

站点生命周期(Site Lifecycle):负责生成项目的文档和网站。

通过这些生命周期和阶段,Maven 可以自动化管理项目的构建过程,让开发者专注于业务逻辑而不必关心构建过程的每一个细节。

相关推荐
腻害兔8 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社9 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
萧瑟余晖10 小时前
JDK 26 新特性详解
java·开发语言
马优晨11 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
维天说13 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
Zane199414 小时前
并发 vs 并行:别再傻傻分不清了,一文讲透 Java 并发编程的第一课
java·后端
噢,我明白了15 小时前
java中Excel的导入和导出(EasyExcel)
java·开发语言·excel
吠品15 小时前
Zabbix Web界面误报Server未运行的排查与解决
java·服务器·数据库
啊湘15 小时前
天气查询API接口 按月Token鉴权 实时天气 物联网可用 文档齐全
java·后端·struts
Java内核笔记15 小时前
告别十亿美元的错误 : Spring Boot 4 空安全 (JSpecify) 实战
java·spring boot·后端