主页 > 新闻资讯 > 大数据开发怎么学?Maven生命周期

大数据开发怎么学?Maven生命周期

作者:游老师 浏览次数: 2021-04-10 13:50
在昨天的文章中,我们了解了一些关于Maven的基础知识,距离大数据开发的基础构建又进了一步。本期我们依然学习Maven的相关知识,带来的是maven的生命周期的一些基础知识。下面就开始今天的学习。
一、maven生命周期
Maven为什么如此强大以至于成为大数据开发的必修课?其中的一个重要的原因就是因为它有一个十分完善的生命周期模型(lifecycle)。这个生命周期可以从两方面来理解,第一:顾名思义,运行Maven的每个步骤都由它来定义的,这种预定义的默认行为使得我们使用Maven变得简单,相比而言,Ant的每个步骤都要你手工去定义。第二:这个模型是一种标准,在不同的项目中,使用Maven的接口是一样的,这样就不用去仔细理解每个项目的构建了,一般情况下,mvn clean install 这样的命令是通用的。我想,一定是吸收了许多项目的经验,Maven才能定义出如此完善的模型。
二、Maven的套三
Maven拥有三套相互独立的生命周期,这里需要注意一下:“三套”,“相互独立”这两个词需要好好看清楚,初学者容易将Maven的生命周期看成一个整体,其实不然,Maven的生命周期是由三个独立的生命周期组成的。
这三套生命周期分别是:
(1)Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
Clean 生命周期在日常开发中,也会用到,但远不如 Default 生命周期频繁,例如迁移项目后,一般都需要清理一下,但从名字也能看出来,也仅限于清理。
阶段描述:
pre-clean 预清理:在实际项目清理之前执行所需的过程
clean 清理:删除以前生成的所有文件
post-clean 后清理:执行完成项目清理工作所需的流程
(2)Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
Default 生命周期在实际开发中是最常用的生命周期
阶段描述:
validate 确认:确认项目是正确的,所有必要的信息都是可用的
initialize 初始化:初始化构建状态,例如设置属性或创建目录
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 将测试源代码编译到测试目标目录中
process-test-classes 对测试编译生成的文件进行后处理,参考process-classes
test 测试
prepare-package 预打包:在包装前进行任何必要的准备工作
package 打包:将编译后的代码打包成可分发的格式,例如JAR包
pre-integration-test 预集成测试:在执行集成测试之前执行所需的操作
integration-test 集成测试:处理和部署到可以运行集成测试的环境中
post-integration-test 后集成测试:执行集成测试后所需的操作
verify 验证:运行任何检查来验证包是否有效并满足标准
install 安装:将包安装到本地存储库中,作为本地其他项目中的依赖项使用
deploy 打包:将最终的包复制到远程存储库,以便与其他开发人员和项目共享
(3)Site Lifecycle 生成项目报告,站点,发布站点。
阶段描述:
pre-site在实际项目站点生成之前执行所需的过程
site生成项目的站点文档
post-site执行完成站点生成和准备站点部署所需的流程
site-deploy将生成的站点文档部署到指定的web服务器
再次强调下:它们都是相互独立的,你可以仅仅只能调用clean来清理工作目录或调用site来生成站点,当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。

三、生命周期与插件的关系
生命周期的阶段(phase)组成了项目的完整过程,但这些过程具体由谁来实现呢?这就是插件,maven的核心代码量其实很少。因为它的大部分实现都是由插件来完成的。比如:test阶段就是由maven-surefire-plugin实现。在pom.xml中我们可以设置指定插件目标(goal)与阶段绑定,当项目构建到达指定phase(阶段)时,就会触发这些插件目标的执行。一个插件有时候会实现多个阶段。例如maven-compiler-plugin插件分别实现了compile和testCompile。
总结如下:
1、生命周期的阶段可以绑定具体的插件及目标
2、不同配置下同一个阶段可以对应多个插件和目标
3、phase==>plugin==>goal(目标)

以上就是本期Maven生命周期的所内容了,本期最值得注意的就是maven生命周期是由三个相互独立的生命周期组成的,要发挥各自的用处,不要用错了。
希望大家点个关注,及时收取最新文章推送,想了解更多敬请咨询加米谷大数据。
有问题的欢迎在评论区留言,如有侵权请告知。
 
热点排行
推荐文章
立即申请>>