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

Maven的Mirror和Repository 的详细讲解

时间:2023-04-27 22:34:40浏览次数:40  
标签: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_16091571/6232252

相关文章

  • Maven中mirrors和repository的关系
    1.pom.xml里的repositories元素,里面可以包含多少repository(至少默认包含了中央仓库,该仓库总是在effective-pom里repositories元素的最后一个子元素),每个repository都有一个id(此id非常重要)。2.maven获取真正起作用的repository集合流程:首先会获取pom.xml里的repository......
  • Maven 搭建多模块企业级项目
    首先,前面几次学习已经学会了安装maven,如何创建maven项目等,最近的学习,终于有点进展了,搭建一下企业级多模块项目。好了,废话不多说,具体如下:首先新建一个maven项目,pom.xml的文件如下:搭建多模块项目,必须要有一个packaging为pom的根目录。创建好这个maven项目后,我们对着项目右键-->new输......
  • maven 增加oracle驱动
    进入ojdbc14.jar所在目录C:\oracle\product\10.2.0\db_1\jdbc\lib执行命令:mvninstall:install-file-DgroupId=com.oracle-DartifactId=ojdbc14-Dversion=10.2.0.1.0-Dpackaging=jar-Dfile=ojdbc14.jar输出:C:\oracle\product\10.2.0\db_1\jdbc\lib>mvninstall:i......
  • eclipse maven 安装、配置
    在http://maven.apache.org/download.cgi下载maven包,解压后,设置一下环境变量Path,把maven的路径加进去,像设置java环境变量一样。打开eclipse,菜单Help->InstallNewSoftware,如图:输入的URL为http://download.eclipse.org/technology/m2e/releases名称随便取,我取的是m2e。然后安装。......
  • maven 自定义变量
    可以用properties这个标签来自定义变量,例如:<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xs......
  • Maven
    http://heavy_code_industry.gitee.io/code_heavy_industry/pro002-maven/chapter01/verse01.htmlMaven的功能1依赖管理工具1jar包的规模  一个模块可能需要导入上百个jar包,使用Maven来引入这些jar包只需要简单配置2jar包的来源  jar包下载不方便  使用Maven......
  • github~通过packages功能实现maven仓库托管
    github在被大微软收购之后,推出了很多非常不错的功能,这一次把很多仓库管理合并到一起了,包括了nuget,npm,maven,docker等等,今天我们把java代码推到github的maven仓库吧!申请一个githubtoken建立一个仓库,起名为maven_repo配置你的.m2/settings.xml文件<settingsxmlns="http://......
  • SpringBoot多模块项目开发(Maven多模块项目)
    Maven多模块项目Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块。微服务项目是以多模块的方式开发,分包部署;springboot多模块项目使用maven打包部......
  • 往maven远程仓库上传jar包脚本
    往maven仓库上传jar分两种情况,一种情况是只上传jar包,另一种情况是jar包和pom文件同时上传1.只上传jar包mvndeploy:deploy-file-Dmaven.test.skip=true-Dfile=[jar包的路径]这个不建议将jar包放在maven本地仓库的文件夹-DgroupId=[依赖的groupId]-DartifactId=[依赖的arti......
  • maven安装
    下载地址https://maven.apache.org/download.cgi3.9+版本需要JDK8以上支持历史版本https://archive.apache.org/dist/maven/maven-3/解压即可配置环境变量:win+r键入sysdm.cpl确定->高级->环境变量系统变量->新增MAVEN_HOMEPath,新建%MAVEN_HOME%\bin确定确定检测......