介绍
对于构建项目的人来说,只需要学习一组命令就可以构建任何Maven项目,而 POM
将确保他们获得所需的结果。
每一个构建项目的命令都对应了maven底层的一个插件。
学习maven的生命周期可以帮助加深对maven的理解,以便更好的使用maven和解决使用过程中遇到的问题。
有三个内置的构建生命周期: default
, clean
和 site
。
default
生命周期处理项目部署clean
生命周期处理项目清理site
生命周期处理项目站点文档的创建
构建生命周期的不同阶段
实际上常用到的生命周期,基本都属于 Default 生命周期
阶段 | 描述 |
---|---|
validate | 确认项目是正确的,所有必要的信息都是可用的 |
compile | 编译 |
test | 测试 |
package | 打包 |
verify | 验证,对集成测试的结果进行任何检查,以确保满足质量标准 |
install | 将包安装到本地存储库中,作为本地其他项目中的依赖项使用 |
deploy | 发布 |
完整的生命周期
Clean 生命周期
Clean 生命周期在日常开发中,也会用到,但远不如 Default 生命周期频繁,例如迁移项目后,一般都需要清理一下,但从名字也能看出来,也仅限于清理。
阶段 | 描述 |
---|---|
pre-clean | 预清理:在实际项目清理之前执行所需的过程 |
clean | 清理:删除以前生成的所有文件 |
post-clean | 后清理:执行完成项目清理工作所需的流程 |
Default 生命周期
Default 生命周期在实际开发中是最常用的生命周期
阶段 | 描述 |
---|---|
validate | 确认:确认项目是正确的,所有必要的信息都是可用的 |
initialize | 初始化:初始化构建状态,例如设置属性或创建目录 |
generate-sources | 生成源码:生成编译中包含的任何源代码。 |
process-sources | 处理源代码:例如过滤任何值 |
generate-resources | 生成资源:生成所有需要包含在打包过程中的资源文件 |
process-resources | 处理资源:将资源复制并处理到目标目录中,准备打包 |
compile | 编译 |
process-classes | 对编译生成的文件进行后处理,例如对Java类进行字节码增强 |
generate-test-sources | 生成编译中包含的任何测试源代码 |
process-test-sources | 处理测试源代码,例如过滤任何值。 |
generate-test-resources | 生成测试资源 |
process-test-resources | 将资源复制并处理到测试目标目录中 |
test-compile | 将测试源代码编译到测试目标目录中 |
process-test-classes | 对测试编译生成的文件进行后处理,参考process-classes |
test | 测试 |
prepare-package | 预打包:在包装前进行任何必要的准备工作 |
package | 打包:将编译后的代码打包成可分发的格式,例如JAR包 |
pre-integration-test | 预集成测试:在执行集成测试之前执行所需的操作 |
integration-test | 集成测试:处理和部署到可以运行集成测试的环境中 |
post-integration-test | 后集成测试:执行集成测试后所需的操作 |
verify | 验证:运行任何检查来验证包是否有效并满足标准 |
install | 安装:将包安装到本地存储库中,作为本地其他项目中的依赖项使用 |
deploy | 打包:将最终的包复制到远程存储库,以便与其他开发人员和项目共享 |
Site 生命周期
实际上在日常开发中, Site 生命周期使用的并不多。
阶段 | 描述 |
---|---|
pre-site | 在实际项目站点生成之前执行所需的过程 |
site | 生成项目的站点文档 |
post-site | 执行完成站点生成和准备站点部署所需的流程 |
site-deploy | 将生成的站点文档部署到指定的web服务器 |
参考:
https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference