1.Maven生命周期介绍
maven有三套生命周期(lifecycle),他们是互相独立的,执行其中一套时不会触发另外两套。
分别是clean(清理项目)、default(构建项目)、site(生成项目的站点)
- clean生命周期的目的是清理项目,
- default生命周期的目的是构建项目,
- site生命周期的目的是建立项目站点。
在每个生命周期又包含一些阶段,各个生命周期中的阶段(phase)却是按顺序执行的,后面的阶段会依赖于前面的阶段。(这个非常重点)
下面我们分别一一介绍。
2.clean生命周期
clean生命周期的目的是清理项目,包括如下三个阶段:
Tips:只要我们执行clean命令,就会执行以下三个阶段。
阶段(phase) | 描述 |
---|---|
pre-clean | 执行一些需要在clean之前完成的工作 |
clean | 移除所有上一次构建生成的文件 |
post-clean | 执行一些需要在clean之后立刻完成的工作 |
这个记住就好,用的时候直接执行clean命令就好,pre-clean和post-clean现在都还没有用到过,用到之后在做整理。
3.Default Lifecycle生命周期(最重点)
Maven最重要就是的Default生命周期,也称构建生命周期,default生命周期定义了真正构建时所需要执行的所有步骤,它是所有生命周期中最核心的部分。
Default生命周期中的阶段是按顺序执行的,后面的阶段会依赖于前面的阶段。每执行一个命令,他之前所有的阶段都需要执行一边,换种说法你只需要执行最后一个需要执行的阶段,就能自动执行这个阶段之前的所有命令了。
3.1.Maven默认生命周期全部阶段展示
阶段(phase) | 描述 |
---|---|
(1)validate | 验证项目是否正确,以及所有为了完整构建必要的信息是否可用 |
(2)initialize | 初始化 |
(3)generate-sources | 生成所有需要包含在编译过程中的源代码 |
(4)process-sources | 处理源代码,比如过滤一些值 |
(5)generate-resources | 生成所有需要包含在打包过程中的资源文件 |
(6)process-resources | 复制并处理资源文件至目标目录,准备打包 |
(7)compile | 编译项目的源代码 |
(8)process-classes | 后处理编译生成的文件,例如对Java类进行字节码增强(bytecode enhancement) |
(9)generate-test-sources | 生成所有包含在测试编译过程中的测试源码 |
(10)process-test-sources | 处理测试源码,比如过滤一些值 |
(11)generate-test-resources | 生成测试需要的资源文件 |
(12)process-test-resources | 复制并处理测试资源文件至测试目标目录 |
(13)test-compile | 编译测试源代码 |
(14)process-test-classes | 复制并处理测试类源码至目标目录 |
(15)test | 运行测试代码 |
(16)prepare-package | 在真正的打包之前,执行一些准备打包必要的操作 |
(17)package | 打包成jar或者war或者其他格式的分发包; |
(18)pre-integration-test | 执行一些在集成测试运行之前需要的动作。如建立集成测试需要的环境 |
(19)integration-test | 如果有必要的话,处理包并发布至集成测试可以运行的环境 |
(20)post-integration-test | 执行一些在集成测试运行之后需要的动作。如清理集成测试环境。 |
(21)verify | 执行所有检查,验证包是有效的,符合质量规范 |
(22)install | 将打好的包安装到本地仓库,供其他项目使用; |
(23)deploy | 复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正式的发布相关) |
一共有23三个阶段,其实我们不必要全部就都记住,只需要记住中要的几个阶段(phase)即可
3.2 一个典型的 Maven 构建(build)生命周期,主要是由以下几个阶段的序列组成的:
阶段 | 处理 | 描述 |
---|---|---|
验证 | validate | 验证项目 验证项目是否正确且所有必须信息是可用的 |
编译 | compile | 执行编译 源代码编译在此阶段完成 |
测试 | Test | 测试使用适当的单元测试框架(例如JUnit)运行测试 |
包装 | package | 打包创建JAR/WAR包,如在 pom.xml 中定义提及的包 |
检查 | verify | 检查对集成测试的结果进行检查,以保证质量达标 |
安装 | install | 安装安装打包的项目到本地仓库,以供其他项目使用 |
部署 | deploy | 部署 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程 |
我们只要记住这几个重要的阶段即可。也是我们经常执行的命令。
我们可以打开IDEA的Maven Projects页面,也可以看到常用的生命周期阶段。
一定要记住这些阶段将被按顺序地执行。
4.Site生命周期
阶段(phase) | 描述 |
---|---|
pre-site | 执行一些需要在生成站点文档之前完成的工作 |
site | 生成项目的站点文档 |
post-site | 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备 |
site-deploy | 将生成的站点文档部署到特定的服务器上 |
这里经常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点,这可是Maven相当强大的功能,Manager比较喜欢,文档及统计数据自动生成,很好看。
(这部分内容以后如有需要,在进行扩展,这里现阶段基本上没用上,以后用上了在好好总结)
总结:最主要的要记住Maven的三个生命周期中的阶段,都是按顺序执行的,后面的阶段会依赖于前面的阶段。每执行一个命令,他之前所有的阶段都需要执行一边。
参考:
https://www.runoob.com/maven/maven-build-life-cycle.html
https://blog.csdn.net/q957967519/article/details/82691729
https://www.liangzl.com/get-article-detail-14374.html