(五)maven仓库多层架构
创始人
2025-05-28 03:53:23

 

1、仓库的基本介绍

不使用maven,我们只能在各种工程里建一个lib目录,里面放入这个工程的所有依赖,在打包的时候将工程打成一个胖jar,里面包含了所有依赖。 

如果公司内有几十个,甚至上百个工程,那么每个工程都要维护一份依赖

  • 第一非常浪费空间,
  • 第二非常麻烦,每次升级某个依赖,可能要将几十个工程里的lib包下的依赖,先删除旧版本,再放入新版本。

而maven的仓库,就是用来统一存放各种依赖的地方。哪怕是有几十个工程,但是每个工程如果有相同的依赖,那么那个依赖在仓库里只会存在一次,不会放在各个工程自己的lib包下。

消除了重复,如果要升级某个依赖,直接在各个工程的pom.xml里升级依赖的版本即可,大家都会自动引用最新版本的依赖了。

在仓库里所有依赖就放一次,然后每个工程在pom.xml里面声明对依赖的引用即可,打包的时候,可以将所有依赖打入发布包即可。

2、仓库的布局结构

自己windows本地的仓库,是在~/.m2/repository目录,就是maven的本地仓库

那么依赖在maven仓库里是以什么方式存放的呢?其实maven仓库的布局结构其实很简单,比如我们依赖了一个项目,它的坐标如下:

  • groupId:log4j
  • artifactId:log4j
  • version:1.2.15

那么这个依赖的jar包在maven仓库里的布局,就是存放在log4j/log4j/1.2.15/log4j-1.2.15.jar,log4j/log4j/1.2.15就是目录,log4j-1.2.15.jar就是依赖对应的jar包。

所以你声明依赖之后,maven实际上就是根据依赖的坐标,先到本地仓库里面去根据坐标去一层一层的定位依赖所在的目录里面有没有这个jar包,如果没有的话,就是到远程仓库里面去根据同样的布局去找依赖的jar包。

3、maven的多层仓库架构

maven仓库的大类分成本地仓库和远程仓库两种,声明了一个依赖,那么在构建打包的时候,先会去本地仓库里找.

这个本地仓库的地址默认就在用户主目录下面的~/.m2/repository目录下面,里面各个依赖的存放路径就是跟上面说的那样;

如果本地仓库找不到,那么就会去远程仓库找,默认是去maven自己的中央仓库里找,maven的中央仓库里几乎涵盖所有的依赖;

然后会将中央仓库里的依赖下载下来放到本地仓库,缓存起来,供下次使用。

中央仓库是属于一种远程仓库,但是不只是有中央仓库一种远程仓库而已

远程仓库还有私服和其他远程仓库,私服指的是在公司内部的局域网内,架设一个服务器,上面放一个公司内私有的仓库,就是私服;

其他远程仓库,就是其他公司开放出来的仓库,比如java.net maven仓库,jboss maven仓库,等等。

  • (1)本地仓库

本地仓库,windows默认路径是~\.m2\repository,linux默认路径是/home/root/.m2/repository

可以修改本地仓库的路径,在~/.m2/settings.xml配置文件里,可以设置:

某路径

  • (2)远程仓库

如果本地仓库没有某个依赖,那么maven就会从远程仓库去下载,默认就是从中央仓库去下载

  • (3)中央仓库

maven有一个自带的超级pom.xml文件,里面配置了一个默认的中央仓库:

%M2_HOME%/lib下面找,maven-model-builder-3.5.2.jar的pom文件

所以如果你不做任何配置,那么当你声明了某个依赖之后,就是如果本地仓库没有,就会去maven自带配置的这个中央仓库去拉取,就是http://repo1.maven.org/maven2这个地址。

centralMaven Repository Switchboardhttp://repo1.maven.org/maven2defaultfalse
  • (4)私服

一般正经公司都会自己架设一个maven私服,也就是在公司局域网内部,假设一个服务器,上面放一个maven私有仓库。

因为很多公司的服务器是不允许访问外网的,只能访问局域网,为了更好的安全性起见。而且依赖下载的速度也很快。

此时的话,核心的思路,就是在本地配置远程仓库为私服,如果本地仓库没有,先去私服找,如果私服没有,再去中央仓库找。在中央仓库找到后,先缓存在私服中,然后再缓存在本地仓库中。

此外,假设自己的私服,另外一个意义,就在于说,自己公司内部的一些发布包,可以放到私服上,供公司内的项目组之间使用。

  • (5)其他远程仓库

有些依赖可能在中央仓库没有,或者中央仓库的速度太慢,此时可能会用其他的一些远程仓库,比如jboss的仓库。java.net,google,codehaus,jboss,还有一些其他公司自己搞的Maven仓库,有少数的依赖包可能在中央仓库里找不到,只在其他仓库里。

那么私服除了连接中央仓库,还可以连接其他远程仓库。

  • (6)镜像仓库

比如说,像中央仓库在国外,很慢的,直接从中央仓库下载的话,是很慢的

所以一般国内的一些大型的互联网公司,阿里云,会搞一个镜像仓库,完全跟中央仓库一模一样的,代理了中央仓库所有的请求

你可以直接从阿里云镜像仓库去请求,如果有就直接返回了,国内网络的速度很快的,上百倍;阿里云如果自己没有,就会去从国外的中央仓库去下载

你就知道了什么啊,pom.xml里面声明了各种依赖之后,是怎么去找的,仓库,仓库的布局,多层仓库(本地、私服、镜像、中央、其他)。

相关内容

热门资讯

Open3D 点云与模型ICP... 文章目录 一、简介二、实现代码三、实现效果参考资料 一、简介 这是一个很有趣的功能,在真正进入...
南京到北京的火车时刻表(南京到... 今天给各位分享南京到北京的火车时刻表的知识,其中也会对南京到北京火车时刻表查询最新进行解释,如果能碰...
南戴河碧海蓝天(南戴河碧海蓝天... 今天给各位分享南戴河碧海蓝天的知识,其中也会对南戴河碧海蓝天度假村图片进行解释,如果能碰巧解决你现在...
郑州动物园票价(郑州动物园票价... 本篇文章极速百科给大家谈谈郑州动物园票价,以及郑州动物园票价多少对应的知识点,希望对各位有所帮助,不...
贵州省内旅游(贵州省内旅游攻略... 本篇文章极速百科给大家谈谈贵州省内旅游,以及贵州省内旅游攻略路线最佳路线对应的知识点,希望对各位有所...
全球响应,维谛技术(Verti... 3月3日,“可维节碳,价值伙伴——维谛技术(Vertiv&...
百度发布文心一言,我想说几句 大家好,我是记得诚。 今天下午百度公司正式发布了文心一言,算是国内第一个...
掌握CentOS7环境下的Do... 文章目录Docker容器的网络模式Docker桥接网络模式Docker主机host网络模式Docke...
TimesNet复现结果 复现环境:RTX3090,22312GB显存,torch&...
加密月解密:概述,基础篇 加密月解密:概述,基础篇 2022找工作是学历、能力和运气的超强结合体&...
天涯海角门票(三亚天涯海角攻略... 今天给各位分享天涯海角门票的知识,其中也会对三亚天涯海角攻略,天涯海角门票进行解释,如果能碰巧解决你...
狮子林门票(狮子林门票预约官网... 今天给各位分享狮子林门票的知识,其中也会对狮子林门票预约官网进行解释,如果能碰巧解决你现在面临的问题...
石家庄特价机票(石家庄特价机票... 今天给各位分享石家庄特价机票的知识,其中也会对石家庄特价机票99元进行解释,如果能碰巧解决你现在面临...
深圳到北京火车时刻表(去北京的... 今天给各位分享深圳到北京火车时刻表的知识,其中也会对去北京的火车时刻表进行解释,如果能碰巧解决你现在...
【SpringBoot】76、... JPA是Java Persistence API的简称,中文名Java持久层API&#...
LoRa烟雾报警器的安装方式 LoRa烟雾报警器是一种常用的消防安全设备,它能够在发现火灾或烟雾时迅速发出警报&#x...
如家快捷酒店上海(如家快捷酒店... 本篇文章极速百科给大家谈谈如家快捷酒店上海,以及如家快捷酒店上海人民广场对应的知识点,希望对各位有所...
梅河口酒店(梅河口酒店排行榜)... 本篇文章极速百科给大家谈谈梅河口酒店,以及梅河口酒店排行榜对应的知识点,希望对各位有所帮助,不要忘了...
宇豪海逸酒店(宇豪海逸酒店地址... 本篇文章极速百科给大家谈谈宇豪海逸酒店,以及宇豪海逸酒店地址对应的知识点,希望对各位有所帮助,不要忘...
温州金球国豪大酒店(温州金球国... 本篇文章极速百科给大家谈谈温州金球国豪大酒店,以及温州金球国豪大酒店餐饮预订电话对应的知识点,希望对...
[数据分析与可视化] Pyth... 本文主要介绍GeoPandas的基本使用方法,以绘制简单的地图。GeoPandas是一...
stm32H7内部flash存... 目录一、慎用固件库1.HAL_FLASH_Program有问题,写入不正常2.采用直接...
厦门环岛路客栈(厦门环岛路客栈... 本篇文章极速百科给大家谈谈厦门环岛路客栈,以及厦门环岛路客栈图片对应的知识点,希望对各位有所帮助,不...
欣燕都连锁酒店(欣燕都连锁酒店... 本篇文章极速百科给大家谈谈欣燕都连锁酒店,以及欣燕都连锁酒店北京前门店对应的知识点,希望对各位有所帮...
大连火车站附近旅店(大连火车站... 本篇文章极速百科给大家谈谈大连火车站附近旅店,以及大连火车站附近旅店哪家有小姐对应的知识点,希望对各...
厦门至石家庄机票(厦门到石家庄... 今天给各位分享厦门至石家庄机票的知识,其中也会对厦门到石家庄机票查询进行解释,如果能碰巧解决你现在面...
Web系统优化实战 1. 课程介绍2. 系统优化原理 1.1. Web系统优化概述 1.1.1. 提高网站速度 1.1....
笨鸟学数据结构(绪论) 数据结构的定义按某种逻辑关系组织起来的一批数据,按一定的映象方式把它存放在计算机的存储...
经典卷积模型回顾24—利用模型... 模型剪枝是指在训练深度学习模型时将某些不重要的部分剪掉,以实现更快速、更高效的模型精度...
关于重庆通信学院的信息 重庆通... 本篇文章极速百科给大家谈谈重庆通信学院,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本...