宏观图

一、仓库

统一存储全部Maven项目共享的构建的位置就是仓库。

仓库分为本地仓库和远程仓库。远程仓库又分为中央仓库(中央仓库是Maven核心自带的远程仓库),伺服(还有一种特殊的远程仓库,为节省宽带和时间,在局域网内架设的一个私有的仓库server,用其代理全部的外部的远程仓库。内部项目也能部署到伺服上),其它公开的远程仓库(常见的由Java.net Maven库,Jboss Maven库)。

Maven依据坐标寻找构件的时候,它首先会查看本地仓库,假设本地仓库存在此构件,则直接使用;假设本地仓库不存在此构件,maven就会去远程仓库查找,发现须要的构件后。下载到本地仓库再使用。

如图:

Maven仓库的分类

三种仓库的布局:

二、插件与生命周期

Maven本质上是一个插件框架。它的核心并不运行不论什么详细的构建任务,只定义了抽象的生命周期,全部这些任务都交给插件来完毕的。

将生命周期的阶段与插件目标互相绑定,就能够在特定的阶段完毕详细的构建任务。

1.生命周期

Maven的生命周期是抽象的,这意味着生命周期本身不做不论什么实际的工作。在Maven的设计中。实际的任务都交由插件来完毕。生命周期抽象了构建的各个步骤。定义了它们的次序,利用插件机制详细实现。每一个构建步骤都能够绑定一个或多个插件行为。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" height="241" width="589">

Maven拥有三套相互独立的生命周期分别为clean,default,site。

详细详情可见:

2.插件

Maven的核心只定义了抽象的生命周期。详细的任务是交由插件完毕的。插件以独立的构建形式存在。

每一个插件都能至少完毕一个任务,一个任务即一个功能,将这些功能应用在构建过程的不同生命周期中。这样既能保证拿来即用。又能保证maven本身的繁杂和冗余。

2.1插件目标

每个功能就是一个插件目标,一个插件里能够有非常多功能。

2.2插件绑定

Maven的生命周期与插件互相绑定,用以完毕实际的构建任务。

详细而言,是生命周期的阶段与插件的目标相互绑定。

插件绑定分为两类:

内置绑定:为了能让用户差点儿不用不论什么配置就能构建Maven项目,Maven在核心为一些基本的生命周期阶段绑定了非常多插件目标。

用户通过命令行调用生命周期阶段的时候,相应的插件目标就会运行相应的任务。直接能够理解为默认绑定了一部分生命周期和插件。能够直接用。无需配置;

自己定义绑定:用户依据自己的选择将某个插件目标绑定到生命周期的某个阶段,这样的绑定方式可以在项目构建过程中运行很多其它更富特色的任务。

2.3插件配置

完毕插件和生命周期的绑定后,用户还能够配置插件目标的參数,进一步调整插件目标所运行的任务。以满足项目需求 。

大致分为命令行插件配置、POM中插件全局配置、POM中插件任务配置这三类。详细不赘述。

最新文章

  1. Microsoft Loves Linux
  2. iOS开发中常见问题集锦
  3. AppStore上传条例
  4. bzoj1146整体二分+树链剖分+树状数组
  5. Bootstrap3.0学习第十八轮(JavaScript插件——下拉菜单)
  6. [转载+原创]Emgu CV on C# (三) —— Emgu CV on 均衡化
  7. Android Fragment之间传值
  8. MYSQL死锁
  9. android app启动过程(转)
  10. Mybatis分页插件PageHelper的配置和使用方法
  11. 201421123042 《Java程序设计》第13周学习总结
  12. [LeetCode] Number of Atoms 原子的个数
  13. K-均值聚类算法(K-means)
  14. Sql中如何将数据表的两个字段的值如何互换?
  15. 31.Stack
  16. F. Asya And Kittens 并查集维护链表
  17. windows环境下MySQL mysql-5.7.17-winx64 (社区服务版,community server)安装教程
  18. C#调用C++Dll封装时遇到的一系列问题
  19. 【Javascript Demo】遮罩层和百度地图弹出层简单实现
  20. 配置ssh免密登录后,仍需要密码才能登陆其中某台机器

热门文章

  1. thinkjs REST API的跨域设置
  2. Java Stream简介, 流的基本概念
  3. [hdu3685]Rotational Painting 凸包 重心
  4. EOJ 3246 实验室传染病
  5. wc 统计行数 字数
  6. Java 8中你可能没听过的10个新特性
  7. Sea Battle<海战>(思路题)
  8. HDU4893【线段树单点、区间更新】
  9. JMS 基本可靠性机制 和 事务机制
  10. Ubuntu系统安装网易云音乐、搜狗输入法