一、前言
上一篇博客中,小编向大家介绍了Maven常用的一些命令,在这篇博客中,小编向大家介绍生命周期和插件 。
在Maven的日常使用中,命令行的输入往往对应了生命周期,如mvn package就表示执行默认生命周期阶段的package。Maven的生命周期是抽象的,其实际行为都是由插件完成的,如package阶段的任务可能会由maven-jar-plugin完成。生命周期和插件两者协同工作,密不可分。
二、三套生命周期
刚开始学习 maven的时候,都不知道有什么生命周期,以为从开始编译、测试、打包、部署整个都是一个完整的流程。其实,早在Maven出现之前,项目构建的生命周期就已经存在了,软件开发人员每天都对项目进行清理、编译、测试和部署。Maven的生命周期就是为了对所有的构建过程进行抽象和统一。Maven从大量的项目和构建工具中学习和反思,然后总结了一套高度完善、易拓展的生命周期。这个生命周期包括了清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。
Maven拥有三套相互独立的生命周期,他们分别是clean,default 和site。clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site生命周期的目的是建立项目站点。
2.1 clean生命周期
clean生命周期的目的是清理项目,包含了三个阶段:
- pre-clean 执行一些清理前需要完成的工作
- clean 清理上一次构建成功的文件,清理target文件
- 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锁包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息。
- pre-site 执行一些在生成项目站点之前需要完成的工作。
- site生成项目站点文档
- post-site 执行一些在生成项目站点之后需要完成的工作。
- site-deploy 将生成的项目站点发布到服务器上。
三、插件
maven管理生命周期过程都是基于插件完成的。定位到:%本地仓库%\org\apache\maven\plugins,可以看到一些下载好的插件:
四、小结
通过对Maven的生命周期理解,可以更加深刻的理解每个阶段的程序运行。对程序的开发有很大的帮助。