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生命周期和插件机制的更多相关文章

  1. maven生命周期和插件

    maven生命周期和插件 生命周期 maven的生命周期有三套,互相独立.每个生命周期含有不同阶段,常用如下 clean 清理项目 pre-clean 执行清理前需要完成的工作 clean 清理上一次 ...

  2. [maven] 生命周期和插件

    maven生命周期和插件 生命周期 maven的生命周期有三套,互相独立.每个生命周期含有不同阶段,常用如下 clean 清理项目 pre-clean 执行清理前需要完成的工作 clean 清理上一次 ...

  3. 05 Maven 生命周期和插件

    Maven 生命周期和插件 除了坐标.依赖以及仓库之外, Maven 另外两个核心概念是生命周期和插件.在有关 Maven 的日常使用中,命令行的输入往往就对应了生命周期,如 mvn package ...

  4. Maven学习总结(16)——深入理解maven生命周期和插件

    在项目里用了快一年的maven了,最近突然发现maven项目在eclipse中build时非常慢,因为经常用clean install命令来build项目,也没有管那么多,但最近实在受不了乌龟一样的b ...

  5. MAVEN学习笔记之Maven生命周期和插件简介(3)

    MAVEN学习笔记之Maven生命周期和插件简介(3) clean compile site三套生命周期相互独立. clean pre-clean 执行清理前的工作 clean 清理上一次构建生成的所 ...

  6. Maven系列学习(三)Maven生命周期和插件

    Maven生命周期和插件 Maven另外的两个核心概念就是生命周期和插件,Maven的生命周期都是抽象的,其实实际行为都是由插件来完成的,生命周期和插件两者协同工作 1.生命周期 Maven的生命周期 ...

  7. maven生命周期与插件

    目录 Maven生命周期 clean default site 命令与对应周期 插件与绑定 插件目标 插件绑定 内置绑定 自定义绑定 插件配置 本文主要是针对<maven实战>书中关键知识 ...

  8. (十二)Maven生命周期和插件

    除了坐标.依赖以及仓库之外,Maven的另外两个核心概念是生命周期和插件.在有关Maven的日常使用中,命令行的输入往往就对应了生命周期,如mvn package就表示执行默认生命周期阶段packag ...

  9. Maven 生命周期 和插件

    1.3 生命周期1.3.1 什么是生命周期? Maven生命周期就是为了对所有的构建过程进行抽象和统一.包括项目清理.初始化.编译.打包.测试.部署等几乎所有构建步骤. 生命周期可以理解为构建工程的步 ...

随机推荐

  1. 高可用与负载均衡(7)之聊聊Lvs-DR+Keepalived的解决方案

    今天直接开门见山了,直接说配置吧.首先介绍下我这的环境 如有问题,请联系我18500777133@sina.cn IP 安装软件 192.168.1.7 lvs1+keepalived master角 ...

  2. POJ1144Network(求割点个数)

    题目链接 题意:一共n割点,然后若干行,每行第一个输入一个点,然后若干个点表示与他相连,0单独一行表示一个样例的结束.然后求图中的割点个数 割点:去掉该点之后得到的图不在连通,那么该店就是割点 一般割 ...

  3. DiskFileItemFactory类

    将请求消息实体中的每一个项目封装成单独的DiskFileItem (FileItem接口的实现) 对象的任务由 org.apache.commons.fileupload.FileItemFactor ...

  4. Android应用内语言切换实现(转)

    使用Java反射机制 IActivityManager与ActivityManagerNative都是非公开类,使用Java反射去调用其中的方法. 第一步.使用Android开放的api更改Confi ...

  5. Navicat 的使用(二)

    一,navicat如何写sql语句查询? 方法1:ctrl+q就会弹出一个sql输入窗口,就可以在里面写sql了.写完sql后,直接ctrl+r就执行sql了. 还有一点,写sql语句时,navica ...

  6. PHP实现观察者模式

    <?php //php设计模式观察者模式 /** 被观察者 */ class user implements SplSubject{ public $lognum; public $hobby; ...

  7. ioctlsocket()

    ioctlsocket()是控制套接口的模式. 外文名 ioctlsocket() 含    义 控制套接口的模式 头文件 #include <winsock.h> 性    质 函数 目 ...

  8. Ubuntu——"xxx is not in the sudoers file.This incident will be reported" 错误解决方法

    Ubuntu下普通用户用sudo执行命令时报如题所示错误,解决方法就是在/etc/sudoers文件里给该用户添加权限.如下: 1.切换到root用户下 2./etc/sudoers文件默认是只读的, ...

  9. 第5章 jQuery对表单、表格的操作及更多应用

    本章主要是对前面4章的小结和应用. 一. 表单form应用 表单分为3个组成部分 (1)form标签 表单可包含文本域,复选框,单选按钮等等.表单用于向指定的 URL 传递用户数据. (2)表单域 - ...

  10. Ctrl+Scroll改变所有Editor的缩放比例 (Code::Blocks)

    Settings > Editor > Zooming resizes all editors