Maven的生命周期
就像人生一样,出生,成长,死亡,这个每个人乃至整个生命都拥有的特性。Maven的构造者就发现,整个项目的构建过程都拥有高度的相似性,清理、初 始化、编译、测试、打包、集成测试、验证、部署、站点发布等等,于是,Maven就在这些过程中抽象出三套执行机制,也就是独立的三种生命周期,分别是
- Clean Lifecycle 项目的构建之前进行清理操作
- Compile(Default) Lifecycle 主要进行项目构建的操作,编译测试打包部署等核心操作
- Site Lifecycle 项目报告的生成,站点发布操作
完整生命周期(供参考)
1.Clean
pre-clean 执行一些清理前需要完成的工作。
clean 清理上一次构建生成的文件
post-clean 执行一些清理后需要完成的工作
2.Compile(Default)
validate 验证项目是正确的并且所有必需的信息都是可用的
initialize 初始化构建状态
generate-sources 产生所有的用来编译的源代码
process-sources 处理源代码
generate-resources 产生包含在package中的资源
process-resources 复制和处理资源到目标目录,为打包做好准备
compile 编译项目的主源代码
process-classes 对编译器产生的文件进行后期处理
generate-test-sources 产生所有用来编译的测试源代码
process-test-sources 处理测试源代码
generate-test-resources 创建测试所需要的资源
process-test-resources 复制和处理资源到测试目标目录
compile 编译测试源代码到目标目录
process-test-classes 对编译测试源代码产生的文件进行后期处理
test 使用适当的单元测试框架运行测试,这些测试代码不应该被打包或者部署
prepare-package 执行所有需要执行的操作为打包做准备,这往往会产生一个还未打包的处理过的包版本
package 使用设置的方式对编译过的文件进行打包
pre-integration-test 执行一些集成测试执行前必须的操作
integration-test 处理和部署包到集成测试环境中,进行测试
post-integration-test 对集成测试进行后期处理
verify 执行所有检查确保包是正确的和符合质量要求的
install 将包安装至本地仓库,以让其它项目依赖
deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享
3.Site
pre-site 前期准备
site 产生项目的站点文档
post-site 后期处理
site-deploy 部署站点到服务器
插件机制
虽然Maven生命周期中有这么多个执行过程,但这些都是一个抽象的概念,这个概念性的东西意味着它并不做任何实质性的事情,也就是说:它就像接口,只定义规范,具体细节它不管。具体的 实现细节则交给了Maven 的各个丰富的插件,也就是说Maven的插件是要完全依赖于Maven的生命周期的,根据周期中的这些执行过程,才可以定义出相应功能的插件。
因此Maven的生命周期和Maven插件是相辅相成的,只有周期,没有插件,Maven是没有法子执行相应的操作,只有插件,没有周期,插件将失去了意义,在这里,可以很好的赞叹Maven的开发者多么智慧的头脑,以及多好的设计原则。
(待修改...)