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的核心概念的更多相关文章

  1. 理解maven的核心概念

    原文出处:http://www.cnblogs.com/holbrook/archive/2012/12/24/2830519.html 好久没进行java方面的开发了,最近又完成了一个java相关的 ...

  2. Maven学习(四)-- Maven的核心概念

    摘自:http://www.cnblogs.com/xdp-gacl/p/4051819.html 一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1. ...

  3. maven的核心概念——生命周期

    第十一章生命周期 11.1 什么是Maven的生命周期 ●Maven生命周期定义了各个构建环节的执行顺序,有了这个清单,Maven就可以自动化的执行构建命令了. ●Maven有三套相互独立的生命周期, ...

  4. Maven入门-2.Maven一些核心概念介绍

    1.Maven仓库2.Maven坐标3.Maven插件和目标4.Maven生命周期4.1 clean:清理项目4.2 default:构建项目(重要)4.3 site:建立项目站点 1.Maven仓库 ...

  5. Maven 梳理 - 核心概念

    Maven坐标 依赖配置 依赖范围 依赖范围scope用来控制依赖和编译,测试,运行的classpath的关系. 主要的是三种依赖关系如下: 1.compile: 默认编译依赖范围.对于编译,测试,运 ...

  6. maven的核心概念——依赖

    一.STS集成maven(以下是mac版的STS) 1.点击Spring Tool Suite,点击preferences maven中的installations 点击add,选择对应的路径即可 点 ...

  7. maven的核心概念——POM

    Project Object Model:项目对象模型.将Java工程的相关信息封装为对象作为便于操作和管理的模型.Maven工程的核心配置.可以说学习Maven就是学习pom.xml文件中的配置. ...

  8. maven的核心概念——创建war工程

    第十七章第四个Maven工程(war工程) 17.1 创建步骤 ①第一步:创建maven web工程 ②第二步:修改web.xml <?xml version="1.0" e ...

  9. maven的核心概念——聚合

    第十六章聚合 16.1 为什么要使用聚合 将多个工程拆分为模块后,需要手动逐个安装到仓库后依赖才能够生效.修改源码后也需要逐个手动进行clean操作.而使用了聚合之后就可以批量进行Maven工程的安装 ...

随机推荐

  1. django学习笔记【003】创建第一个带有model的app

    [1]python应用程序要连接mysql有多个驱动程序可供选择: 1.MySQLdb 这个只支持python2.x 所以在这里就不说了: 2.mysqlclient 下载地址 https://pyp ...

  2. Web檢測

    腾讯电脑管家http://guanjia.qq.com/online_server/webindex.html 安全联盟http://zhanzhang.anquan.org/physical/my_ ...

  3. linux命令小技巧

    一:命令行里怎么往上翻页 Shift+PageUP|PageDown 二:分页显示文件内容则可以用less工具过滤,然后用方向键或PageUp/PageDown上下翻 less /etc/passwd ...

  4. 180508 - 解决有关VIVO的2018-04-01安全补丁导致的APP闪退问题

    解决有关VIVO的2018-04-01安全补丁导致的APP闪退问题 [√]问题原因猜测4: 最终解决方案 [√]问题原因猜测3: 尝试解决 [√成功] [×]问题原因猜测2: 尝试解决 [×失败] [ ...

  5. Atitit.操作注册表 树形数据库 注册表的历史 java版本类库总结

    Atitit.操作注册表 树形数据库 注册表的历史 java版本类库总结 1. 注册表是树形数据库 1 2. 注册表的由来 1 3. Java  操作注册表 2 3.1. 使用Preferences  ...

  6. Python学习笔记7:函数对象及函数对象作參数

    一.lambda函数 比如: fun1 = lambda x,y: x + y print fun1(3,4) 输出:7 lambda生成一个函数对象.该函数參数为x,y,返回值为x+y.函数对象赋给 ...

  7. 聊一聊Android的消息机制

    聊一聊Android的消息机制 侯 亮 1概述 在Android平台上,主要用到两种通信机制,即Binder机制和消息机制,前者用于跨进程通信,后者用于进程内部通信. 从技术实现上来说,消息机制还是比 ...

  8. csu-1328 近似回文词 和 最长回文字符串

    原博文地址:http://blog.csdn.net/u012773338/article/details/39857997 最长回文子串 描述:输入一个字符串,求出其中最长的回文子串.子串的含义是: ...

  9. 简单说一下 servlet的生命周期?

    1.servlet有良好的生存期的定义,包括加载和实例化.初始化.处理请求以及服务结束.这个生存期由 javax.servlet.Servlet接口的  init,service和   destroy ...

  10. apache ab测试

    网站并发测试,网站服务使用的是apache2.4 因此使用ab来测试网站性能. windows使用cms 打开apache/bin 运行ab.exe (......../apache/bin/ab), ...