Maven settings配置中的mirrorOf

原文地址:http://blog.csdn.net/isea533/article/details/21560089

使用maven时,从来没仔细注意过setting配置节点的作用,直到今天配置总是不起作用,总是报错才开始去认识这些节点的含义。

这里就说mirrorOf,因为其他的怎么配置基本上都不会出错,只有mirrorOf会导致莫名其妙的错误,如果你还不了解mirrorOf,请往下看,你会认识到mirrorOf的重要作用的。

主要参考来自:

Using Mirrors for Repositories

如果你英文很不错,你可以去maven官方查看上面的介绍,上面的介绍主要说明了mirrorOf的用法和作用。

或者在这里继续看下去:

先说mirrors中mirror的作用,mirrors允许配置多个镜像mirror,mirror的作用一般是为了使用一个更快速度的镜像,主要是访问速度的考虑,或者突破屏蔽使用可以访问的镜像。

在maven中不配置mirror时使用的maven的中央库。

在maven中配置一个mirror时,mirror通常会设置成*,还有可能是一个具体的值,还有可能是逗号隔开的几个值..

例如:

1.*

2.repo3

3.repo1,repo2,*,!repo3

4.external:*

在上面4个例子中,第一个例子中*的意思就是(根据mirrorOf和repository的id)匹配所有的库(repository),这样就是说如果你需要某个jar,他会从镜像地址去下载这个jar。不管你配置了多少个库,即使这些库的地址不一样,仍然会从镜像地址访问,这里就产生了问题。

问题:为什么我配置好了库(repository),但是下载不下来(或者下载地址不对)?

这个问题已经很明白了,就是镜像(mirror)的问题。

问题:如何解决上述问题呢?

这里请继续看第二个例子和第三个例子。

第二个例子只配置了一个repo3,这个镜像只能匹配id是repo3的库,该库会使用repo3的镜像访问。这里说重点了,即使存在一个*的,这里会先查找完全相同的存储库标识符匹配的镜像,如果找到了,就用匹配的,这里就是repo3,这点可以放心。如果找不到,那就去根据其他的mirrorOf查找去,查找到一个就使用。这里需要注意的是,如果存在多个重复的mirrorOf,只会用排名靠前的第一个(按照配置顺序来)。如果一个都没有,就会用maven中央库。

第三个例子是用逗号隔开的好几个,并且有一个特殊的!repo3,一般!的意思是非,这里的意思就是,就是排除repo3的情况。综合起来第三个的含义就是完全匹配repo1,repo2和其他全部库,排除repo3库。

到这里,第二个问题已经有了答案,给这个库配置单独的镜像,而且位置尽量在前面,id和mirrorOf一致。说到这两个一致,还得说两个不能一致的情况,就是mirror的mirrorOf不能和任何mirror的id一致,因为id在setting中唯一,mirrorOf要和库的id一致,所以势必不能和mirror的id一致,如果一致显然就起不到作用了(这里属于猜测,官方要求不能一致)。

第四个例子很特殊,含义就是匹配本地库之外的全部库。如果本地库存在,就用本地库的。

到这里,有关mirrorOf的内容说完了,记录下我解决问题的思路和原因以及解决办法,希望对你有所帮助。

时间: 07-11

Maven settings配置中的mirrorOf的相关文章

学习笔记——Maven settings.xml 配置详解

文件存放位置 全局配置: ${M2_HOME}/conf/settings.xml 用户配置: ${user.home}/.m2/settings.xml note:用户配置优先于全局配置.${user.home} 和和所有其他系统属性只能在3.0+版本上使用.请注意windows和Linux使用变量的区别. settings.xml详解 声明规范 <?xml version="1.0" encoding="UTF-8"?> <settings x

Eclipse中Maven插件配置

1. Maven插件配置 http://www.blogjava.net/fancydeepin/archive/2012/07/13/eclipse_maven3_plugin.html 2. Maven使用教程 http://www.cnblogs.com/sunddenly/p/4195975.html

Maven settings细节

陈科肇 ========== 0.简介 settings.xml文件的settings元素包含很多子元素,这些用来配置Maven的执行情况. 可以在两个地方找到settings.xml文件:Maven安装目录下的$MAVEN_HOME/conf/settings.xml.用户特定在~/.m2/settings.xml. 1.简单值 一半顶层settings元素是简单值,它们表示的一系列值可以配置Maven的核心行为: localRepository - 表示构建系统本地仓库的位置: intera

Maven入门1-在Eclipse中新建Maven Web项目

在eclipse中新建Maven Web项目 很多时候开发效率低下,大部分原因是IDE环境不熟悉.配置不会配置:因此在学习一项技能之前,有必要对基本的环境配置有所了解,正所谓磨刀不误砍柴工.这篇文章主要针对初次接触Maven,不熟悉配置的研究人员. 1.Maven配置及介绍 Maven官网:http://maven.apache.org/ 以前开发Java Web工程时,需要导入很多依赖包,但是随着工程逐渐变大,所管理的包越来越多,有必要使用工具来管理这些包,这样不需要我们手动导入:Maven就

Maven镜像配置

镜像是为了提供更快的服务 如图:X就认为是Y的一个镜像. 编辑settings.xml配置中央仓库镜像: [html] view plaincopyprint? <settings> ... <mirrors> <mirror> <id>maven.net.cn</id> <name>one of the central mirrors in china</name> <url>http://maven.net

Eclipse+maven+spring配置

由于公司不能访问外网,maven和spring的配置真难,但是最终还是弄好了,下面记录一下自己配置过程.首先当然要配置好JAVA的开发环境.之后下载安装如下软件: 1.下载解压安装Eclipse:http://www.eclipse.org/downloads/ 2.Maven的安装和配置:http://jingyan.baidu.com/article/d8072ac45d3660ec94cefd51.html 3.Spring的Eclipse离线安装:https://spring.io/to

使用公司自己的maven服务器时,本地 maven 的配置方法

使用公司的maven服务器,可以加速jar包的下载. 如果要使用公司的maven服务器,需要对本地maven配置文件conf/settings.xml做相应修改,具体改法有两种. 一.mirror 方式 思路是利用 mirror 配置支持通配符号,于是可以指定所有的 repository 都去找公司的repository,如果有某些 repository 是公司没有的,就需要显示做排除. 这种方法明显的缺点就是要排除所有公司仓库中没有的repository. 具体配置如下 <mirrors>

开发流程和Maven的配置

按照何种开发模型? V模型:项目需求--->概要设计(功能模块) --->详细设计(页面的设计,数据库的设计) --->编码(框架的搭建,功能的实现)---->测试(单元测试,黑盒测试,性能测试,回归测试)--->发布(war包,jar包)--->项目评审--->项目完成 敏捷开发:快速迭代 数据库的设计的时候: 1.提取功能模块的名称. 用户,商品类别,商品,入库,出库,库存,供应商(公司信息) 每个功能模块会单独形成一张表. 2.根据每个表,形成它的字段(可以

Maven 私服配置 转

1.配置Nexus为maven的私服 第一种方式:在项目的POM中如下配置 <repositories>     <repository>         <id>nexus_public</id>                 <url>http://localhost:8081/nexus/content/groups/public/</url>                 <releases>