`

Maven:mirror和repository 区别

 
阅读更多

internal repository是指在局域网内部搭建的repository,它跟central repository, jboss repository等的区别仅仅在于其URL是一个内部网址
mirror则相当于一个代理,它会拦截去指定的远程repository下载构件的请求,然后从自己这里找出构件回送给客户端。配置mirror的目的一般是出于网速考虑。
可以看出,internal repository和mirror是两码事。前者本身是一个repository,可以和其它repository一起提供服务,比如它可以用来提供公司内部的maven构件;而后者本身并不是repository,它只是远程repository的网络加速器。

不过,很多internal repository搭建工具往往也提供mirror服务,比如Nexus就可以让同一个URL,既用作internal repository,又使它成为所有repository的mirror。

如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。换句话说,任何一个可以从仓库Y获得的构件,都胡够从它的镜像中获取。举个例子,http://maven.net.cn/content/groups/public/ 是中央仓库http://repo1.maven.org/maven2/ 在中国的镜像,由于地理位置的因素,该镜像往往能够提供比中央仓库更快的务。因此,可以配置Maven使用该镜像来替代中央仓库。编辑settings.xml,代码如下:

01 <settings>
02   ...
03   <mirrors>
04     <mirror>
05       <id>maven.net.cn</id>
06       <name>one of the central mirrors in china</name>
07       <url>http://maven.net.cn/content/groups/public/</url>
08       <mirrorOf>central</mirrorOf>
09     </mirror>
10   </mirrors>
11   ...
12 </settings>

该例中,<mirrorOf>的值为central,表示该配置为中央仓库的镜像,任何对于中央仓库的请求都会转至该镜像,用户也可以使用同样的方法配置其他仓库的镜像。另外三个元素id,name,url与一般仓库配置无异,表示该镜像仓库的唯一标识符、名称以及地址。类似地,如果该镜像需认证,也可以基于该id配置仓库认证。
关于镜像的一个更为常见的用法是结合私服。由于私服可以代理任何外部的公共仓库(包括中央仓库),因此,对于组织内部的Maven用户来说,使用一个私服地址就等于使用了所有需要的外部仓库,这可以将配置集中到私服,从而简化Maven本身的配置。在这种情况下,任何需要的构件都可以从私服获得,私服就是所有仓库的镜像。这时,可以配置这样的一个镜像,如例: 

01 <settings>
02   ...
03   <mirrors>
04     <mirror>
05       <id>internal-repository</id>
06       <name>Internal Repository Manager</name>
07       <url>http://192.168.1.100/maven2</url>
08       <mirrorOf>*</mirrorOf>
09     </mirror>
10   </mirrors>
11   ...
12 </settings>

该例中<mirrorOf>的值为星号,表示该配置是所有Maven仓库的镜像,任何对于远程仓库的请求都会被转至http://192.168.1.100/maven2/。如果该镜像仓库需要认证,则配置一个Id为internal-repository的<server>即可。为了满足一些复杂的需求,Maven还支持更高级的镜像配置:
1.<mirrorOf>*</mirrorOf>
匹配所有远程仓库。
2.<mirrorOf>external:*</mirrorOf>
匹配所有远程仓库,使用localhost的除外,使用file://协议的除外。也就是说,匹配所有不在本机上的远程仓库。
3.<mirrorOf>repo1,repo2</mirrorOf>
匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。
4.<mirrorOf>*,!repo1</miiroOf>
匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。

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

分享到:
评论

相关推荐

    详解maven的setting配置文件中mirror和repository的区别

    maven的setting配置文件中mirror和repository的区别 Maven是一个流行的Java项目管理和构建工具,它的setting配置文件中有两个重要概念:mirror和repository。这两者都是Maven下载依赖包和插件的关键组件,但它们的...

    apache-maven-3.8.6

    Apache Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。它通过定义项目的结构和依赖关系,自动处理构建过程,简化了项目的构建、测试和部署。Maven 3.8.6是Maven的一个版本,它包含了从早期...

    mavenRepository 仓库 依赖

    在Java开发领域,MavenRepository是一个至关重要的概念,它是一个存储和检索项目构建依赖的仓库。这个仓库系统是Apache Maven的核心组成部分,它管理着各种Java库、框架和项目的JAR文件,使得开发者能够轻松地引用并...

    maven下载和安装

    1. **修改settings.xml文件**:打开Maven安装目录下的`conf/settings.xml`文件,定位到`&lt;localRepository&gt;`标签,修改其值为希望存放本地仓库的路径,例如`&lt;localRepository&gt;D:\maven-3.5.2\repository&lt;/local...

    maven 配置多仓库

    在软件开发中,Maven作为Java项目管理和构建工具,其依赖管理的核心机制是通过仓库(Repository)来获取项目所需的依赖库。Maven默认使用中央仓库,但有时我们需要配置多个仓库,例如私有仓库,以提高依赖下载速度或...

    linux,nexus3.14+maven3.6.3.zip,搭建maven私服一步到位

    本教程将指导您在Linux环境下,利用Nexus 3.14和Maven 3.6.3快速搭建Maven私服。 首先,我们来看看所需的主要组件: 1. **Nexus 3.14**:这是Sonatype公司提供的开源仓库管理工具,它可以作为Maven私服,支持多种...

    maven开发环境搭建

    Eclipse Maven插件可以极大地简化Maven项目的创建和管理。可以通过在线或离线的方式安装插件。对于离线安装,可以从插件网站下载并将其解压至Eclipse安装目录。 #### 二、Maven Web项目开发 **1. 创建Maven Web...

    Maven3.6.3安装与配置以及IDEA2022.2.3部署Maven的教程

    - **配置 Maven**: 在主界面中找到 Maven 设置选项(通常位于 File &gt; Settings &gt; Build, Execution, Deployment &gt; Build Tools &gt; Maven),将 Maven 安装路径和配置文件路径更改为实际的安装路径和 `settings.xml` ...

    apache-maven-3.5.4

    idea2023自带maven版本不能正常加载http开头的...- Add a mirror(s) for ----------- - Downgrade Maven to version 3.8.1 or earlier in settings ---------------------------------------------------------对号入座

    maven资源路径设置方法,以及配置阿里云资源

    Maven是一个项目管理和构建工具,主要用于Java项目的构建和依赖管理。它通过一系列生命周期(lifecycle)、目标(goal)和插件来帮助开发者自动完成项目的构建过程。在Maven中,依赖管理是一个重要的功能,它能够...

    超全面搭建Maven仓库

    Maven是一款强大的项目管理工具,主要用于Java项目的构建、依赖管理和项目信息管理。本文将详细介绍如何搭建Maven环境、配置Maven仓库以及在Eclipse中集成Maven。 #### 一、下载安装Maven及Maven资源库 1. **下载...

    搭建Maven私有仓库.docx

    概述:本文档详细介绍了在Windows Server 2016环境下使用Nexus搭建Maven私有仓库的详细过程及常用配置,旨在帮助读者快速搭建私有仓库,提高开发效率和项目管理效率。 一、安装准备 在开始搭建私有仓库之前,需要...

    maven之开源中国Maven库

    【标题】"maven之开源中国Maven库" 指的是使用 Maven,一个流行的Java项目管理和集成工具,与开源中国的Maven仓库进行交互。开源中国Maven库是中国的一个开源软件资源平台,提供了大量的开源Java库,使得开发者可以...

    Maven的Dependency详解

    Repository包含Local Repository、Remote Repository和Mirror Repository等层次。Local Repository是项目构建时首选的依赖来源,而Remote Repository则用于备份和更新。Mirror Repository是远程仓库的镜像,用于提高...

    配置好的maven仓库

    Maven是Java项目管理和构建的工具,它依赖于一个中央仓库来存储各种项目所需的依赖库。配置好的Maven仓库对于Java开发者来说至关重要,因为它确保了项目构建过程中的依赖管理和下载效率。本文将详细介绍如何配置...

    apache-maven-3.3.9.rar

    4.配置maven本地仓库(存放本地jar包)新建一个文件夹,路径自定义,名称为“repository” 5.打开maven解压路径下的conf下的settings.xml文件,在文件中找到注释了的字符串“/path/to/local/repo” 6.Maven默认...

    Mac下载apache-maven-3.6.1.zip

    需要修改conf下的文件settings.xml,第一步:找到文件settings.xml中的localRepository,另起一行为&lt;localRepository&gt;/Users/用户名/自己定义的存储本地仓库(我这边为maven-localhost)&lt;/localRepository&gt; ...

    Maven 3.6.3文件 setting文件已替换华为云maven镜像

    Maven是Java开发中的一款项目管理和综合工具,它简化了构建过程,通过提供一个标准化的构建系统,使得项目依赖管理变得更加简单。Maven 3.6.3是Maven的一个稳定版本,它带来了许多改进和修复,提升了构建效率和用户...

    maven的安装和配置

    **Apache Maven**是一款流行的软件项目管理和构建工具,主要用于管理基于Java的项目。它的主要目标包括简化构建过程、提供统一的构建系统、提供高质量的项目信息以及鼓励更好的开发实践。 鉴于Maven在Java开发中的...

Global site tag (gtag.js) - Google Analytics