maven仓库的执行顺序:

  • settings_mirror 的优先级高于 central
  • settings_profile_repo 优先级高于 settings_mirror
  • settings_profile_repo 优先级高于 pom_repositories
  • settings_profile_repo 优先级高于 pom_profile_repo
  • pom_profile_repo 优先级高于 pom_repositories
  • pom_repositories 优先级高于 settings_mirror

通过上面的比较得出完整的搜索链:

local_repo > settings_profile_repo > pom_profile_repo > pom_repositories > settings_mirror > central

注 :

0、多个mirror会按照顺序执行;第一个没有jar包或者mirrorOf没拦住,才会执行第二个;

1、在mirrorOf与repositoryId相同的时候优先是使用mirror的地址

2、mirrorOf等于*的时候覆盖所有repository配置

3、存在多个mirror配置的时候mirrorOf等于*放到最后,如果多个*,那就按照顺序执行;

4、只配置mirrorOf为central的时候可以不用配置repository

1 Repository(仓库)

1.1 Maven仓库主要有2种:

  • remote repository:相当于公共的仓库,大家都能访问到,一般可以用URL的形式访问
  • local repository:存放在本地磁盘的一个文件夹,例如,windows上默认是C:\Users\{用户名}\.m2\repository目录

1.2 Remote Repository主要有3种:

  • 中央仓库:http://repo1.maven.org/maven2/
  • 私服:内网自建的maven repository,其URL是一个内部网址
  • 其他公共仓库:其他可以互联网公共访问maven repository,例如 jboss repository等

repository里存放的都是各种jar包和maven插件。当向仓库请求插件或依赖的时候,会先检查local repository,如果local repository有则直接返回,否则会向remote repository请求,并缓存到local repository。也可以把做的东西放到本地仓库,仅供本地使用;或上传到远程仓库,供大家使用。

2 Mirror

mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。

2.1 没有配置mirror:

2.2 配置mirror:

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

如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。换句话说,任何一个可以从仓库Y获得的构件,都胡够从它的镜像中获取。

2.3 <mirrorOf></mirrorOf>

<mirrorOf></mirrorOf>标签里面放置的是要被镜像的Repository ID。为了满足一些复杂的需求,Maven还支持更高级的镜像配置:

  • <mirrorOf>*</mirrorOf>

匹配所有远程仓库。

  • <mirrorOf>repo1,repo2</mirrorOf>

匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。

  • <mirrorOf>*,!repo1</miiroOf>

匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。

3 Repository与Mirror

3.1 定义

其实,mirror表示的是两个Repository之间的关系,在maven配置文件(setting.xml)里配置 了<mirrors><mirror>..........</mirror></mirrors>, 即定义了两个Repository之间的镜像关系。

3.2 目的

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

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

如果该镜像仓库需要认证,则配置setting.xml中的<server></server>即可。

3.3  注意

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

4 私服

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

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

优点主要有:

  1. 节省外网宽带
  2. 加速Maven构建
  3. 部署第三方构件
  4. 提高稳定性、增强控制:原因是外网不稳定
  5. 降低中央仓库的负荷:原因是中央仓库访问量太大

PS:Maven仓库示意图

Maven的Mirror的详细说明相关推荐

  1. Maven:mirror和repository 区别、pom.xml 指定仓库地址、releases 和 snapshots 区别

    文章目录 一.Maven:mirror 和 repository 区别 1.Repository(仓库) 1.1 Maven 仓库主要有2种 1.2 Remote Repository主要有3种 1. ...

  2. 使用nexus3搭建maven私服(超详细,建议收藏)

    目录 1.搭建Maven私服背景 2.安装Nexus,并初次启动Nexus 3.将nexus配置为系统服务 4.配置nexus和熟悉它 第一步,跟随着说明文档,看看下载nexus下来之后,有两个目录 ...

  3. IDEA如何配置 Maven 及 Maven 安装过程(详细版)

    IDEA如何配置 Maven(详细版) 一.安装Maven 1.下载Maven 安装包 官网:https://maven.apache.org/ 2.点击Download ===>选择 apac ...

  4. Maven:mirror和repository 区别

    http://m.oschina.net/blog/100634 internal repository是指在局域网内部搭建的repository,它跟central repository, jbos ...

  5. jenkins+svn+maven+ssh 部署配置详细记录

    2019独角兽企业重金招聘Python工程师标准>>> 先简单记录一下,后面再慢慢完善. 1.环境 jdk 1.7.0_45 maven 3.1.1 jenkins 2.3.21 j ...

  6. IDEA优雅整合Maven+SSM框架(详细思路+附带源码)

    前言: 网上很多整合SSM博客文章并不能让初探ssm的同学思路完全的清晰,可以试着关掉整合教程,摇两下头骨,哈一大口气,就在万事具备的时候,开整,这个时候你可能思路全无 ~中招了咩~ ,还有一些同学依 ...

  7. 完美解决IDEA 中Maven插件报红详细攻略(含阿里云镜像下载失败),差点泪崩...冲冲冲

    阿里云镜像: <!-- 阿里云仓库 --> <mirror><id>nexus-aliyun</id><mirrorOf>central&l ...

  8. maven:pom文件详细信息

    一.maven项目的目录结构 ​ pom文件定于了一个maven项目的maven配置,一般pom文件的放在项目或者模块的根目录下. ​ maven的遵循约定大于配置,约定了如下的目录结构: 目录 目的 ...

  9. Windows安装Maven(图文解说详细版)

    文章目录 第一步,下载maven 第二步,解压 第三步,配置环境变量 第四步,检查maven是否安装成功 第五步,编辑setting文件添加国内镜像 第六步,配置本地仓库 第七步,idea配置mave ...

最新文章

  1. OSPF被隔离的区域
  2. 第一次接触AgilePoint业务流程及任务管理(BPM)
  3. android转web,Android 转 web app 笔记一:Touch事件
  4. eclipse中文乱码解决_解决git status显示中文文件名乱码问题
  5. 标准错误处理机制——error
  6. windows 显示苹果分区_基准测试数据显示苹果M1运行Windows的表现比微软自家硬件好上近一倍...
  7. java频繁查询数据库_如何解决Cookie登录 频繁查询数据库问题?
  8. 拓端tecdat|Matlab正态分布、历史模拟法、加权移动平均线 EWMA估计风险价值VaR和回测Backtest标准普尔指数 SP500时间序列
  9. Java计算接口请求时间
  10. 如何在数据库中创建表
  11. 关于QQ表情数据库的复制
  12. app测试和web测试的区别
  13. c++卸载工具_卸载软件同时清除软件注册表里面的信息,也许这款软件能够帮助你...
  14. mysql数据库test密码_TestCenter常见问题
  15. Premiere Pro cc 2019 全面使用教程(非常简单)
  16. 怎样让你的LinkedIn动态上热门?高效使用我们的领英
  17. 手把手教你用JAVA实现“语音合成”功能(文字转声音)标贝科技
  18. 2021年学web前端需要什么学历?
  19. Anker推出Security SmartTrack卡,详谈苹果Find My技术
  20. 聊一聊微博新知博主这件事,看看赚钱方式有哪些?

热门文章

  1. tip(rabbitMQ
  2. vue项目中使用swiper实现中间大,两边小的轮播图
  3. NB-IoT门磁报警器 物联网门磁传感器 电子封条报警器
  4. P1209 [USACO1.3]修理牛棚 Barn Repair(贪心)
  5. 计算机专业研究生如何看待计算机期刊论文
  6. python将秒换成天时分秒
  7. 四川师范大学自然地理(2-地壳)90分以上版本
  8. 【秒懂音视频开发】23_H.264编码
  9. fake rolex watches sale Stuff.co.nz - 新西兰最新新闻和世界新闻,体育新闻和天气预报新西兰
  10. (离散)证明:单射 满射 同态 同构 的证明框架