镜像仓库目标
当我们未定义任何远程仓库时,使用 Maven 更新依赖时,其会去默认远程仓库中拉取,默认远程仓库
是国外地址,所以在国内访问特别慢,想提升访问速度,需要将国外地址换成国内地址
更换仓库地址的方式:
1. 自定义仓库,将仓库地址设成国内地址,当 Maven 对仓库访问时直接就是国内地址了,属于从根儿上解决
2. 配置镜像仓库,当 Maven 访问仓库时会对访问进行拦截,并将目标地址替换为配置的镜像仓库地址
本文主要记录第二种方式,第一种自定义仓库的方式在我其他文章中有记载
靠谱的国内镜像仓库
- 阿里云镜像仓库:https://maven.aliyun.com/repository/public
- 华为云镜像仓库:https://mirrors.huaweicloud.com/repository/maven/
- 腾讯云镜像仓库:https://mirrors.cloud.tencent.com/nexus/repository/maven-public/
- 默认中央仓库:https://repo.maven.apache.org/maven2/
首推的是阿里云的镜像仓库地址,因为其不仅提供了镜像仓库,还提供了一个可以搜索依赖的 UI 界面 阿里云云效 Maven,
除此之外,Maven 官方也提供了一个搜索依赖的 UI 界面 Maven Repository
配置镜像仓库
以阿里云镜像仓库为例,找到 Maven安装目录/conf/settings.xml
,在 <mirrors>
节点下添加:
<mirror>
<id>aliyun</id>
<mirrorOf>central</mirrorOf>
<name>aliyun-central</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
节点解读:
- name:随便写,就是对本段镜像配置的描述
- url:镜像仓库地址
- id:
<mirrors>
下可以配置多个<mirror>
,所以<id>
要唯一,不与环境中其他<mirror>
重复即可
其他三个属性都很容易配置,这里重点说一下 <mirrorOf>
应该怎么填:
所谓镜像仓库,就是对 Maven 更新依赖时原本要访问的仓库地址进行替换,所以 <mirrorOf>
就是指定原来仓库的
仓库ID,例子中指定 central
,就是对 ID 为 central
的仓库的地址进行替换,当 Maven 向 central
仓库发起更
新请求时,会将仓库地址替换为我们此处的镜像地址
central
是 Maven 默认远程仓库的 ID,其在 超级Pom 的 <repositories>
中定义,超级Pom 位置:
Maven 安装目录/lib/maven-model-builder.jar/org/apache/maven/model/pom.xml
<mirrorOf>
除了指定仓库ID,也常见使用通配符 *
,但是要慎用,因为这样配置,会对所有的仓库请求都进行拦截,
并且将地址替换成镜像仓库的地址