Maven mirror 和 repository 区别

转自(部分调整):Maven:mirror 和 repository 区别

1.Repository(仓库)

这里写图片描述

1.1 Maven 仓库种类

Maven 仓库主要分为两大类:

  1. 远程仓库(Remote Repository):相当于公共的仓库,所有用户都可以访问,通常以 URL 的形式访问。
  2. 本地仓库(Local Repository):存放在本地磁盘的一个文件夹中。例如:\Users\name\.m2\repository\

1.2 Remote Repository 的种类

远程仓库主要分为以下几种:

  1. 中央仓库:http://repo1.maven.org/maven2/

  2. 私服:内网自建的 Maven 仓库,其 URL 是一个内部网址。

  3. 其他公共仓库:其他可以通过互联网公共访问的 Maven 仓库。

仓库中存放的都是各种 jar 包和 Maven 插件。

当向仓库请求插件或依赖时,Maven 会先检查本地仓库,如果本地仓库中已存在则直接返回,否则会向远程仓库请求,并将下载的内容缓存到本地仓库中。

也可以将开发的内容放到本地仓库仅供本地使用,或者上传到远程仓库供其他开发者使用。

2.Mirror(镜像)

镜像相当于一个拦截器,它会拦截 Maven 对远程仓库的相关请求,将请求中的远程仓库地址重定向到镜像中配置的地址。

2.1 没有配置 mirror

这里写图片描述

2.2 配置 mirror

这里写图片描述

此时,B Repository 被称为 A Repository 的镜像。

如果仓库 X 可以提供仓库 Y 存储的所有内容,那么就可以认为 X 是 Y 的一个镜像。

换句话说,任何可以从仓库 Y 获得的构件,都可以从它的镜像中获取。

2.3 <mirrorOf>标签

<mirrorOf></mirrorOf>标签中放置的是要被镜像的 Repository ID。

为了满足一些复杂的需求,Maven 还支持更高级的镜像配置:

配置 说明
<mirrorOf>*</mirrorOf> 匹配所有远程仓库。
<mirrorOf>repo1,repo2</mirrorOf> 匹配仓库 repo1 和 repo2,使用逗号分隔多个远程仓库。
<mirrorOf>*,!repo1</mirrorOf> 匹配所有远程仓库,repo1 除外,使用感叹号将仓库从匹配中排除。

3 Repository 与 Mirror

3.1 定义

实际上,mirror 表示的是两个 Repository 之间的关系。在 Maven 配置文件(settings.xml)中配置了<mirrors><mirror>...</mirror></mirrors>,即定义了两个 Repository 之间的镜像关系。

3.2 目的

配置两个 Repository 之间的镜像关系,主要是出于访问速度和下载速度的考虑。

例如,有一个项目需要在公司和住所都进行开发,并在项目的 pom.xml 中配置了 A Maven 库。在公司使用电信网络,访问 A 库速度很快,所以 Maven 管理依赖和插件都从 A 库下载;在住所使用网通网络,访问 A 库很慢,但访问 B 库很快。这时,在住所的 settings.xml 中,只需配置<mirrors><mirror>...</mirror></mirrors>,让 B 库成为 A 库的镜像,即可不用更改项目 pom.xml 中对于 A 库的相关配置。

如果该镜像仓库需要认证,则只需在 settings.xml 中配置认证信息即可。

3.3 注意事项

需要注意的是,由于镜像仓库完全屏蔽了被镜像仓库,当镜像仓库不稳定或停止服务时,Maven 将无法访问被镜像仓库,因此无法下载构件。

4 私服

私服是一种特殊的远程 Maven 仓库,它是架设在局域网内的仓库服务。私服通常被配置为互联网远程仓库的镜像,供局域网内的 Maven 用户使用。

当 Maven 需要下载构件时,会先向私服请求。如果私服上不存在该构件,则从外部的远程仓库下载,同时缓存在私服上,然后为 Maven 下载请求提供服务。另外,对于自定义或第三方的 jar 包,可以从本地上传到私服,供局域网内其他 Maven 用户使用。

使用私服的主要优点:

  1. 节省外网带宽
  2. 加速 Maven 构建
  3. 部署第三方构件
  4. 提高稳定性、增强控制:避免外网不稳定的影响
  5. 降低中央仓库的负荷:减少对中央仓库的访问压力
这里写图片描述
posted @ 2025-05-23 00:47  Higurashi-kagome  阅读(455)  评论(0)    收藏  举报