生命周期
maven的生命周期并不是一个整体,maven拥有三套相互独立的生命周期,分别为clean、default和site。clean是清理项目,default是构建项目,site是建立项目站点。
清理 clean
- pre-clean:执行一些需要在clean之前完成的工作
- clean:移除所有上一次构建生成的文件
- post-clean:执行clean之后需要完成的工作
默认default
- validate:检查配置,构建所需信息是否都能获取到
- complie:编译源代码
- test:单元测试
- package:打包
- verify:(检查)对集成测试的结果进行检查
- install:安装打包的项目到本地仓库
- deploy:(部署)拷贝工程包到远程仓库
细分的话,共有23个阶段。
validate : 检查工程配置是否正确,完成构建过程的所有必要信息是否能够获取到。
initialize : 初始化构建状态,例如设置属性。
generate-sources : 生成编译阶段需要包含的任何源码文件。
process-sources : 处理源代码,例如,过滤任何值(filter any value)。
generate-resources : 生成工程包中需要包含的资源文件。
process-resources : 拷贝和处理资源文件到目的目录中,为打包阶段做准备。
compile : 编译工程源码。
process-classes : 处理编译生成的文件,例如 Java Class 字节码的加强和优化。
generate-test-sources : 生成编译阶段需要包含的任何测试源代码。
process-test-sources : 处理测试源代码,例如,过滤任何值(filter any values)。
test-compile : 编译测试源代码到测试目的目录。
process-test-classes : 处理测试代码文件编译后生成的文件。
test : 使用适当的单元测试框架(例如JUnit)运行测试。
prepare-package : 在真正打包之前,为准备打包执行任何必要的操作。
package : 获取编译后的代码,并按照可发布的格式进行打包,例如 JAR、WAR 或者 EAR 文件。
pre-integration-test : 在集成测试执行之前,执行所需的操作。例如,设置所需的环境变量。
integration-test : 处理和部署必须的工程包到集成测试能够运行的环境中。
post-integration-test : 在集成测试被执行后执行必要的操作。例如,清理环境。
verify : 运行检查操作来验证工程包是有效的,并满足质量要求。
install : 安装工程包到本地仓库中,该仓库可以作为本地其他工程的依赖。
deploy : 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程。
站点文档创建 site
- pre-site
- site:生成站点文档
- post-site
- site-deploy:将生产的站点文档部
命令行与生命周期
三套生命周期是相互独立的,用户调用clean生命周期时,不会触发default生命周期的任何阶段,反之亦然。在一个生命周期中,运行某个阶段的时候,它之前的所有阶段都会被运行。执行多个生命周期时,每个生命周期间使用空格分开。举例如下:
- mvn clean
调用clean生命周期的clean阶段,实际执行pre-clean和clean阶段 - mvn test
调用default生命周期的test阶段,实际执行test以及之前所有阶段 - mvn clean install
调用clean生命周期的clean阶段和default的install阶段,实际执行pre-clean和clean,install以及之前所有阶段