Maven的生命周期就是所有构建过程抽象与统一,Maven的生命周期包含了项目的清理、初始化、编译、测试、打包、集成、部署、站点生成等阶段。
Maven的三个生命周期分别是:Clean、Default、Site,每个生命周期又包含了不同的阶段。
Clean生命周期
项目构建之前进行一些准备清理工作。阶段1 | pre-clean | 执行一些需要在clean之前完成的工作 |
---|---|---|
阶段2 | clean | 移除所有上一次构建生成的文件 |
阶段3 | post-clean | 执行一些需要在clean之后需要完成的工作 |
Default生命周期
项目构建的核心部分,包含了编译、测试、打包、部署等阶段。阶段1 | validate | 验证项目是否正确,以及所有为了完整构建必要的信息是否可用 |
---|---|---|
阶段2 | generate-sources | 生成所有需要包含在编译过程中的源代码 |
阶段3 | process-sources | 处理源代码,比如过滤一些值 |
阶段4 | generate-resources | 生成所有需要包含在打包过程中的资源文件 |
阶段5 | process-resources | 复制并处理资源文件至目标目录,准备打包 |
阶段6 | compile | 编译项目的源代码 |
阶段7 | process-classes | 后处理编译生成的文件,例如对Java类进行字节码增强 |
阶段8 | generate-test-sources | 生成所有包含在测试编译过程中的测试源码 |
阶段9 | process-test-sources | 处理测试源码,比如过滤一些值 |
阶段10 | generate-test-resources | 生成测试需要的资源文件 |
阶段11 | process-test-resources | 复制并处理测试资源文件至测试目标目录 |
阶段12 | test-compile | 编译测试源码至测试目标目录 |
阶段13 | test | 使用合适的单元测试框架运行测试。 这些测试应该不需要代码被打包或发布 |
阶段14 | prepare-package | 在真正的打包之前,执行一些准备打包必要的操作 |
阶段15 | package | 将编译好的代码打包成可分发的格式,如JAR,WAR,或者EAR |
阶阶16 | pre-integration-test | 执行一些在集成测试运行之前需要的动作。 如建立集成测试需要的环境 |
阶段17 | integration-test | 如果有必要的话,处理包并发布至集成测试可以运行的环境 |
阶段18 | post-integration-test | 执行一些在集成测试运行之后需要的动作。 如清理集成测试环境。 |
阶段19 | verify | 执行所有检查,验证包是有效的,符合质量规范 |
阶段20 | install | 安装包至本地仓库,以备本地的其它项目作为依赖使用 |
阶段21 | deploy | 复制最终的包至远程仓库,共享给其它开发人员和项目 |
Site生命周期
生成项目站点文档、站点发布。
阶段1 | pre-site | 执行一些需要在生成站点文档之前完成的工作 |
阶段2 | site | 生成项目的站点文档 |
阶段3 | post-site | 执行一些需要在生成站点文档之后完成的工作, 并且为部署做准备 |
阶段4 | site-deploy | 将生成的站点文档部署到特定的服务器上 |
在每个生命周期中,运行某个阶段,该阶段之前的阶段都会被运行,比如:执行Clean生命周期的clean阶段,pre-clean阶段也会被运行;通常来说,后面的阶段依赖于之前的阶段,当然也可以通过配置文件,跳过某些阶段,比如:mvn package -Dmaven.test.skip=true ,告诉maven在打包的时候跳过单元测试。