定义: 生命周期是包含在一个项目构建中的一系列有序的阶段

举个例子来说就是maven 对一个工程进行:

验证(validate)

……

编译源码(compile)

……

编译测试源码(test-compile)

……

单元测试(test)

……

打包(package)

……

安装至本地仓库(install)

复制到远程仓库(deploy)

的这个过就是它的一个生命周期,在上面用了很多“……”,是因为中间有些阶段(phase)省掉了(后面会详细介绍)。在一个生命周期中,每一个阶段(phase)可以理解为一个步骤,这些步骤按照既定的顺序执行来完成一个项目的构建。

生命周期中,各个步骤的工作是谁来干的呢,是插件(plugin),一个插件通常完成一个或多个步骤的工作,每个步骤的工作对应插件的一个目标(goal)。不同的插件结合起来,就可以完成整个项目的构建,例如:编译插件,compiler;测试插件,surefire;打包插件,jar;安装插件,install,部署插件,deploy。

document上说,直接执行后面步骤的命令,会把这个步骤前面的所有操作都做一遍,

但是后面又说了,

Moreover, if a goal is bound to one or more build phases, that goal will be called in all those phases.

Furthermore, a build phase can also have zero or more goals bound to it. If a build phase has no goals bound to it, that build phase will not execute. But if it has one or more goals bound to it, it will execute all those goals

(Note: In Maven 2.0.5 and above, multiple goals bound to a phase are executed in the same order as they are declared in the POM, however multiple instances of the same plugin are not supported. Multiple instances of the same plugin are grouped to execute together and ordered in Maven 2.0.11 and above).

英语不好,大概意思应该是,

如果一个目标(goal)被绑定到一个或多个阶段(phase),执行到这个阶段的时候都会调用这个目标(goal),

而且,一个阶段可以有0个以上的目标(goal)绑定,没有目标绑定,就不执行,有几个目标绑定,就执行几个。

(maven 2.0.5+的版本,对于多个goals绑定到一个阶段的,会按照POM中定义的顺序执行,但是不支持一个插件对应多个实例。一个插件多个实例的情况在 maven2.0.11+上才被支持,它们被划为一个组,一起执行)

所以我在想,如果执行了“mvn deploy”,但是没有定义前面的某些阶段,会怎样?等我测试了再补充这个地方(TODO)。

下面详说一下maven的生命周期。

maven,有三个:

Clean Lifecycle  在进行真正的构建之前进行一些清理工作。

Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。

Site Lifecycle 生成项目报告,站点,发布站点。

先说简单的两个 Clean Lifecycle 和 Site Lifecycle

Clean Lifecycle

pre-clean  执行一些需要在clean之前完成的工作

clean  移除所有上一次构建生成的文件

post-clean  执行一些需要在clean之后立刻完成的工作

Site Lifecycle

pre-site     执行一些需要在生成站点文档之前完成的工作

site    生成项目的站点文档

post-site     执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

site-deploy     将生成的站点文档部署到特定的服务器上

然后看,最常用,最重要的,名字却不起眼的

Default Lifecycle

validate    验证工程是否正确,所需的信息是否完整

initialize    初始化构建平台,例如:设置properties或创建目录

generate-sources

process-sources

generate-resources

process-resources  复制并处理资源文件,至目标目录,准备打包

compile    编译源代码

process-classes    源码编译后的后期处理,比如java字节码的增强(优化?)

generate-test-sources

process-test-sources

generate-test-resources

process-test-resources

test-compile    编译测试源代码(默认是test目录下)

process-test-class

test    执行单元测试

prepare-package

package    将工程文件打包为指定的格式,例如JAR,WAR等

pre-integration-test

integration-test    集成测试

post-integration-test

verify    检查package是否有效、符合标准

install    将包安装至本地仓库,以让其它项目依赖。

deploy    将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

参考:

Introduction to the build lifecycle,maven document,http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

Maven生命周期详解,juvenshun,http://juvenshun.iteye.com/blog/213959

maven生命周期(lifecycle)—— maven权威指南学习笔记(四)的更多相关文章

  1. IDA Pro 权威指南学习笔记(四) - IDA 用户界面的基本规则

    基本规则: IDA 不提供撤销功能 如果由于不小心按下某个键,导致数据库文件发生意外,这时需要将显示窗口恢复到以前的状态 几乎所有的操作都有其对应的菜单项.热键和工具栏按钮 IDA 的工具栏高度可配置 ...

  2. netty权威指南学习笔记四——TCP粘包/拆包之粘包问题解决

    发生了粘包,我们需要将其清晰的进行拆包处理,这里采用LineBasedFrameDecoder来解决 LineBasedFrameDecoder的工作原理是它依次遍历ByteBuf中的可读字节,判断看 ...

  3. HTTP权威指南-学习笔记

    目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...

  4. JavaScript 权威指南-学习笔记(一)

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ...

  5. maven权威指南学习笔记(四)—— maven生命周期(lifecycle)

    定义: 生命周期是包含在一个项目构建中的一系列有序的阶段 举个例子来说就是maven 对一个工程进行: 验证(validate) -- 编译源码(compile) -- 编译测试源码(test-com ...

  6. maven权威指南学习笔记(一)——简介

    maven是什么?有什么用? Maven是一个项目管理工具,它包含了     一个项目对象模型 (Project Object Model),     一组标准集合,     一个项目生命周期(Pro ...

  7. maven 简介 —— maven权威指南学习笔记(一)

    maven是什么?有什么用? Maven是一个项目管理工具,它包含了 一个项目对象模型 (Project Object Model), 一组标准集合, 一个项目生命周期(ProjectLifecycl ...

  8. CSS权威指南学习笔记系列(1)CSS和文档

    题外话:HTML是一种结构化语言,而CSS是它的补充:这是一种样式语言.CSS是前端三板斧之一,因此学习CSS很重要.而我还是菜鸟,所以需要加强学习CSS.这个是我学习CSS权威指南的笔记,如有不对, ...

  9. Hadoop权威指南学习笔记二

    MapReduce简单介绍 声明:本文是本人基于Hadoop权威指南学习的一些个人理解和笔记,仅供学习參考,有什么不到之处还望指出,一起学习一起进步. 转载请注明:http://blog.csdn.n ...

随机推荐

  1. LoadRunner FAQ

    LoadRunner FAQ web_concurrent_start和web_concurrent_end web_concurrent_start 语法: int web_concurrent_s ...

  2. hdoj1102 Constructing Roads(Prime || Kruskal)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1102 题意 有n个村庄(编号1~n),给出n个村庄之间的距离,开始时n个村庄之间已经有了q条路,现在需 ...

  3. poj2492 A Bug's Life(带权并查集)

    题目链接 http://poj.org/problem?id=2492 题意 虫子有两种性别,有n只虫子,编号1~n,输入m组数据,每组数据包含a.b两只虫子,表示a.b为不同性别的虫子,根据输入的m ...

  4. 纯CSS仿制Google女生节Doodle

    看到google今天的女生节Doodle,自己用纯css仿制一个,送给老妈.老婆.女儿. 大家可以点这里在线观看效果,点这里下载收藏效果. 实现原理 1.利用checkbox侦听处理单击事件. 2.单 ...

  5. Bootstrap入门六:表单

    表单主要包含表单域.输入框.下拉框.单选框.多选框和按钮等控件. 1.基本实例 单独的表单控件会被自动赋予一些全局样式.所有设置了 .form-control 类的 <input>.< ...

  6. 历史文章分类汇总-Anaconda安装第三方包(whl文件)

    本文主要是对公众号之前发布的文章进行分类整理,方面大家查阅,以后会不定期对文章汇总进行更新与发布.   一.推荐阅读: Anaconda安装第三方包(whl文件) 福布斯系列之数据分析思路篇 福布斯系 ...

  7. Am335x SPI 驱动测试

    内核版本:3.14.65 CPU:Am335x 1.编译内核: make menuconfig Device Drivers -> <*>SPI support -> < ...

  8. Highmaps网页图表教程之图表配置项结构与商业授权

    Highmaps网页图表教程之图表配置项结构与商业授权 Highmaps图表配置项结构 Highmaps最核心的部分就是图表配置项.用户通过图表配置项来对标题进行定制,从而实现自己所要的效果.所以,掌 ...

  9. 支撑大规模公有云的Kubernetes改进与优化 (2)

    接下来我们按照kubernetes创建容器的详细过程,以及可能存在的问题. 一.API Server的认证,鉴权,Quota 当客户需要创建一个pod的时候,需要先请求API Server. Kube ...

  10. bzoj4668: 冷战 并查集按秩合并

    题目链接 bzoj4668: 冷战 题解 按秩合并并查集,每次增长都是小集合倍数的两倍以上,层数不超过logn 查询路径最大值 LCT同解 代码 #include<bits/stdc++.h&g ...