一、生命周期简介:
Maven强大的一个重要的原因是它有一个十分完善的生命周期模型,这个生命周期可以从两方面来理解:
运行Maven的每个步骤都由它来定义的,这种预定义的默认行为使得我们使用Maven变得简单。
这个模型是一种标准,在不同的项目中,使用Maven的接口是一样的,这样就不用去仔细理解每个项目的构建了,一般情况下,mvn clean install 这样的命令是通用的。
Maven的生命周期就是对所有的构建过程进行抽象和统一。包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。Maven的生命周期是抽象的,即生命周期不做任何实际的工作,实际任务由插件完成,类似于Java设计模式中的模板模式。
生命周期与插件关系
Maven有三套相互独立的生命周期,分别是clean、default和site。每个生命周期包含一些阶段,阶段是有顺序的,后面的阶段依赖于前面的阶段。
二、clean生命周期:
清理项目,该生命周期包含三个阶段:
- pre-clean:执行一些需要在clean之前完成的工作。
- clean:清理上一次构建生成的文件。
- post-clean:执行清理后需要完成的工作。
mvn clean中的clean就是上面的clean。在一个生命周期中,运行某个阶段的时候,它之前的所有阶段都会被运行,也就是说,mvn clean 等同于mvn pre-clean clean,如果我们运行mvn post-clean ,那么pre-clean,clean都会被运行。这是Maven很重要的一个规则,可以大大简化命令行的输入。
三、default生命周期:
构建项目,该生命周期包含了如下8个阶段:
- validate:验证工程是否正确,所有需要的资源是否可用。
- compile:编译项目的源代码。
- test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
- Package:把已编译的代码打包成可发布的格式,比如jar。
- integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
- verify:运行所有检查,验证包是否有效且达到质量标准。
- install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
- Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
四、site生命周期:
建立和发布项目站点,该生命周期包含四个阶段,如下所示:
- pre-site:生成项目站点之前需要完成的工作。
- site:生成项目站点文档。
- post-site:生成项目站点之后需要完成的工作。
- site-deploy:将项目站点发布到服务器。
这里经常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点,这可是Maven相当强大的功能,管理员比较喜欢,文档及统计数据自动生成,很好看。
五、Maven指令与生命周期阶段的关系:
首先我们通过下图看一下Maven的整个生命周期顺序流程:
通过上图,我们可以看到Maven生命周期各个阶段的行为与Maven默认行为:
- mvn compile,让当前项目经历生命周期中的1—>7 阶段 :完成编译主源代码编译
- mvn package,让当前项目经历生命周期中的1—>17阶段 :完成打包
- mvn install,让当前项目经历生命周期中的1—>22阶段 :完成包安装到本地仓库
- mvn deploy,让当前生命经历生命周期中的1—>23阶段 :完成包部署到中心库中