2.Maven之(二)Maven生命周期
转自:https://blog.csdn.net/u012152619/article/details/51473404
我们在开发项目的时候,不断地在编译、测试、打包、部署等过程,maven的生命周期就是对所有构建过程抽象与统一,生命周期包含项目的清理、初始化、编译、测试、打包、集成测试、验证、部署、站点生成等几乎所有的过程。
Maven有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,初学者容易将Maven的生命周期看成一个整体,其实不然。这三套生命周期分别是:
• CleanLifecycle 在进行真正的构建之前进行一些清理工作。
• DefaultLifecycle 构建的核心部分,编译,测试,打包,部署等等。
• SiteLifecycle 生成项目报告,站点,发布站点。
再次强调一下它们是相互独立的,可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。当然也可以直接运行 “mvn clean install site” 运行所有这三套生命周期。
每套生命周期都由一组阶段(Phase)组成,我们平时在命令行输入的命令总会对应于一个特定的阶段。maven中所有的执行动作(goal)都需要指明自己在这个过程中的执行位置,然后maven执行的时候,就依照过程的发展依次调用这些goal进行各种处理。这个也是maven的一个基本调度机制。
每套生命周期还可以细分成多个阶段。
Clean生命周期
Clean生命周期一共包含了三个阶段:
Clean生命周期
pre-clean
执行一些需要在clean之前完成的工作
clean
移除所有上一次构建生成的文件
post-clean
执行一些需要在clean之后立刻完成的工作
命令“mvn clean”中的就是代表执行上面的clean阶段,在一个生命周期中,运行某个阶段的时候,它之前的所有阶段都会被运行,也就是说,“mvn clean” 等同于 “mvn pre-clean clean” ,如果我们运行“mvn post-clean” ,那么 “pre-clean”,“clean” 都会被运行。这是Maven很重要的一个规则,可以大大简化命令行的输入。
Default生命周期
Maven最重要就是的Default生命周期,也称构建生命周期,绝大部分工作都发生在这个生命周期中,每个阶段的名称与功能如下::
Default生命周期
validate
验证项目是否正确,以及所有为了完整构建必要的信息是否可用
generate-sources
生成所有需要包含在编译过程中的源代码
process-sources
处理源代码,比如过滤一些值
generate-resources
生成所有需要包含在打包过程中的资源文件
process-resources
复制并处理资源文件至目标目录,准备打包
compile
编译项目的源代码
process-classes
后处理编译生成的文件,例如对Java类进行字节码增强(bytecode enhancement)
generate-test-sources
生成所有包含在测试编译过程中的测试源码
process-test-sources
处理测试源码,比如过滤一些值
generate-test-resources
生成测试需要的资源文件
process-test-resources
复制并处理测试资源文件至测试目标目录
test-compile
编译测试源码至测试目标目录
test
使用合适的单元测试框架运行测试。这些测试应
该不需要代码被打包或发布
prepare-package
在真正的打包之前,执行一些准备打包必要的操
作
package
将编译好的代码打包成可分发的格式,如
JAR,WAR,或者EAR
pre-integration-test
执行一些在集成测试运行之前需要的动作。如建
立集成测试需要的环境
integration-test
如果有必要的话,处理包并发布至集成测试可以
运行的环境
post-integration-test
执行一些在集成测试运行之后需要的动作。如清
理集成测试环境。
verify
执行所有检查,验证包是有效的,符合质量规范
install
安装包至本地仓库,以备本地的其它项目作为依
赖使用
deploy
复制最终的包至远程仓库,共享给其它开发人员
和项目(通常和一次正式的发布相关)
可见,构建生命周期被细分成了22个阶段,但是我们没必要对每个阶段都了如指掌,经常关联使用的只有process-test-resources、test、package、install、deploy等几个阶段而已。
一般来说,位置稍后的过程都会依赖于之前的过程。这也就是为什么我们运行“mvn install” 的时候,代码会被编译,测试,打包。当然,maven同样提供了配置文件,可以依照用户要求,跳过某些阶段。比如有时候希望跳过测试阶段而直接install,因为单元测试如果有任何一条没通过,maven就会终止后续的工作。
Site生命周期
Site生命周期
pre-site
执行一些需要在生成站点文档之前完成的工作
site
生成项目的站点文档
post-site
执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy
将生成的站点文档部署到特定的服务器上
这里经常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点,这是Maven相当强大的功能。
2.Maven之(二)Maven生命周期的更多相关文章
- maven详解之生命周期与插件
Maven是一个优秀的项目管理工具,它能够帮你管理编译.报告.文档等. Maven的生命周期: maven的生命周期是抽象的,它本身并不做任何的工作.实际的工作都交由"插件"来完成 ...
- MVVM框架(二)---生命周期
一.Vue 生命周期图解: 这张图是官方给出的,大家可能都看过.其中我们重点讲述以下几个钩子函数: beforeCreate --> created beforeMount --> ...
- Maven 的插件和生命周期的绑定
一.Maven 的生命周期 Maven 的生命周期是对所有的构建过程进行抽象和统一.Maven 的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,生命周期只是定义了一系列的阶段,并确定这些阶 ...
- maven的仓库、生命周期与插件
一.仓库 统一存储所有Maven项目共享的构建的位置就是仓库. 仓库分为本地仓库和远程仓库.远程仓库又分为中央仓库(中央仓库是Maven核心自带的远程仓库),伺服(另一种特殊的远程仓库,为节省宽带和时 ...
- maven的核心概念——生命周期
第十一章生命周期 11.1 什么是Maven的生命周期 ●Maven生命周期定义了各个构建环节的执行顺序,有了这个清单,Maven就可以自动化的执行构建命令了. ●Maven有三套相互独立的生命周期, ...
- .net学习笔记---Asp.net的生命周期之二页生命周期
用户请求 从 用户角度来说,我不管你后台经历了什么,我只想要我请求的页面.请求到服务器端,服务器必须得有所表示的是吧,即使不想搭理人家也得让IIS给人家说声:找不到服务器.请求来到服务器端,肯定要让服 ...
- Activity学习(二)——生命周期
一.什么是Activity? 简单的说:Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面.在一个应用程序中通常由多个Activity构成,都会在Manifest.xml中指定一个主的Ac ...
- Servlet的创建二以及生命周期
之前说Servlet可以通过实现Servlet接口来创建,但是我们看到了,需要重写该接口中的所有方法. 创建方式二:Servlet的创建还可以继承抽象类GenericServlet并重写其中的抽象方法 ...
- Unity(二)生命周期LifetimeManager
描述:Unity的生命周期是注册的类型对象的生命周期,而Unity默认情况下会自动帮我们维护好这些对象的生命周期,我们也可以显示配置对象的生命周期,Unity将按照配置自动管理. //创建一个Unit ...
- ASP.NET Core 2 学习笔记(二)生命周期
要了解程序的运行原理,就要先知道程序的进入点及生命周期.以往ASP.NET MVC的启动方式,是继承 HttpApplication 作为网站开始的进入点,而ASP.NET Core 改变了网站的启动 ...
随机推荐
- Hadoop框架基础(一)
** Hadoop框架基础(一) 学习一个新的东西,传统而言呢,总喜欢漫无目的的扯来扯去,比如扯扯发展史,扯扯作者是谁,而我认为这些东西对于刚开始接触,并以开发为目的学者是没有什么帮助的,反而 ...
- if语句练习
输入年月日,首先判断该年是平年闰年并且计算该天是该年的第几天: 判断男女体重是否标准: 体重判断里边出现一个问题:如果性别输入的不是男也不是女,那么会执行输出“请输入正确的性别”:然后底下会继续输出“ ...
- Android项目实战(四十四):浅谈Postman (网络请求调试插件)
前言: Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件. 在项目开发中,可以依赖此工具模拟API测试. 使用详解: 各种情况Api的模拟请求的Postman使用方 ...
- datable
$("#table_d").append("<table id='dmglTable' class='table table-striped table-hover ...
- NodeJS学习笔记 (29)二进制解码-string_decoder(ok)
原文:https://github.com/chyingp/nodejs-learning-guide 自己过一遍: 模块简介 string_decoder模块用于将Buffer转成对应的字符串.使用 ...
- 与 JSON 相关的一些操作 (项目中用到一部分,后续逐渐完善)
1.JSON 打印 console.log(JSON.stringify(data, null, 4)); 2.JSON 格式判断 var isjson = typeof(obj) == " ...
- md5sum---文件校验和
md5sum命令采用MD5报文摘要算法(128位)计算和检查文件的校验和.一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行. MD5算法常常被用来验证网络文件传输的完 ...
- spring AOP的Pointcut注解报错
error at ::0 can't find referenced pointcut spring使用的是4.1.0,在项目中直接复制旧的aspectjweave.jar报错了 然后换成aspect ...
- 把握linux内核设计思想(三):下半部机制之软中断
[版权声明:尊重原创.转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 中断处理程序以异步方式执行,其会打断其它重要代码,其执行时该中 ...
- X的追求道路
X的追求道路 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描写叙述 X在大家的帮助下最终找到了一个妹纸,于是開始了漫漫的追求之路,那 ...