咱们在开发项目的时候,不断地在编译、测试、打包、部署等过程,maven的生命周期就是对全部构建过程抽象与统一,生命周期包含项目的清理、初始化、编译、测试、打包、集成测试、验证、部署、站点生成等几乎全部的过程。服务器
Maven有三套相互独立的生命周期,请注意这里说的是“三套”,并且“相互独立”,初学者容易将Maven的生命周期当作一个总体,其实否则。这三套生命周期分别是:并发
• CleanLifecycle 在进行真正的构建以前进行一些清理工做。框架
• DefaultLifecycle 构建的核心部分,编译,测试,打包,部署等等。maven
• SiteLifecycle 生成项目报告,站点,发布站点。post
再次强调一下它们是相互独立的,能够仅仅调用clean来清理工做目录,仅仅调用site来生成站点。固然也能够直接运行 “mvn clean install site” 运行全部这三套生命周期。单元测试
每套生命周期都由一组阶段(Phase)组成,咱们平时在命令行输入的命令总会对应于一个特定的阶段。maven中全部的执行动做(goal)都须要指明本身在这个过程当中的执行位置,而后maven执行的时候,就依照过程的发展依次调用这些goal进行各类处理。这个也是maven的一个基本调度机制。测试
每套生命周期还能够细分红多个阶段。spa
Clean生命周期
Clean生命周期一共包含了三个阶段:命令行
Clean生命周期code
pre-clean
执行一些须要在clean以前完成的工做
clean
移除全部上一次构建生成的文件
post-clean
执行一些须要在clean以后马上完成的工做
命令“mvn clean”中的就是表明执行上面的clean阶段,在一个生命周期中,运行某个阶段的时候,它以前的全部阶段都会被运行,也就是说,“mvn clean” 等同于 “mvn pre-clean clean” ,若是咱们运行“mvn post-clean” ,那么 “pre-clean”,“clean” 都会被运行。这是Maven很重要的一个规则,能够大大简化命令行的输入。
Default生命周期
Maven最重要就是的Default生命周期,也称构建生命周期,绝大部分工做都发生在这个生命周期中,每一个阶段的名称与功能以下::
Default生命周期
validate
验证项目是否正确,以及全部为了完整构建必要的信息是否可用
generate-sources
生成全部须要包含在编译过程当中的源代码
process-sources
处理源代码,好比过滤一些值
generate-resources
生成全部须要包含在打包过程当中的资源文件
process-resources
复制并处理资源文件至目标目录,准备打包
compile
编译项目的源代码
process-classes
后处理编译生成的文件,例如对Java类进行字节码加强(bytecode enhancement)
generate-test-sources
生成全部包含在测试编译过程当中的测试源码
process-test-sources
处理测试源码,好比过滤一些值
generate-test-resources
生成测试须要的资源文件
process-test-resources
复制并处理测试资源文件至测试目标目录
test-compile
编译测试源码至测试目标目录
test
使用合适的单元测试框架运行测试。这些测试应
该不须要代码被打包或发布
prepare-package
在真正的打包以前,执行一些准备打包必要的操
做
package
将编译好的代码打包成可分发的格式,如
JAR,WAR,或者EAR
pre-integration-test
执行一些在集成测试运行以前须要的动做。如建
立集成测试须要的环境
integration-test
若是有必要的话,处理包并发布至集成测试能够
运行的环境
post-integration-test
执行一些在集成测试运行以后须要的动做。如清
理集成测试环境。
verify
执行全部检查,验证包是有效的,符合质量规范
install
安装包至本地仓库,以备本地的其它项目做为依
赖使用
deploy
复制最终的包至远程仓库,共享给其它开发人员
和项目(一般和一次正式的发布相关)
可见,构建生命周期被细分红了22个阶段,可是咱们不必对每一个阶段都了如指掌,常常关联使用的只有process-test-resources、test、package、install、deploy等几个阶段而已。
通常来讲,位置稍后的过程都会依赖于以前的过程。这也就是为何咱们运行“mvn install” 的时候,代码会被编译,测试,打包。固然,maven一样提供了配置文件,能够依照用户要求,跳过某些阶段。好比有时候但愿跳过测试阶段而直接install,由于单元测试若是有任何一条没经过,maven就会终止后续的工做。
Site生命周期
Site生命周期
pre-site
执行一些须要在生成站点文档以前完成的工做
site
生成项目的站点文档
post-site
执行一些须要在生成站点文档以后完成的工做,而且为部署作准备
site-deploy
将生成的站点文档部署到特定的服务器上
这里常常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点,这是Maven至关强大的功能。