04.maven生命周期
maven有一个十分完善的生命周期模型(lifecycle)。运行maven的每个步骤都由maven预定义的,相比Ant而言,这种预定义使maven的使用变得简单(Ant的每个步骤都要你手工去定义)。这个模型是一种标准,在不同的项目中,maven的生命周期是相同的。一般情况下,mvn clean package
这样的命令是通用的。
maven有三套相互独立的生命周期:
- Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
- Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
- Site Lifecycle 生成项目报告,站点,发布站点。
说它们是相互独立的,是指你可以只调用clean来清理项目,仅调用site来生成项目报告。你也可以直接运行 mvn clean install site 运行所有这三套生命周期。
**每套生命周期都由一组阶段(Phase)组成,我们平时在命令行输入的命令总会对应于一个特定的阶段。**比如,运行mvn clean
,这里的clean是Clean生命周期的一个阶段。运行某个阶段的时候,它之前的所有阶段都会被运行,
Clean 生命周期
Clean生命周期一共包含了三个阶段:
- pre-clean 执行一些需要在clean之前完成的工作
- clean 移除所有上一次构建生成的文件
- post-clean 执行一些需要在clean之后立刻完成的工作
如上面所说,我们平常执行的mvn clean
指令时,maven会先运行pre-clean,然后运行clean。如果执行 mvn post-clean
,则执行顺序为pre-clean-->clean-->post-clean
Site 生命周期
- pre-site 执行一些需要在生成站点文档之前完成的工作
- site 生成项目的站点文档
- post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
- site-deploy 将生成的站点文档部署到特定的服务器上
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 | 对测试代码编译生成的文件做后置处理,例如Java类字节码增强,maven 2.0.5及以后的版本加入此阶段 |
test | 使用合适的单元测试框架运行测试。这些测试不能要求打包或部署。 |
prepare-package | 执行所有打包之前的必须打包准备工作,maven 2.1 及以后版本加入此阶段 |
package | 将编译的代码打包生成可发布的格式,如 JAR 。 |
pre-integration-test | 执行集成测试之前的工作,这涉及一些例如设置需要的环境的工作 |
integration-test | 如果必要,此阶段会把可发布的包部署到集成测试环境 |
post-integration-test | 集成测试兵团操作,例如清理环境 |
verify | 运行所有检查,验证包是否有效,并且符合软件质量标准 |
install | 将包安装至本地仓库,用于其它项目依赖。 |
deploy | 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。 |