Maven完全指南 - 12. 生命周期

82 阅读3分钟

12. 生命周期

Maven 的生命周期(Lifecycle)是 Maven 构建系统的重要组成部分,它定义了项目在构建过程中执行的阶段(Phase)和任务顺序。Maven 主要有三种生命周期:clean、default(build)、和 site,每个生命周期包含多个阶段。

  • 清理生命周期(clean):负责项目的清理工作,删除之前构建生成的文件。
  • 构建生命周期(build):核心生命周期,执行编译、测试、打包、发布等构建任务。
  • 站点生命周期(site):用于生成项目文档和站点信息。

每个生命周期都包含特定的阶段,这些阶段会按顺序执行。

生命周期.png

12.1 清理生命周期

clean.png

清理生命周期有以下阶段:

  • pre-clean:执行清理前的准备工作。
  • clean:删除上一次构建生成的文件。
  • post-clean:执行清理后的收尾工作。

12.2 构建生命周期

build.png

构建生命周期是最重要的生命周期,包含了从编译、测试到打包、发布的主要阶段:

  • validate:验证项目是否正确且所需的所有信息是否完整。
  • initialize:初始化构建状态,例如创建需要的目录。
  • generate-sources:生成源代码,通常通过代码生成插件自动生成代码。
  • process-sources:处理源代码,例如过滤或替换文件中的变量。
  • generate-resources:生成资源文件,类似代码生成阶段,但针对资源文件。
  • process-resources:复制和处理资源文件到输出目录。
  • compile:编译项目的源代码。
  • process-classes:编译后处理,如增强类文件(字节码操作)。
  • generate-test-sources:生成测试源代码。
  • process-test-sources:处理测试源代码。
  • test-compile:编译测试源代码。
  • process-test-classes:编译后处理测试类文件。
  • test:运行测试,默认使用 src/test/java 中的测试代码。
  • prepare-package:在打包前的预处理步骤。
  • package:将编译后的代码打包成分发格式(如 JAR、WAR)。
  • pre-integration-test:准备集成测试的运行环境。
  • integration-test:执行集成测试。
  • post-integration-test:清理集成测试的运行环境。
  • verify:检查项目并对结果进行验证。
  • install:将包安装到本地仓库,以便其他项目可以使用。
  • deploy:将最终包复制到远程仓库,以便其他开发人员或项目使用。

12.3 站点生命周期

site.png

该生命周期主要用于生成和发布项目的站点和文档,包含以下阶段:

  • pre-site:站点生成前的准备工作。
  • site:生成项目文档。
  • post-site:站点生成后的收尾工作。
  • site-deploy:将生成的站点发布到远程服务器上。

12.4 阶段顺序执行

Maven 生命周期中的阶段都是按顺序执行的。例如,当运行 mvn package 时,会自动从 validate 阶段开始,依次执行所有阶段,直到 package 阶段。同样,mvn install 会从 validate 阶段执行到 install 阶段,并依次 执行所有前置阶段。mvn site 会依次执行 pre-site 和 site 两个阶段,mvn clean 会依次执行 pre-clean 和 clean 两个阶段。

Maven 的阶段实际并不直接执行任何操作,而是绑定了相应的插件目标(goal)来执行任务,任务的执行最终是由插件目标来完成的。