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..................
随机推荐
- 正宗PC Unix实验环境
首先解释一下PCUNIX环境,在PC服务器上可以安装多种UNIX系统例如ScoUnix,SunSolarisx86系统,BSD系统等等,但是唯一应用在生产系统(例如邮政储蓄,证券和某些银行前置机等)的 ...
- Bootstrap <第一篇>
一.使用Bootstrap要引用的文件 要使用Bootstrap,基本架构要引用如下文件: <link href="bootstrap.min.css" rel=" ...
- DEDECMS自动编号(序号)autoindex属性
让织梦dedecms autoindex,itemindex 从0到1开始的办法! 1 2 3 [field:global name=autoindex runphp="yes"] ...
- Loadrunner:安装LR11时提示缺少vc2005_sp1_with_atl_fix_redist
[问题现象] 安装LR11时提示缺少vc2005_sp1_with_atl_fix_redist: [解决办法] 手动安装缺少的组件,LR安装包中已自带该组件,为何不自动捕捉异常去获取该自带的组件去安 ...
- boost:exception使用实例
/************************************************************************/ /*功能描述: boost exception使用 ...
- javaSE第十一天
第十一天 63 1:Eclipse的概述使用(掌握) 63 2:API的概述(了解) 63 3:Object类(掌握) 63 第十一天 1:Eclipse的概述使用 ...
- 《你是我的小羊驼》游戏ios源码
<ignore_js_op> <ignore_js_op> <ignore_js_op> <ignore_js_op>源码下载:http://code. ...
- 如何实现Android 中断线程的处理
我现在对一个用户注册的功能1.用ProgressDialog将当前页面设成不可操作(保留返回键 退出ProgressDialog)2.用一个线程clientThread执行数据的提交和返回 问题:考虑 ...
- 实例分析ELF文件静态链接
参考文献: <ELF V1.2> <程序员的自我修养---链接.装载与库>第4章 静态链接 开发平台: [thm@tanghuimin static_link]$ uname ...
- WAMP搭建
win2003Apache+PHP+Mysql+PHPmyadmin 软件版本: Apacheèhttpd-2.2.25-win32-x86-no_ssl.msi php-5.4.3-Win32-VC ...