使用仓库镜像

仓库可以声明在项目中,但有时,你可能想要使用某个仓库的镜像,而不去修改项目文件。

使用镜像的原因:

  • 有一个同步镜像,且速度更快。
  • 想使用你自己控制的内部仓库。
  • 想运行repository manager来提供一个本地的缓存(镜像),然后使用该缓存的URL。

为了配置给定仓库的镜像,你需要在 ${user.home}/.m2/settings.xml 中提供该新仓库的 idurl,并指定 mirrorOf 的值 -- 就是你想镜像的仓库的ID

例如,Maven 中央美国仓库的ID默认是central,所以,想使用欧洲中央仓库的话,你可以这样配置:

<settings>
...
<mirrors>
<mirror>
<id>UK</id>
<name>UK Central</name>
<url>http://uk.maven.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
...
</settings>

注意,对于给定的某个仓库来说,最多只能有一个镜像。就是说,不管有几个镜像,其 <mirrorOf>的值不能重复! Maven不会聚集镜像,而是会简单的拣出第一个符合的。 如果你想提供由多个仓库组成的view,请使用一个 repository manager。

The settings descriptor documentation can be found on the Maven Local Settings Model Website.

注意:官方Maven 2 仓库是http://repo.maven.apache.org/maven2 位于美国,或者 http://uk.maven.org/maven2 位于英国。

Repository Metadata 中有一个已知的镜像列表。这些镜像的内容可能不尽相同,我们(maven官方)也不会以任何形式支持它们。

使用一个单独的仓库

你可以强制Maven使用一个单独的仓库 -- 通过让该仓库镜像所有的仓库请求。该仓库必须包含所有需要的artifacts,或者能够代理请求到其他仓库。 当使用一个内部公司仓库时,这很有用,可以使用Maven Repository Manager来代理外部的请求。

只需要将 <mirrorOf>的值设为 * 即可!

注意:该功能仅支持Maven 2.0.5+。

<settings>
...
<mirrors>
<mirror>
<id>internal-repository</id>
<name>Maven Repository Manager running on repo.mycompany.com</name>
<url>http://repo.mycompany.com/proxy</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
...
</settings>

高级镜像指南

当配合repository manager时,一个单一的镜像可以处理多个仓库。

该语法自 Maven 2.0.9 起:

  • 匹配所有的仓库id。
  • external:*  匹配所有的仓库,除了那些使用localhost 或 基于文件的仓库。当你想排除重定向仓库(用于集成测试)时,可以配合repository manager来使用。
  • ,  多个仓库可以使用逗号来拼接。
  • !  可以配合上面提到的某个通配符使用,以排除某个仓库id。

在逗号间隔的仓库标识符列表中,通配符的位置不如 。。。(长句,懒得翻译) 重要。

The position of wildcards within a comma separated list of repository identifiers is not important as the wildcards defer to further processing and explicit includes or excludes stop the processing, overruling any wildcard match.

当你使用高级语法,并配置多个镜像时,请记住 它们的声明顺序不是无所谓的。当Maven查找某个仓库的镜像时,它会先检查<mirrorOf>最匹配的镜像。如果没有直接匹配的,Maven会使用第一个声明的镜像--按照上面提到的规则(如果有的话)。

例子:

  • * 代表任意的。
  • external:* 代表任意不在localhost上的,或不是基于文件的。
  • repo,repo1 代表repo 或 repo1。
  • *,!repo1 代表任意的,但除了repo1 。

注意,该功能仅支持 Maven 2.0.9+。

<settings>
...
<mirrors>
<mirror>
<id>internal-repository</id>
<name>Maven Repository Manager running on repo.mycompany.com</name>
<url>http://repo.mycompany.com/proxy</url>
<mirrorOf>external:*,!foo</mirrorOf>
</mirror>
<mirror>
<id>foo-repository</id>
<name>Foo</name>
<url>http://repo.mycompany.com/foo</url>
<mirrorOf>foo</mirrorOf>
</mirror>
</mirrors>
...
</settings>

创建你自己的镜像

中央仓库的大小是稳步增长的。 为了节省我们的带宽和你的时间,镜像整个中央仓库是不被允许的。(这样做会被自动禁止) 相反,我们建议你设置一个repository manager作为代理。

如果你想成为一个官方镜像,请联系我们。

官方文档链接:

http://maven.apache.org/guides/mini/guide-mirror-settings.html

Maven学习之 仓库镜像的更多相关文章

  1. maven配置多仓库镜像(转)

    原文地址:maven配置多仓库镜像 问题场景: 1.国内访问maven默认远程中央镜像特别慢 2.用阿里的镜像替代远程中央镜像 3.大部分jar包都可以在阿里镜像中找到,部分jar包在阿里镜像中没有, ...

  2. Maven学习笔记—仓库

    Maven仓库 1 什么是Maven仓库 在Maven中,任何一个依赖.插件或者项目构建的输出,都可以成为构件,而Maven通常在某个位置统一的存储所有Maven项目共享的构件,这个统一的位置就是Ma ...

  3. maven 学习笔记--仓库,聚合和继承,私服搭建

    仓库 http://blog.csdn.net/wanghantong/article/details/36427433 聚合和继承 http://www.cnblogs.com/xdp-gacl/p ...

  4. Maven设置阿里仓库镜像增加访问速度

    修改maven的setting.xml 在mirrors节点下面添加子节点 <mirror> <id>nexus-aliyun</id> <mirrorOf& ...

  5. Maven学习(三) -- 仓库

    标签(空格分隔): 学习笔记 坐标和依赖时任何一个构件在Maven世界中的逻辑表示方式:而构件的物理表示方式是文件,Maven通过仓库来同意管理这些文件. 任何一个构件都有其唯一的坐标,根据这个坐标可 ...

  6. 【Maven学习】Nexus私服代理其他第三方的Maven仓库

    一.背景 [Maven学习]Nexus OSS私服仓库的安装和配置 http://blog.csdn.net/ouyang_peng/article/details/78793038 [Maven学习 ...

  7. Maven学习(七)仓库

    * Maven仓库 在项目开发中,  项目目录下往往会有一个lib目录,用来存放第三方依赖jar文件, 如spring log4j jar等文件, Maven仓库就是放置JAR文件(WAR,ZIP,P ...

  8. 国内下载比较快的Maven仓库镜像

    #收集的比较快的maven仓库 http://maven.wso2.org/nexus/content/groups/public/ http://jcenter.bintray.com/http:/ ...

  9. 各个Maven仓库镜像(包括国内)

    各个Maven仓库镜像(包括国内) 衽孤魍墓 ゅ槭 众矿工唯唯诺诺我在旁哭笑不得原 宦蠃サ 骘猩池 粑涫汾滹 吧滔哌蹋 飑俗た 狃攵庾唾 想必是想挡住什么我想反正这笔筒也不是 翡蜮胼 娴左 ...

随机推荐

  1. ruby中http请求方法整理

    #POST请求 请求包是json包 返回body并转换成json对象def post_json *args uri = URI.parse args[0] req = Net::HTTP::Post. ...

  2. [家里蹲大学数学杂志]第237期Euler公式的美

    1 Euler 公式 $e^{i\pi}+1=0$ (1) 它把 a.  $e:$ 自然对数的底 $\approx 2. 718281828459$ (数分) b.  $i$: 虚数单位 $=\sqr ...

  3. mysq修改密码

    1.确定你的mysql 是否能正常工作登录数据库cmd--"命令提示字符"窗口录入,录入cd C:\mysql\bin 并按下回车键,将目录切换为 cd C:\mysql\bin再 ...

  4. Open-Drain与Push-Pull

    GPIO的功能,简单说就是可以根据自己的需要去配置为输入或输出.(General Purpose Input Output,简称为GPIO或总线扩展器,利用工业标准I2C.SMBus?或SPI?接口简 ...

  5. WCF netTcp配置

    服务端配置 <system.serviceModel> <bindings> <netTcpBinding> <binding name="netT ...

  6. [ActionScript 3.0] AS3.0 涂鸦及擦除功能,撤销重做步骤记录实例

    package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BlendMo ...

  7. 用自己的ID在appstore中更新app-黑苹果之路

    由于之前套用了别人的镜像,在appstore中更新XCode时总要输别人id的密码,id还不能改.网上有的说要把XCode删掉,然后再用自己的ID更新,找到另外一个方法,更简单: 1.打开引用程序目录 ...

  8. 标清与高清,720p和1080p,720i和720p,h264与h265

    480x320, 640x480 标清 1024x720p 高清 1920x1080i (隔行扫描) 也属于高清 1920x1080p 全高清 3840x2160,7680x4320 超(高)清   ...

  9. AngularJS图片上传功能的实现

    一.前言 前一段时间做项目时,遇到一个问题就是AngularJS实现图片预览和上传的功能,当时查阅文档(都是英文文档)折腾了很久才弄出来,现将整个流程整理出来,有需要的朋友可以参考一下,如果您有更好的 ...

  10. entityframework 入门-来自微软

    必备条件 要完成本演练,需要安装 Visual Studio 2010 或 Visual Studio 2012. 如果使用的是 Visual Studio 2010,还需要安装 NuGet. 1.创 ...