一、前言

      上一篇博客中,小编向大家介绍了Maven常用的一些命令,在这篇博客中,小编向大家介绍生命周期和插件 。

      在Maven的日常使用中,命令行的输入往往对应了生命周期,如mvn package就表示执行默认生命周期阶段的package。Maven的生命周期是抽象的,其实际行为都是由插件完成的,如package阶段的任务可能会由maven-jar-plugin完成。生命周期和插件两者协同工作,密不可分。

二、三套生命周期

      刚开始学习 maven的时候,都不知道有什么生命周期,以为从开始编译、测试、打包、部署整个都是一个完整的流程。其实,早在Maven出现之前,项目构建的生命周期就已经存在了,软件开发人员每天都对项目进行清理、编译、测试和部署。Maven的生命周期就是为了对所有的构建过程进行抽象和统一。Maven从大量的项目和构建工具中学习和反思,然后总结了一套高度完善、易拓展的生命周期。这个生命周期包括了清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。

      Maven拥有三套相互独立的生命周期,他们分别是clean,default 和site。clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site生命周期的目的是建立项目站点。




【Maven】项目管理利器Maven(五)——生命周期和插件_maven


2.1 clean生命周期

      clean生命周期的目的是清理项目,包含了三个阶段:

  1. pre-clean 执行一些清理前需要完成的工作
  2. clean 清理上一次构建成功的文件,清理target文件
  3. post-clean执行一些清理后需要完成的工作

2.2 default生命周期

      default生命周期定义了真正构建时所需要执行的步骤。是最核心的部分。

default 生命后勤

解释

validate

验证工程是否正确,所需的信息是否完整

initialize

初始化构建平台,例如:设置properties或创建目录

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

编译测试源代码(默认是test目录下)

process-test-class

test

执行单元测试

prepare-package

package

将工程文件打包为指定的格式,例如JAR,WAR等

pre-integration-test

integration-test

集成测试

post-integration-test

verify

检查package是否有效、符合标准

install

将包安装至本地仓库,以让其它项目依赖。

deploy

将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

2.3 site生命周期

      site生命周期的目的是建立和发布项目站点,maven能够基于POM锁包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息。

  1. pre-site 执行一些在生成项目站点之前需要完成的工作。
  2. site生成项目站点文档
  3. post-site 执行一些在生成项目站点之后需要完成的工作。
  4. site-deploy 将生成的项目站点发布到服务器上。

三、插件

      maven管理生命周期过程都是基于插件完成的。定位到:%本地仓库%\org\apache\maven\plugins,可以看到一些下载好的插件:



【Maven】项目管理利器Maven(五)——生命周期和插件_maven_02


四、小结

      通过对Maven的生命周期理解,可以更加深刻的理解每个阶段的程序运行。对程序的开发有很大的帮助。