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 可以自动化管理项目的构建过程,让开发者专注于业务逻辑而不必关心构建过程的每一个细节。

相关推荐
BillKu20 分钟前
Java + Spring Boot + Mybatis 实现批量插入
java·spring boot·mybatis
YuTaoShao21 分钟前
Java八股文——集合「Map篇」
java
有梦想的攻城狮2 小时前
maven中的maven-antrun-plugin插件详解
java·maven·插件·antrun
硅的褶皱6 小时前
对比分析LinkedBlockingQueue和SynchronousQueue
java·并发编程
MoFe16 小时前
【.net core】天地图坐标转换为高德地图坐标(WGS84 坐标转 GCJ02 坐标)
java·前端·.netcore
季鸢6 小时前
Java设计模式之观察者模式详解
java·观察者模式·设计模式
Fanxt_Ja7 小时前
【JVM】三色标记法原理
java·开发语言·jvm·算法
Mr Aokey7 小时前
Spring MVC参数绑定终极手册:单&多参/对象/集合/JSON/文件上传精讲
java·后端·spring
小马爱记录8 小时前
sentinel规则持久化
java·spring cloud·sentinel
长勺9 小时前
Spring中@Primary注解的作用与使用
java·后端·spring