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工程的安装 ...
随机推荐
- Hive 数据倾斜原因及解决方法(转)
在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显.主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些Counters得出的平 ...
- Scrapy使用问题整理(转载)
转载自:http://blog.csdn.net/heu07111121/article/details/50832999 最近尝试使用Scrapy进行数据抓取,并尝试在windows7 64位系 ...
- php_memcahed 使用方法
用php_memcache.dll 扩展库操作方法 1.下载php_memcache.dll 对应的PHP版本拷贝到PHP目录EXT下 2.在php.ini添加扩展extension=php_memc ...
- lua 小技巧
lua 小技巧 把常用的工具函数添加到 _G 里面,所有的文件都可以直接调用: ``` lua -- 在 a 文件中将工具函数添加到 _G: _G.IsEmptyStr = function(str) ...
- Sqlserver 批量数据更改
insert into AAA select GETDATE(),name from BBB where aid=0 update a set a = b.a,b=b.b,c=b.c from t a ...
- javascript 函数声明和函数表达式
定义js函数的方法有两种,1.函数声明 2.函数表达式 这两种方式的区别是:1.函数声明可以先调用后定义(javascript引擎在解释的时候会把所有的函数声明提升)2.函数表达式必须先定义后使用.看 ...
- linux学习笔记29---命令watch
watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行.在Linux下,watch是周期性的执行下个 ...
- spring 集成 redis -- pub/sub
redis除了常用的当做缓存外,还可以当做简单的消息中间件,实现消息发布订阅 spring集成redis,可以使用spring-data-redis 首先引入相关maven依赖(此处我spring相关 ...
- C#版本的xUnit的测试框架模型和xUnit.NET开源项目
1. 参考kent beck的测试驱动写的C#测试框架模型 a) 测试用例: WasRun, 基类为TestCase b) 框架: TestCaseTest用来测试TestCase,本身也是它的子类, ...
- springbatch操作DB
一.需求分析 使用Spring Batch对DB进行读写操作: 从一个表中读取数据, 然后批量的插入另外一张表中. 二.代码实现 1. 代码结构图: 2. applicationContext.xml ...