一、简介
所谓的仓库就是用于存放项目需要的jar包的。在我们的maven项目中其实并没有项目所需要的jar包,只在pom.xml文件中记录了jar的坐标。maven依赖管理通过jar的坐标去仓库中下载jar文件。
使用maven仓库的好处:能让多个项目共享一个仓库里的相同jar包
二、分类
本地仓库,
maven安装时候不会创建,第一次执行maven命令才创建。默认位置:用户目录/.m2/repository/
远程仓库
- 中央仓库:默认的远程仓库。
- 私有仓库:局域网内的仓库。可以理解为自己公司的仓库,也叫Nexus私服。
- 镜像仓库:其他公开的资源仓库 例如国内的阿里云,jboss,jcenter 仓库等
示意图
三、Maven 依赖搜索顺序
当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:
- **步骤 1: ** 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
- **步骤 2: ** 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中已被将来引用。
- **步骤 3: ** 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
- **步骤 4: ** 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库已被将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。
四、镜像(Mirror)
概要
Mirror表示的是两个Repository之间的关系,在maven配置文件(setting.xml)里配置了
Mirror相当于一个拦截器,它会拦截maven对远程仓库的相关请求,把请求里的远程仓库地址,重定向到mirror里配置的地址。
声明
<mirrors>
<mirror>
...
<mirror>
<mirrors>
作用
配置两个Repository之间的镜像关系,一般是出于访问速度和下载速度考虑。
注意
需要注意的是,由于镜像仓库完全屏蔽了被镜像仓库,当镜像仓库不稳定或者停止服务的时候,Maven仍将无法访问被镜像仓库,因而将无法下载构件。