Maven仓库与镜像配置
- 一、Repository(仓库)
- 1.1 Maven仓库主要有2种:
- 1.2 Remote Repository主要有3种:
- 二、Mirror
- 2.1 没有配置mirror
- 2.2 配置mirror
- 2.3
标签
- 三、Repository与Mirror
- 3.1 定义
- 3.2 目的
- 3.3 注意
- 四、maven私服
- 五、Maven仓库拉取构件原理图
- 六、配置阿里云的maven仓库
- Maven 中央仓库配置示例
- Maven镜像地址大全
一、Repository(仓库)

手动下载jar包web地址
https://mvnrepository.com/
https://search.maven.org/
1.1 Maven仓库主要有2种:
- remote repository:远程公共仓库,全世界的maven客户端都能访问到,可以用URL的形式访问
- local repository:存放在用户本地磁盘的一个文件夹,例如,windows上默认是C:\Users\{用户名}.m2\repository目录
1.2 Remote Repository主要有3种:
- 中央仓库:https://repo1.maven.org/maven2/
- 私服:内网自建的maven repository,其URL是一个内部网址
- 其他公共仓库:其他可以互联网公共访问maven repository,例如 jboss repository、阿里、华为等头部互联网公司建立的仓库
repository里存放的是各种jar包和maven插件。当向仓库请求插件或依赖的时候,会先检查local repository,如果local repository有则直接返回,否则会向remote repository请求,并缓存到local repository。也可以把做的东西放到本地仓库,仅供本地使用;或上传到远程仓库,供大家使用。
二、Mirror
mirror相当本地maven客户端向服务端(maven中心仓库)下载jar包或插件请求的拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。
2.1 没有配置mirror

2.2 配置mirror

此时,B Repository被称为A Repository的镜像。
如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。换句话说,任何一个可以从仓库Y获得的构件,都能够从它的镜像中获取。
2.3 标签
*
? 匹配所有远程仓库。
repo1,repo2
? 匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。
*,!repo1
? 匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。
三、Repository与Mirror
3.1 定义
mirror表示两个Repository之间的关系,在maven配置文件(setting.xml)里配置了
3.2 目的
配置两个Repository之间的镜像关系,一般是出于访问速度和下载速度考虑。
例如, 有一个项目,需要在公司和住所都编码,并在项目pom.xml配置了A Maven库。在公司,是电信网络,访问A库很快,所以maven管理依赖和插件都从A库下载;在住所,是网通网络,访问A库很慢,但是访问B库很快。这时,在住所的setting.xml里,只要配置一下
如果该镜像仓库需要认证,则配置setting.xml中的
3.3 注意
需要注意的是,由于镜像仓库完全屏蔽了被镜像仓库,当镜像仓库不稳定或者停止服务的时候,Maven仍将无法访问被镜像仓库,因而将无法下载构件。
四、maven私服
私服是一种特殊的远程Maven仓库(一般使用Nexus搭建),它是架设在局域网内的仓库服务,私服一般被配置为互联网远程仓库的镜像,供局域网内的Maven用户使用。
当Maven需要下载构件的时候,先向私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,同时缓存在私服之上,然后为Maven下载请求提供下载服务,另外,对于自定义或第三方的jar可以从本地上传到私服,供局域网内其他maven用户使用。
优点主要有:
- 节省外网宽带
- 加速Maven构建
- 部署第三方构件
- 提高稳定性、增强控制:原因是外网不稳定
- 降低中央仓库的负荷:原因是中央仓库访问量太大

五、Maven仓库拉取构件原理图

六、配置阿里云的maven仓库
仓库地址:http://maven.aliyun.com/nexus/#view-repositories;public~browsestorage
1、仓库配置
在maven的settings.xml文件里的mirrors节点,添加如下镜像:
Nexus aliyun
nexus-aliyun
central
http://maven.aliyun.com/nexus/content/groups/public
或者直接在profiles---->>>profile---->>>repositories节点,添加如下子节点:
Nexus aliyun
nexus-aliyun
default
http://maven.aliyun.com/nexus/content/groups/public
false
true
settings.xml的默认路径就:用户家目录/.m2/settings.xml
如:
windowns: C:\Users\用户家目录\.m2\settings.xml
linux: /home/用户家目录/.m2/settings.xml
Maven 中央仓库配置示例
使用 aliyun官方的中央仓库为示例,在 settings.xml 的 profiles 节点中添加如下内容:
jdk‐1.8
true
1.8
1.8
1.8
1.8
sonatype-nexus-snapshots
http://maven.aliyun.com/nexus/content/groups/public/
false
true
注意:这儿的jdk-1.8表示,在开发环境中使用jdk-1.8时,则激活该环境;
Maven镜像地址大全
1、阿里的镜像地址
alimaven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ central
2、华为的镜像地址
huaweicloud mirror from maven huaweicloud https://repo.huaweicloud.com/repository/maven/ central 使用华为Maven中央仓库时,需要在servers节点增加一个server子节点,内容如下:
huaweicloud anonymous devcloud
3、ibiblio 镜像地址(这个也比较快的呃)
ibiblio Mirror from Maven ibiblio http://mirrors.ibiblio.org/pub/mirrors/maven2/ central
4、repo1.maven.org 镜像地址
central Maven Repository Switchboard https://repo1.maven.org/maven2/ central
5、spring.io 镜像地址
sprintio central Human Readable Name for this Mirror. https://repo.spring.io/libs-snapshot/
6、JBoos 镜像地址
jboss-public-repository-group JBoss Public Repository Group http://repository.jboss.org/nexus/content/groups/public central
7、Google 镜像地址
google maven https://maven.google.com/ central