Maven 生命周期
· 阅读需 4 分钟
Maven 的生命周期是一系列定义好的阶段,用于描述构建过程的不同步骤。当你执行一个 Maven 命令(如 mvn clean 或 mvn install),你实际上是在调用生命周期中的一个或多个阶段。
Maven 主要有三个标准的生命周期:
- clean:清除之前构建的项目。
- default(或 build):构建项目的主要生命周期。
- site:生成项目的站点文档。
默认生命周期 (主要用于构建和部署):
- validate: 验证项目是否正确,并且所有必要的信息都可用。
- initialize: 初始化构建状态,例如设置属性或创建目录。
- generate-sources: 生成任何需要编译的源代码。
- process-sources: 处理源代码,例如过滤任何值。
- generate-resources: 生成资源。
- process-resources: 复制并发送资源到目标目录,为打包做准备。
- compile: 编译项目的源代码。
- process-classes: 对编译后的字节码进行操作,如字节码增强。
- generate-test-sources: 生成测试代码。
- process-test-sources: 处理测试代码。
- generate-test-resources: 生成测试所需的资源。
- process-test-resources: 复制并发送测试资源到目标目录。
- test-compile: 编译测试源代码。
- test: 使用合适的单元测试框架运行测试。
- prepare-package: 在实际打包之前进行必要的操作。
- package: 将编译后的代码打包为分发格式,如 JAR、WAR。
- pre-integration-test: 在集成测试之前进行必要的环境设置。
- integration-test: 处理和部署包到集成测试环境中,并运行。
- post-integration-test: 在集成测试之后进行必要的操作。
- verify: 检查包的有效性,并确保满足质量标准。
- install: 安装打包的项目到本地仓库,供其他项目使用。
- deploy: 在构建环境中,将最终的包复制到远程仓库,供共享和合作。
1. 清理生命周期:
- pre-clean: 执行清理前的需要的操作。
- clean: 移除先前的构建产物。
- post-clean: 执行清理后的需要的操作。
2. 站点生成生命周期:
- pre-site: 执行生成站点前的需要的操作。
- site: 生成项目的站点文档。
- post-site: 执行生成站点文档后的需要的操作。
- site-deploy: 部署生成的站点文档到指定的服务器。
执行生命周期
当你运行一个生命周期阶段时,Maven 会按顺序执行该阶段之前的所有阶段。例如,如果你执行 mvn install,Maven 会按顺序执行从 validate 到 install 的所有阶段。
生命周期和生命周期阶段
生命周期 (Lifecycle):
- 生命周期是构建过程中的一系列阶段的集合。Maven 定义了三个主要的生命周期:default(主要用于构建项目)、clean(用于清理项目)和 site(用于生成项目的站点文档)。
- 这些生命周期定义了一个项目从创建到部署的整个构建过程。
生命周期阶段 (Lifecycle Phase):
- 生命周期阶段是构建过程中的一个步骤或任务。例如,compile、test 和 install 都是生命周期阶段。
- 当你执行一个生命周期阶段时,Maven 会按顺序执行该生命周期中直到该阶段为止的所有阶段。例如,执行 mvn install 时,Maven 会按顺序执行 default 生命周期中从 validate 到 install 的所有阶段。
你不能直接添加新的生命周期。Maven 的生命周期是预定义的,它包括 default(用于构建),clean(用于清理)和 site(用于生成项目文档)这三个主要的生命周期。
但是,你可以做的是:
- 自定义生命周期的阶段:虽然你不能添加新的生命周期,但你可以为已有的生命周期阶段定义自定义的行为。这是通过绑定插件的目标到特定的生命周期阶段来实现的。例如,你可以绑定一个插件的目标到 compile 阶段,使得在编译时执行特定的操作。
- 创建自定义插件和目标:如果 Maven 的内置插件和目标不能满足你的需求,你可以创建自己的插件,并定义新的目标。然后,你可以将这些自定义目标绑定到生命周期的特定阶段。
- 使用 Profile:Profile 允许你为不同的构建环境和条件定义不同的设置。虽然这不是添加新的生命周期,但它可以让你根据不同的情境改变构建的行为。