maven的核心概念
1 简单的核心概念
1.1 坐标
groupId、artifactId、version,很简单,这三个坐标定位到了该依赖的位置,有了它们就可以下载该依赖了。
1.2 依赖
如果一个jar包使用了另外一个jar包中的类,那么就说该jar包依赖另外一个jar包。
1.3 仓库
jar包放在仓库中,方便共享。
2 难的核心概念
2.1 生命周期
同一套生命周期的各个阶段之间是有相互依赖关系的,后面的阶段会依赖前面的阶段,也就是说,调用后面的阶段的时候会触发前面阶段的插件的执行。
比如maven test会触发它前面的validate、initialize、compile的执行。
触发生命周期阶段的执行本质上是触发该阶段对应的插件的执行。
2.1.1 生命周期和插件之间的关系
生命周期的工作是插件完成的,生命周期和插件协同工作,密不可分。
2.2 三套生命周期
每套生命周期之间是相互独立的,触发某套生命周期的时候不会对其它套生命产生影响。
2.2.1 clean生命周期
pre-clean->clean->post-clean
2.2.2 default生命周期
validate->initialize->compile->test->package->verify->install->deploy
2.2.3 site生命周期
这套生命周期可以不管。
生命周期是抽象的,具体的工作是由相应的插件完成的。
2.2 插件
2.2.1 常用的插件
maven-shade-plugin maven-shade-plugin 只存在一个goal shade:shade,需要将其绑定到 phase package 上。
maven-compiler-plugin 编译。
maven-surefire-plugin 执行测试用例的插件。
protobuf-maven-plugin 默认绑定到generate-sources阶段,compiles main .proto definitions into Java files and attaches the generated Java sources to the project,所以,在java代码中可以访问到这些生成的java代码,这是如何做到的?
2.2.2 插件绑定
本质上是maven的生命周期的阶段和插件的目标相互绑定,用以完成实际的构建任务。
2.2.3 插件所绑定的生命周期
maven-compiler-plugin:compile <--> compile
maven-compiler-plugin:testCompile<-->test-compile
maven-surefire-plugin:test <--> test
maven-shade-plugin:shade<-->package
2.2.4 插件的目标
每个插件有多个目标,每个目标对应一个功能。

冒号前面是插件前缀,后面是插件目标。
2.2.5 一个生命周期对应一个插件目标
如果没有指定<phase>,那么就会绑定到插件默认的生命周期阶段上。如果插件没有默认生命周期阶段,那么插件目标将不会被执行。
当多个插件目标绑定到同一生命周期阶段的时候、顺序是按照插件声明的顺序来决定目标的执行顺序。
如果一个生命周期阶段有默认的插件目标,现在又设置了一个插件目标,那么设置的插件目标会覆盖默认的插件目标吗?
暂时认为是覆盖的。
2.3 继承和聚合
这个暂放。
3 各个插件参考资料
http://maven.apache.org/plugins/maven-compiler-plugin/index.html
maven的核心概念的更多相关文章
- 理解maven的核心概念
原文出处:http://www.cnblogs.com/holbrook/archive/2012/12/24/2830519.html 好久没进行java方面的开发了,最近又完成了一个java相关的 ...
- Maven学习(四)-- Maven的核心概念
摘自:http://www.cnblogs.com/xdp-gacl/p/4051819.html 一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1. ...
- maven的核心概念——生命周期
第十一章生命周期 11.1 什么是Maven的生命周期 ●Maven生命周期定义了各个构建环节的执行顺序,有了这个清单,Maven就可以自动化的执行构建命令了. ●Maven有三套相互独立的生命周期, ...
- Maven入门-2.Maven一些核心概念介绍
1.Maven仓库2.Maven坐标3.Maven插件和目标4.Maven生命周期4.1 clean:清理项目4.2 default:构建项目(重要)4.3 site:建立项目站点 1.Maven仓库 ...
- Maven 梳理 - 核心概念
Maven坐标 依赖配置 依赖范围 依赖范围scope用来控制依赖和编译,测试,运行的classpath的关系. 主要的是三种依赖关系如下: 1.compile: 默认编译依赖范围.对于编译,测试,运 ...
- maven的核心概念——依赖
一.STS集成maven(以下是mac版的STS) 1.点击Spring Tool Suite,点击preferences maven中的installations 点击add,选择对应的路径即可 点 ...
- maven的核心概念——POM
Project Object Model:项目对象模型.将Java工程的相关信息封装为对象作为便于操作和管理的模型.Maven工程的核心配置.可以说学习Maven就是学习pom.xml文件中的配置. ...
- maven的核心概念——创建war工程
第十七章第四个Maven工程(war工程) 17.1 创建步骤 ①第一步:创建maven web工程 ②第二步:修改web.xml <?xml version="1.0" e ...
- maven的核心概念——聚合
第十六章聚合 16.1 为什么要使用聚合 将多个工程拆分为模块后,需要手动逐个安装到仓库后依赖才能够生效.修改源码后也需要逐个手动进行clean操作.而使用了聚合之后就可以批量进行Maven工程的安装 ...
随机推荐
- Markdown进阶指南
数学公式编辑 Mac OS下建议使用Daum Equation Editor,按照MathType那样写公式,自动生成TeX代码 行内公式:用$...$包住Tex代码 行间公式:用$$..$$包住Te ...
- app store上传图片显示错误:未能创建 屏幕快照
在iTunes Connect中加入一个app后.加入屏幕快照时,依照要求的尺寸上传照片成功,可是在保存的时候提示"未能创建Screenshots for 4-inch iPhone5 an ...
- Catalog的种类
框架中的Catalog 在MEF框架中,包含了4种Catalog,所有的Catalog的是从System.ComponentModel.Composition.Primitives名称空间下的Comp ...
- redis命令_ZREM
ZREM key member [member ...] 移除有序集 key 中的一个或多个成员,不存在的成员将被忽略. 当 key 存在但不是有序集类型时,返回一个错误. 在 Redis 2.4 版 ...
- 从Python的角度来看编码与解码
导语: Python2和Python3中,因为默认字符集的不同而造成的麻烦,简直是程序员的梦魇!要彻底告别这个麻烦,就需要从本质上来理解编码和解码. 为什么要有编码? 对于不会英文的中国人来说,将英文 ...
- Java 堆内存
堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象. 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( Old ).新生代 ...
- oracle,mysql分页
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-/ ...
- 5plus
http://124.173.121.89/wx/index.html?1410766859789
- fiddler获取手机请求
最近由于项目的关系,一直在测试APP,但是比较令人头痛的问题就是,APP的测试没有办法像web的测试那样,可以直接的通过开发工具看到请求和响应,对于一些东西只能去看日志(比较麻烦),偶然间发现了fid ...
- 用C/C++扩展你的PHP 为你的php增加功能
英文版下载: PHP 5 Power Programming http://www.jb51.net/books/61020.html PHP取得成功的一个主要原因之一是她拥有大量的可用扩展.web开 ...