Maven生命周期和插件机制
Maven中的一个非常重要的概念是生命周期和插件,这篇文章重点介绍下Maven的生命周期。
Maven的生命周期是抽象的,具体的功能是有具体的插件来完成的,Maven有相当多的功能插件,以至于Maven在项目管理上无所不能。Maven从大量的项目构件工具中学习和反思,总结出一套高度完善、易于扩展的生命周期,这个生命周期包含项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有构件步骤。
在重复说一下Maven的生命周期是抽象的,本身不做任何工作,实际的任务都是交由插件来完成的。
Maven插件机制,Maven设计了插件机制来完成具体的任务,也就是项目的每一个构件步骤都可以绑定一个或多个插件行为,而且Maven为大多数构件步骤绑定默认的插件,例如针对编译的插件有maven-compiler-plugin,针对测试的插件有maven-surefire-plugin等,在一些特殊的需求时,用户可以配置插件定制构件行为,也可以自己编写插件。
Maven的生命周期详解:
Maven有三套项目独立的生命周期,他们分别是clean 、 default 、site 。
clean是项目清理的生命周期。
default是构件项目的生命周期。
site是建立项目站点生命周期。
三套独立的生命周期的每一个生命周期都包含一些阶段,这些阶段是有顺序的,并且后面的阶段依赖前面的阶段,用户最直接的方式就是调用这些生命周期阶段。再次强调三套生命周期是互相独立的,每一套生命周期里面的一些阶段是相互有顺序的互相依赖的。
下面介绍每一套生命周期:
1. clean生命周期
是清理项目的生命周期,它包含三个阶段
<1>. pre-clean执行一些清理前需要完成的工作
<2>. clean清理上一次构件生成的文件
<3>. post-clean执行一些清理后需要完成的工作
2. default生命周期
是项目构建时所需要执行的所有步骤,它是生命周期最核心的部分,它包含如下阶段
<1>. validate
<2>. initialize
<3>. generate-sources
<4>. process-source 处理项目主资源文件,一般来说,是对src/main/resource目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中
<5>. generate-resources
<6>. process-resources
<7>. compile编译项目的主源码,一般来说,是编译scr/main/java目录下的Java文件至项目输出的主classpath目录中
<8>. process-classes
<9>. generate-test-sources
<10>. process-test-sources 处理项目测试资源文件,一般来说,是对src/test/resources目录的内容进行变量替换等工作后,复制到项目输出的测试classpath目录中
<11>. generate-test-resources
<12>. process-test-resources
<13>. test-compile编译项目的测试代码。一般来说,是编译src/test/java目录下的Java文件至项目输出的测试classpath目录中
<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 将包安装到Maven本地仓库,供本地其他Maven项目使用
<23>. deploy 将最终的包复制到远程仓库,供其他开发人员和Maven项目使用。
3. site 生命周期
<1>. pre-site 执行一些在生成站点之前需要完成的工作
<2>. site 生成项目站点文档
<3>. post-size 执行一些在生成项目站点之后需要完成的工作
<4>. site-deploy 将生成的项目站点发布到服务器上
再次强调一下,Maven三套生命周期是项目独立的,而每一套独立的生命周期里面的一些阶段是有顺序执行,举例,如在命令行窗口执行命令: mvn clean 实际上是先执行pre-clean 在执行 clean 。
Maven生命周期和插件机制的更多相关文章
- maven生命周期和插件
maven生命周期和插件 生命周期 maven的生命周期有三套,互相独立.每个生命周期含有不同阶段,常用如下 clean 清理项目 pre-clean 执行清理前需要完成的工作 clean 清理上一次 ...
- [maven] 生命周期和插件
maven生命周期和插件 生命周期 maven的生命周期有三套,互相独立.每个生命周期含有不同阶段,常用如下 clean 清理项目 pre-clean 执行清理前需要完成的工作 clean 清理上一次 ...
- 05 Maven 生命周期和插件
Maven 生命周期和插件 除了坐标.依赖以及仓库之外, Maven 另外两个核心概念是生命周期和插件.在有关 Maven 的日常使用中,命令行的输入往往就对应了生命周期,如 mvn package ...
- Maven学习总结(16)——深入理解maven生命周期和插件
在项目里用了快一年的maven了,最近突然发现maven项目在eclipse中build时非常慢,因为经常用clean install命令来build项目,也没有管那么多,但最近实在受不了乌龟一样的b ...
- MAVEN学习笔记之Maven生命周期和插件简介(3)
MAVEN学习笔记之Maven生命周期和插件简介(3) clean compile site三套生命周期相互独立. clean pre-clean 执行清理前的工作 clean 清理上一次构建生成的所 ...
- Maven系列学习(三)Maven生命周期和插件
Maven生命周期和插件 Maven另外的两个核心概念就是生命周期和插件,Maven的生命周期都是抽象的,其实实际行为都是由插件来完成的,生命周期和插件两者协同工作 1.生命周期 Maven的生命周期 ...
- maven生命周期与插件
目录 Maven生命周期 clean default site 命令与对应周期 插件与绑定 插件目标 插件绑定 内置绑定 自定义绑定 插件配置 本文主要是针对<maven实战>书中关键知识 ...
- (十二)Maven生命周期和插件
除了坐标.依赖以及仓库之外,Maven的另外两个核心概念是生命周期和插件.在有关Maven的日常使用中,命令行的输入往往就对应了生命周期,如mvn package就表示执行默认生命周期阶段packag ...
- Maven 生命周期 和插件
1.3 生命周期1.3.1 什么是生命周期? Maven生命周期就是为了对所有的构建过程进行抽象和统一.包括项目清理.初始化.编译.打包.测试.部署等几乎所有构建步骤. 生命周期可以理解为构建工程的步 ...
随机推荐
- HDU 4280Island Transport(Dinc非STL 模板)
题意: n岛m条路,然后是 n个岛的坐标,然后是m条双向路,包括 岛和 岛 之间 最大客流量,让求 最左边的岛 到右边的岛 最大客流量 分析: 建图 以 左边的岛为原点,最右边的为终点求最大客流量. ...
- Django中Celery的实现介绍(一)
Django中Celery的实现 Celery官网http://www.celeryproject.org/ 学习资料:http://docs.jinkan.org/docs/celery/ Cele ...
- javascript undefined 和void0
underfine === void 0 并不完全成立 undefined不是关键字 不是保留字 在IE低版本下可以被赋值 所以代码中一般以void 0 代替undefined
- matlab和C/C++混合编程--调用opencv
最近的我们已经将整个项目搭起来了,项目比较复杂.由于我们做的是检索系统,所以我们用asp.net(c#)做了网页,但是算法的实现是在matlab下,所以我们不得不用matlab生成动态链接库dll,然 ...
- AngularJs:String类型和JSON相互转换
最近一周做了一个页面,制作的过程中遇到各种问题,从中可以看出本人的js基础还不够扎实,angularjs也只是刚入门的水平,现在将制作过程中遇到的问题一一汇总,方便以后查阅. 一.String类型和J ...
- sed,grep,awk命令常用法
查看当天nginx访问日志中2016:03:25到2016:05点passport.mingxiao.com域名访问量最多的url,可以查看网站是否被刷. 法一: sed -n '/2016:03:2 ...
- Oracle连接查询
一.内连接和外连接 内连接用于返回满足连接条件的记录:而外连接则是内连接的扩展,它不仅会满足连接条件的记录,而且还会返回不满足连接条件的记录,语法如下: select table1.column ...
- 和安全有关的那些事(非对称加密、数字摘要、数字签名、数字证书、SSL、HTTPS及其他)
转自http://blog.csdn.net/bluishglc/article/details/7585965 对于一般的开发人员来说,很少需要对安全领域内的基础技术进行深入的研究,但是鉴于日常系统 ...
- 微软.NET序列化格式
官方文档 https://msdn.microsoft.com/en-us/library/cc236844.aspx 对比 http://www.codeproject.com/Articles/3 ...
- js变量在属性里的写法 常用mark 多个DL遍历添加一个父级DIV
标记用 js变量比如url链接一般都是a里面的href属性值 在js里单引号链接 以后再忘记就能有地方找了 例子: /* 添加1200 居中div 包裹 获取元素集合 上层元素100% * @ele ...