12. 生命周期
Maven 的生命周期(Lifecycle)是 Maven 构建系统的重要组成部分,它定义了项目在构建过程中执行的阶段(Phase)和任务顺序。Maven 主要有三种生命周期:clean、default(build)、和 site,每个生命周期包含多个阶段。
- 清理生命周期(clean):负责项目的清理工作,删除之前构建生成的文件。
- 构建生命周期(build):核心生命周期,执行编译、测试、打包、发布等构建任务。
- 站点生命周期(site):用于生成项目文档和站点信息。
每个生命周期都包含特定的阶段,这些阶段会按顺序执行。
12.1 清理生命周期
清理生命周期有以下阶段:
pre-clean
:执行清理前的准备工作。clean
:删除上一次构建生成的文件。post-clean
:执行清理后的收尾工作。
12.2 构建生命周期
构建生命周期是最重要的生命周期,包含了从编译、测试到打包、发布的主要阶段:
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 站点生命周期
该生命周期主要用于生成和发布项目的站点和文档,包含以下阶段:
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)来执行任务,任务的执行最终是由插件目标来完成的。