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..................
随机推荐
- mysql时间日期相加相减实现
分享篇mysql中日期的一些操作,就是我们常常会用到的mysql时间日期的相加或者相减的了,这个mysql也自己带了函数,有需要的朋友可以参考一下. 最简单的方法 select TO_DAYS(str ...
- Glassfish数据源配置详解
本文环境: Win2003 + myeclipse6.01 + sqlserver2000(sp4) 1. 安装glassfish——启动,在管理控制台下配置如下 首先配置连接池——大家把sqlser ...
- hadoop,hbase,pig安装
注意端口,办公网只能访问8000-9000的端口 pig的一些lib文件版本 /home/map/hadoop/lib下一些98.5的lib没删除
- Chrome 使用技巧
阅读目录 写在前面 快速切换文件 在源代码中搜索 在源代码中快速跳转到指定的行 使用多个插入符进行选择 设备模式 设备传感仿真 格式化凌乱的js源码 颜色选择器 改变颜色格式 强制改变元素状态(方便查 ...
- Java 编译报错:illegal character
1.检查编译版本:1.5还是1.6 2.重新引用一下Jar包
- C#正则表达式语法规则详解
正则表达式通常包含字母文本(Literaltext)和元字符(metacharacter) 字母文本指的是普通文本如"abcde"可匹配字符串中任何包含"abcde&qu ...
- 条款22 template method 模式
template method 模式,模板方法模式 其实他和C++模板没有关系. 前者是提供的为派生类设计者提供清晰指示的一种方法,这个事实表示"如何去实现基类所规定的契约" 基类 ...
- maven私服搭建和启动遇到的问题
1.私服下载地址:http://www.sonatype.org/nexus/ 2.在win10中安装nexus时提示:wrapper | OpenSCManager failed - 拒绝访问. ( ...
- Win2003打不开https的问题
碰到客户做问题是能打开https://www.baidu.com 这个网页 打不开 https://sha256.alipay.com/SHA256/index.htm支付宝这个网页 解决办 ...
- c#使用DocX添加多级标题
博客转移到 http://jacean.github.io/ 继续分享编程经验 先上效果.可以生成多级标题,但是不能生成1,1.1,1.2这样的自动序列, 只是这样的效果. 实现方法是给Paragra ...