|解析Maven中的生命周期

|解析Maven中的生命周期

解析Maven中的生命周期
生命周期和插件是Maven的两个核心概念 , 实际上我们也一直在使用它们 , 只是没有察觉而已 。
像mvn install或mvn package , 就是它们的具体表现 , 可以说生命周期和插件的联系是密不可分的 。
1.什么是Maven的生命周期Maven的生命周期是一个抽象的概念 , 并不具体指某个操作 , 是Maven经过长时间思考和分析后总结出来的 。 它包括了一个项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等一系列的构建流程 。
但它仅仅是抽象而已 , 并不执行具体操作 , 它的具体操作是交给Maven的各种插件来实现 , 所以说生命周期和插件是密不可分的 。
2.Maven生命周期详解Maven的生命周期并不像我们所想的是一条线 , 它实际上有3套相互独立的生命周期 , 分别是:clean、default和site 。
通常clean生命周期的目的是清理项目上一次构建的生成物 , default生命周期的目的是构建项目 , site生命周期的目的是建立项目站点(这个很少用到) 。
而这三套生命周期 , 又各自都有一些不同的阶段(phase) , 这些阶段就是生命周期中最细化的操作 , 当然它仍然是抽象概念 , 具体操作是给插件做的 。
下面具体的说明这3个生命周期的各个阶段 , 注意是有顺序的 , 各个阶段之间的顺序也是如下的顺序
clean生命周期:
pre-clean:执行清理前的准备工作
clean:清理上一次构建生成的所有文件
post-clean:执行清理后需要完成的工作
clean的生命周期的目的仅是清理项目 , 核心是clean阶段
default生命周期
validate:验证工程是否正确 , 所有需要的资源是否可用 。
initialize:初始化构建状态 , 例如设置属性或创建目录 。
generate-sources:生成包含在编译中的任何源代码 。
process-sources:对源代码进行处理 , 例如过滤任何值 。
generate-resources:生成要包含在所述包中的资源 。
process-resources:将资源复制到目标目录(target目录)中并进行处理 , 准备打包 。
compile:编译项目的源代码
process-classes:后处理编译生成的文件 , 例如对Java类进行字节码增强 。
generate-test-sources:生成包含在编译中的任何测试源代码 。
process-test-sources:对测试源代码进行处理 , 例如过滤任何值 。
generate-test-resources:创建测试资源 。
process-test-resources:将资源复制到测试目标目录中并进行处理 。
test-compile:将测试源代码编译到测试目标目录 。
process-test-classes:后处理测试编译生成的文件 , 例如对Java类进行字节码增强 。
test:使用合适的单元测试框架来测试已编译的源代码 。 这些测试不需要已打包和布署 。
prepare-package:执行打包前的准备工作 。
package:打包 , 把已编译的代码打包成可发布的格式 , 比如jar 。
pre-integration-test:执行集成测试前所需的操作 。 这可能涉及诸如设置所需环境之类的事情 。
integration-test:处理软件包 , 并在必要时部署到可以运行集成测试的环境中 。
post-integration-test:执行集成测试后所需的操作 。 这可能包括清理环境 。
verify:运行任何检查以验证包是否有效并符合质量标准 。
install:将打好的包安装到本地仓库 , 供其他项目使用 。
deploy:将打好的包安装到远程仓库 , 供其他项目使用 。
default生命周期是最核心的 , 它包含了构建项目时真正需要执行的所有步骤 , 虽然看起来很多很杂 , 但是几个常用的阶段我们也能一眼就认出来:complile、test、package、install 。