学习目标

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的更多相关文章

  1. maven学习手记 - 3

    学习目标 maven插件的定义: maven插件的使用.   前言 在手记2中说过maven的阶段命令是通过插件实现的.在手记1中也有简单的示范过插件的用法.但是总觉得有些泛泛了,想在这里再捋一下,以 ...

  2. maven学习手记 - 1

    学习目标 windows下安装maven环境: 使用命令创建maven项目结构: maven项目编译测试打包安装运行: 在maven项目中使用插件.   在windows下安装maven环境 在win ...

  3. Linux.NET学习手记(7)

    前一篇中,我们简单的讲述了下如何在Linux.NET中部署第一个ASP.NET MVC 5.0的程序.而目前微软已经提出OWIN并致力于发展VNext,接下来系列中,我们将会向OWIN方向转战. 早在 ...

  4. Linux.NET学习手记(8)

    上一回合中,我们讲解了Linux.NET面对OWIN需要做出的准备,以及介绍了如何将两个支持OWIN协议的框架:SignalR以及NancyFX以OwinHost的方式部署到Linux.NET当中.这 ...

  5. 关于《Linux.NET学习手记(8)》的补充说明

    早前的一两天<Linux.NET学习手记(8)>发布了,这一篇主要是讲述OWIN框架与OwinHost之间如何根据OWIN协议进行通信构成一套完整的系统.文中我们还直接学习如何直接操作OW ...

  6. Maven学习-目录结构

    在前一篇文章中,我们介绍了什么是Maven,以及如何用Maven来构建我们的项目.不了解Maven的童鞋,可以看这里Maven学习-入门.在这篇文章中,我们将学习Maven的项目的目录结构相关的内容. ...

  7. EF框架学习手记

    转载: [ASP.NET MVC]: - EF框架学习手记 1.EF(Entity Framework)实体框架EF是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架 ...

  8. Maven学习笔记-03-Eclipse下maven项目在Tomcat7和Jetty6中部署调试

    现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...

  9. maven学习之二M2_HOME简介

    在<maven学习之一>中介绍了M2_HOME指向了maven的安装目录,如下图: weiwan..................

随机推荐

  1. 【WCF 1】WCF框架宏观了解

    导读:使用WCF框架爱开发项目也有很长一段时间了,最开始的时候,是理解的不深,所以不写博客进行总结.后来是项目赶,发现需要总结的有很多,一直没有把WCF排上日程,尤其是最近研究EF这一块,更是研究了一 ...

  2. extern “C”调用测试与验证-2016.01.06

    1 调用情形说明 在上一篇关于extern “c”原理以及用法中,详细的说明了为什么需要extern “c”以及如何使用它解决c与c++混合编程时遇到的问题.接下来,使用示例验证方式验证c与c++函数 ...

  3. WF4与MVC结合示例

    很多初学者,首先最想解决的问题是:如何将WF与MVC程序相结合.由于Web程序属于长时间运行的流程,因此持续化功能的运用就非常重要了. 本文将结合书签.WorkflowApplication.生命周期 ...

  4. C# 请求外部服务的办法

    )     {                returnMenuBeizhu = ;             ).ToString()                         borrowT ...

  5. Android IOS WebRTC 音视频开发总结(十九)-- kurento

    折腾了一个多星期终于将kurento的环境搭建好(开发阶段的产品,有些BUG要自己解决),所以单独写篇文件来介绍. 下面开始介绍kurento,文章来自博客园RTC.Blacker,转载请说明出处. ...

  6. Transaction 'IREG', Abend 'APCT', at '????'.

    应用的问题: Transactions can fail with an APCT abend, when there is a failure in a transaction attempting ...

  7. JDBC数据库连接(MySQL为例)

    1.什么是JDBC?有什么作用? Java Data Base Connectivity  Java数据库连接协议 是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问. 他提 ...

  8. 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(八)-- 多环境开发

    本篇将演示Asp.Net Core如何在多环境下进行开发适配. 在一个正规的开发流程里,软件开发部署将要经过三个阶段:开发.测试.上线,对应了三个环境:开发.测试.生产.在不同的环境里,需要编写不同的 ...

  9. Setup Factory 程序打包

    1.检测是否已安装 在On Startup中写入如下代码: result1=Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "Software\\sohe ...

  10. Jquery在项目中的总结

    1.构造对象 var _getSearchArg = function () { var argModel = {}; argModel.Txt = value; argModel.Code = va ...