文章目录
- Maven 生命周期
- - Clean 生命周期
- - Build 生命周期
- - Site 生命周期
Maven 生命周期
Maven 有以下三个标准的生命周期:
- Clean 生命周期:
- clean:删除目标目录中的编译输出文件。这通常是在构建之前执行的,以确保项目从一个干净的状态开始。
- Build 生命周期:(也称:Default 生命周期)
- validate:验证项目的正确性,例如检查项目的版本是否正确。
- compile:编译项目的源代码。
- test:运行项目的单元测试。
- package:将编译后的代码打包成可分发的格式,例如 JAR 或 WAR。
- verify:对项目进行额外的检查以确保质量。
- install:将项目的构建结果安装到本地 Maven 仓库中,以供其他项目使用。
- deploy:将项目的构建结果复制到远程仓库,以供其他开发人员或团队使用。
- Site 生命周期:
- site:生成项目文档和站点信息。
- deploy-site:将生成的站点信息发布到远程服务器,以便共享项目文档。
每个生命周期又包含了多个生命周期阶段,生命周期阶由插件目标构成。
一个插件目标代表一个特定的任务(比构建阶段更为精细),这有助于项目的构建和管理。这些目标可能被绑定到多个阶段或者无绑定。不绑定到任何构建阶段的目标可以在构建生命周期之外通过直接调用执行。这些目标的执行顺序取决于调用目标和构建阶段的顺序。
- Clean 生命周期
Clean 生命周期用于删除目标目录中的编译输出文件。这通常是在构建之前执行的,以确保项目从一个干净的状态开始。
Clean 生命周期包含以下阶段:
阶段 | 处理 | 描述 |
---|---|---|
pre-clean | 执行一些需要在 clean 之前完成的工作 | 在清理之前执行一些特定的准备工作 |
clean | 移除生成的文件 | 移除所有上一次构建生成的文件 |
post-clean | 执行一些需要在 clean 之后完成的工作 | 在清理之后执行一些后续的工作 |
当运行某个阶段的时候,该生命周期(Clean 生命周期)内该阶段及该阶段之前的所有阶段都会被执行,例如:
- 执行 mvn clean 将执行pre-clean、clean两个阶段
- 执行 mvn post-clean 将执行pre-clean、clean、post-clean三个阶段
- Build 生命周期
Build(Default )生命周期是Maven最主要的生命周期。Build生命周期定义了一个项目构建跟发布的过程。
一个典型的 Maven Build 生命周期是由以下几类阶段的顺序组成的:
阶段分类 | 处理 | 描述 |
---|---|---|
validate | 验证 | 验证项目是否正确且所有必须信息是可用的 |
compile | 编译 | 执行编译,源代码编译在此阶段完成 |
test | 测试 | 使用适当的单元测试框架(例如JUnit)运行测试 |
package | 打包 | 将编译后的代码打包成可分发的格式,例如 JAR 或 WAR |
verify | 检查 | 对集成测试的结果进行检查,以保证质量达标 |
install | 安装 | 安装打包的项目到本地仓库,以供其他项目使用 |
deploy | 部署 | 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程 |
Build 生命周期的具体阶段如下:
阶段 | 处理 | 描述 |
---|---|---|
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 | 编译测试源码 | 编译测试源代码到测试目标目录。 |
process-test-classes | 处理测试类文件 | 处理测试源码编译生成的文件。 |
test | 测试 | 使用合适的单元测试框架运行测试。 |
prepare-package | 准备打包 | 在打包之前,执行必要操作为打包做准备。 |
package | 打包 | 将编译后的代码打包成可分发格式的文件。 |
pre-integration-test | 集成测试前 | 在集成测试前进行必要的环境准备。 |
integration-test | 集成测试 | 处理和部署项目到集成测试环境中。 |
post-integration-test | 集成测试后 | 集成测试完成后进行必要的环境清理。 |
verify | 验证 | 运行检查验证项目包有效且达到质量标准。 |
install | 安装 | 安装项目包到本地仓库,供其他项目依赖。 |
deploy | 部署 | 将项目包部署到远程仓库与其他开发者共享。 |
当运行某个阶段的时候,该生命周期(Build 生命周期)内该阶段及该阶段之前的所有阶段都会被执行。
- Site 生命周期
Site 生命周期一般用来创建新的报告文档、部署站点等。
Site 生命周期的具体阶段如下:
阶段 | 处理 | 描述 |
---|---|---|
pre-site | 执行前置工作 | 执行一些需要在生成站点文档之前完成的工作。 |
site | 生成站点文档 | 生成项目的站点文档。 |
post-site | 执行后置工作 | 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备。 |
site-deploy | 部署站点文档 | 将生成的站点文档部署到特定的服务器上。 |
当运行某个阶段的时候,该生命周期(Site 生命周期)内该阶段及该阶段之前的所有阶段都会被执行。
这里经常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点.
参考文章:
Maven 构建生命周期