首页 > 其他分享 >Maven的Mirror和Repository 的详细讲解

Maven的Mirror和Repository 的详细讲解

时间:2022-11-24 21:03:13浏览次数:43  
标签:Repository repository 仓库 私服 Maven Mirror 镜像


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仓库示意图

 

 

标签:Repository,repository,仓库,私服,Maven,Mirror,镜像
From: https://blog.51cto.com/u_13991401/5884919

相关文章

  • Maven学习-Profile详解
    Profile能让你为一个特殊的环境自定义一个特殊的构建;profile使得不同环境间构建的可移植性成为可能。Maven中的profile是一组可选的配置,可以用来设置或者覆盖配置默认值。有......
  • maven制作archetype(原型)
    1.在本地新建第一个符合公司规范的maven项目2.创建archetype到本地仓库因为idea会生成很多不必要的文件,所以首先创建一个archetype.properties,配置需要过滤的文件#打包过滤......
  • 【转载】CRS-9520:The storage of Grid Infrastructure Management Repository is 93%
    1巡检数据库发现如下告警:2021-08-1602:13:59.207: [crflogd(6575)]CRS-9520:ThestorageofGridInfrastructureManagementRepositoryis92%full.Thestoragel......
  • Maven内网配置本地仓库
    1、由于工作时是在内网环境,maven无法连接互联网,所以只能事先将jar下载到本地,然后通过配置pom文件,将jar引用至本地仓库即可;2、找到本地的springboot父类包;3、修改此文件......
  • Maven之自定义pom类型的基础项目
    摘要:在当前的软件开发场景中,大都是通过maven管理项目,而如果使用maven的话,其实也会有很多问题,比如项目中依赖的版本管理就是一个很头疼的事,如果一个......
  • Maven学习记录之maven基本操作命令,maven本地工厂的创建,maven骨架的生成,以及在eclipse
    摘要:今天又学习了一下maven,之前是下载并安装和配置好了maven的环境,今天主要学习的内容包括:maven本地工厂的创建,maven骨架的生成命令,maven在dos下创建maven工程,以及在eclipse......
  • Maven 3.0.5 安装和配置:
    摘要:现在的Web项目越来越多的都用maven管理了,所以我也抽时间学习学习,为了赶上时代!一:首先到maven官网:​​http://maven.apache.org/​​,然后选择相应的版本下载,我这里下载的......
  • Maven仓库settings.xml配置信息
    找到你的settings.xml配置文件E:\maven3.6.3\apache-maven-3.6.3\conf#你的本地依赖仓库路径<localRepository>E:\maven3.6.3\repository</localRepository>#配置阿......
  • java web开发(maven创建servlet程序)
        之前我们写了一篇文章,主要是说一般情况下怎么开发servlet。其实,用maven创建servlet工程也是非常方便的。网上有一篇文章,地址在,也谈到了怎么实现idea+maven+serv......
  • jave web开发(IDEA中配置maven + 第一个pom包)
        maven是现在java中用的比较多的一个软件。一方面,maven可以单独使用;另外一方面maven也可以和各个IDE进行配合,比如刚刚安装的IDEA,就可以和maven进行联合配置使用......