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工程的安装 ...
随机推荐
- 转 OAuth 2.0授权协议详解
http://www.jb51.net/article/54948.htm 作者:阮一峰 字体:[增加 减小] 类型:转载 时间:2014-09-10我要评论 这篇文章主要介绍了OAuth 2.0授权 ...
- HTTPSConnectionPool(host='xxxxx', port=443): Max retries exceeded with url:xxxxxxxx (Caused by NewConnectionError('<urllib3.connect,Max retries exceeded with ,(Caused by NewConnectionError
HTTPSConnectionPool(host='f6ws-sha8re-o88k.s3.ama66zaws.com', port=443): Max retries exceeded with u ...
- Entity Framework Code First使用者的福音 --- EF Power Tool使用记之一(转载)
好像蛮长时间没有新文章带给大家了.前几天出差再加上忙着公司里的活儿,几乎都没时间上博客园了.今天正好有些时间,为大家简单介绍EF产品组新发布的一个牛逼的小工具——EF Power Tool(翻译的话, ...
- CentOs 7 安装总结
1.安装 前几天安装了CentOs 7系统,弄了好几次都进不去图形安装界面,总是进入 "dracut:/# _".本以为是系统盘没做好,就用了另外几种工具重做了盘,还是一样.后来在 ...
- The Definitive Guide To Django 2 学习笔记(四) 动态URLs
前面的例子中,虽然时间是动态可变的,但它的URL却是静态的(/time/).很多时候,URL也是需要动态改变,然后展示出不通的内容来.现在我们就来创建一个可以动态改变URL的例子. 如果URLconf ...
- mysql查询条件字段值末尾有空格的问题
mark MYSQL的binary解决mysql数据大小写敏感问题的方法
- Adversarial Training
原于2018年1月在实验室组会上做的分享,今天分享给大家,希望对大家科研有所帮助. 今天给大家分享一下对抗训练(Adversarial Training,AT). 为何要选择这个主题呢? 我们从上图的 ...
- EasyUI简单CRUD
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> < ...
- 【PyQt】分析承载界面
承载界面: # coding=utf-8 import sys from PyQt4.QtCore import * from PyQt4.QtGui import * import class_da ...
- 【Python】求素数-稍加优化
print 'Find prime number smaller then input number \n' print 'Please input a number:' import datetim ...