Maven学习之 仓库镜像

使用仓库镜像

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

使用镜像的原因:

  • 有一个同步镜像,且速度更快。
  • 想使用你自己控制的内部仓库。
  • 想运行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

时间: 2024-10-25 02:35:37

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

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

仓库 http://blog.csdn.net/wanghantong/article/details/36427433 聚合和继承 http://www.cnblogs.com/xdp-gacl/p/4242221.html 私服搭建 http://www.cnblogs.com/xdp-gacl/p/4068967.html

Maven学习笔记(二):Maven仓库

Maven仓库的知识点比较少,理解起来也很简单. 仓库只有两类:本地仓库和远程仓库.所谓本地仓库就是自己机器上的仓库,在setting.xml文件中进行配置: 1 <localRepository>E:/MavenStore</localRepository> 本地仓库中存储的就是在使用Maven解析项目时从远程仓库下载的依赖和自己安装的一些构建. 远程仓库很明显就是网络上的仓库,存储在一个神秘的地方(好吧,其实我是不知道在哪里).当Maven解析项目时,如果本地没有需要的依赖,就

Maven学习笔记之——仓库(中)

Maven学习笔记之--仓库(中) 1.    远程仓库的配置 当出现默认的中央仓库无法满足我们的需求或者连接不上的时候.我们可以通过POM文件来指定远程仓库. <repositories> <repository> <id>jboss-maven2-release-repository</id> <name>JBoss Repository</name> <url>http://repository.jboss.org/

Maven学习笔记之——仓库(上)

Maven学习笔记之--仓库(上) 1.    何为maven仓库 Maven可以在某一指定位置统一存放所有maven项目共享的构件.此指定位置就是maven仓库.实际的项目将不再自己存放其所依赖的构件.他们只需要声明这些依赖的坐标.在需要的时候就会自动根据坐标找到仓库中的构件.并使用他们. 仓库的意义:减少磁盘占用空间.去除大量重复的构件.尤其是项目越来越多.越来越大的时候.更便于统一管理所有控件. 2.    仓库的布局 任何一个构件都有其唯一的坐标.根据这个坐标可以定义其在仓库中的唯一存储

Maven学习笔记(五):仓库

何为Maven仓库: 在Maven世界中,任何一个依赖.插件或者项目构建的输出,都可以称为构件.例如,依赖log4j-1.2.15.jar是一个构件,插件maven-compiler-plugin-2.0.2.jar是一个构件.任何一个构件都有一组坐标唯一标识. 得益于坐标机制,任何Maven项目使用任何一个构件的方式都是完全相同的.在此基础上,Maven可以在某个位置统一存储所有Maven项目共享的构件,这个统一的位置就是仓库.实际的Maven项目将不再各自存储其他依赖文件,它们只需要声明这些

Maven学习笔记(三)——Maven仓库(Repositories)、基础命令(二)&amp;自动构建项目

前言 上篇blog介绍了maven最基础的一些核心概念,包括maven项目约定的目录结构.maven核心配置文件--pom.xml文件的解析以及3个基本的maven命令(compile.test.package),本篇blog将继续介绍剩余的maven命令,还会涉及到maven最重要的概念之一--Maven仓库,最后会学习如何通过maven自动构建java项目/javaweb项目以及自动构建可供选择的项目骨架. Maven仓库(Repositories) 本来打算继续学习剩余的maven命令,但

Maven学习(七)仓库

* Maven仓库 在项目开发中,  项目目录下往往会有一个lib目录,用来存放第三方依赖jar文件, 如spring log4j jar等文件, Maven仓库就是放置JAR文件(WAR,ZIP,POM等等)的地方,所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖JAR,节省了磁盘资源, 也节省了时间 不用拷来拷去的. 此外,由于Maven仓库中所有的JAR都有其自己的坐标,该坐标告诉Maven它的组ID,构件ID,版本,打包方式等等,因此Maven项目可以方便的进行依赖版本

maven setting仓库镜像

国内连接maven官方的仓库更新依赖库,网速一般很慢,收集一些国内快速的maven仓库镜像以备用. 最新更新:2016年11月11日 18:05:40 阿里云提供Maven私服,我把配置文件贴一下,自己放在maven的conf下就行,setting.xml https://github.com/ae6623/Zebra/blob/master/maven-repo-settings-ali.xml <?xml version="1.0" encoding="UTF-8&

Maven仓库镜像(国内)

国内连接maven官方的仓库更新依赖库,网速一般很慢. 收集一些国内快速的maven仓库镜像以备用.此镜像为 国内OSChina提供的镜像,非常不错. <?xml version="1.0" encoding="UTF-8"?> <!-- ====国内OSChina提供的镜像,非常不错===== --> <mirrors> <mirror> <id>CN</id> <name>OSC