maven学习手记 - 2
学习目标
maven 的插件和目标;
maven 的生命周期和阶段。
前言
在手记1中看到执行 mvn clean package 时,maven 自动执行了compile 和 test 操作。
compile、test和package属于一个生命周期的不同阶段。在没有特意设置的情况下,执行生命周期内一个阶段的操作会默认执行这个阶段及之前阶段的操作。有点绕口是吧,稍后慢慢说清楚。
这里有几个名词:
lifecycle -> 生命周期;
phase –> 阶段;
plugin -> 插件;
goal –> 目标 。
接下来主要就围绕这几个名词来说。
插件和目标
简要地说,一个目标是一个工作单元,一个插件是一个或多个目标的集合。
在上一篇文章中,使用了 mvn archetype:generate 这个命令来生成项目。其中archetype是一个插件的名字,generate是目标的名字。命令的意思是告诉maven执行插件archetype的generate目标。
插件和目标的用法就是如实例中一样 pluginName:goalName。
回到上篇文章中创建的项目mvntest中,执行mvn clean命令:

再执行mvn compile命令:

执行 mvn test 指令:

留意下用红线标识的位置,maven所执行的清理和编译的命令是调用了相应的插件。
实际上就是这样子的,在周期和阶段中,maven自己不执行具体的功能,具体的功能由插件来实现,一个插件可以实现多个目标(参考test阶段执行的内容)。
生命周期和阶段
在上面的示例中,执行了mvn compile 和 mvn test 两个指令。compile和test是maven生命周期的不同阶段。
生命周期指项目的构建过程。它包含了一系列有序的阶段。每一个阶段就是项目构建过程中的一个步骤。
maven默认的生命周期有三个:clean、default(build)和site。
clean:清理生命周期;
default:编译和部署生命周期;
site:生成报表和工程文档生命周期。
点击 http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference 查看生命周期及其绑定的阶段的信息。
maven的生命周期相互独立,而且没有一定的顺序关系。每个生命周期划分为不同的阶段。同一个生命周期中的阶段有着明确的顺序关系。同一个生命周期中的阶段必须按既定的顺序执行。
插件目标可以被绑定到项目生命周期阶段上。每个生命周期阶段可以绑定一个或多个插件目标。
在default生命周期中,绑定的插件目标和packaging属性有关。
当项目构建过程中逐步通过某个阶段时,就会执行这个阶段的所有插件目标。
点击http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Built-in_Lifecycle_Bindings查看生命周期绑定的插件目标。
maven学习手记 - 2的更多相关文章
- maven学习手记 - 3
学习目标 maven插件的定义: maven插件的使用. 前言 在手记2中说过maven的阶段命令是通过插件实现的.在手记1中也有简单的示范过插件的用法.但是总觉得有些泛泛了,想在这里再捋一下,以 ...
- maven学习手记 - 1
学习目标 windows下安装maven环境: 使用命令创建maven项目结构: maven项目编译测试打包安装运行: 在maven项目中使用插件. 在windows下安装maven环境 在win ...
- Linux.NET学习手记(7)
前一篇中,我们简单的讲述了下如何在Linux.NET中部署第一个ASP.NET MVC 5.0的程序.而目前微软已经提出OWIN并致力于发展VNext,接下来系列中,我们将会向OWIN方向转战. 早在 ...
- Linux.NET学习手记(8)
上一回合中,我们讲解了Linux.NET面对OWIN需要做出的准备,以及介绍了如何将两个支持OWIN协议的框架:SignalR以及NancyFX以OwinHost的方式部署到Linux.NET当中.这 ...
- 关于《Linux.NET学习手记(8)》的补充说明
早前的一两天<Linux.NET学习手记(8)>发布了,这一篇主要是讲述OWIN框架与OwinHost之间如何根据OWIN协议进行通信构成一套完整的系统.文中我们还直接学习如何直接操作OW ...
- Maven学习-目录结构
在前一篇文章中,我们介绍了什么是Maven,以及如何用Maven来构建我们的项目.不了解Maven的童鞋,可以看这里Maven学习-入门.在这篇文章中,我们将学习Maven的项目的目录结构相关的内容. ...
- EF框架学习手记
转载: [ASP.NET MVC]: - EF框架学习手记 1.EF(Entity Framework)实体框架EF是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架 ...
- Maven学习笔记-03-Eclipse下maven项目在Tomcat7和Jetty6中部署调试
现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...
- maven学习之二M2_HOME简介
在<maven学习之一>中介绍了M2_HOME指向了maven的安装目录,如下图: weiwan..................
随机推荐
- 在Web中实现C/S模式的Tab
在探讨C/S模式的Tab之前,我们先总结一下B/S模式的Tab通常是什么样的.web中常见的tab设计通常是用于分节展示大量信息以提高页面空间的利用率,而且这些信息通常是静态的,或者交互比较简单.通过 ...
- HTML5--》details
<details>是HTML5的新标签,用于描述文档或文档某个部分的细节. 目前只有 Chrome 和 Safari 6 支持 <details> 标签. 与 <summ ...
- poj2070
#include <stdio.h> int main(){ double a,b,c; int s; while(~scanf("%lf%lf%lf",&a, ...
- Semantic UI 使用回调函数
html代码: <div class="ui dropdown item" id="region"> <div class="tex ...
- CentOS6.5配置vim使支持Python
CentOS6.5下开启vim对python的支持,配置方法如下: 1.检查系统已经安装了RPM包vim-enhanced; 2.复制默认的.vimrc初始化文件: # cp /usr/share/v ...
- zencart安装第三步出现空白
问题描述:在安装zencart时,在第三步同意协议,然后点击下一步时,页面经过漫长的等待后就显示空白. 解决方法:打开php.ini,将max_execution_time = 30 -> ma ...
- aspx页面中用Input 标签实现上传图片功能
实现上传图片功能需单独的建立一个aspx页面, 其中前台页面需要注意两点: a)实现上传功能的input的type="file" b)设置请求报文头为 enctype=" ...
- 网页打包安卓APP流程
搭建环境过程: 1. 安装JDK. 参见http://www.cnblogs.com/Li-Cheng/p/4334985.html. 注:实质上到该网址上下载好JDK安装包,安装后添加一个环境变量: ...
- 利用js+canvas实现的时钟效果图
canvas+js时钟特效 运用js+canvas方面的知识完成一个时钟的效果图,再利用for循环实现指针的转动效果: <!--网页文档的声明--> <!doctype html&g ...
- sqoop的eval工具
eval的作用:Evaluate a SQL statement and display the results,也就是说eval像是一个数据库的客户端工具. 一.使用eval来查询表 $ sqoop ...