2.1 maven配置多镜像地址
背景:
自己在平时写项目用的是阿里的镜像地址,而在开发公司的项目是用的是公司提供的镜像地址,这就导致了每次使用的时候
都需要来回的修改maven的settings.xml文件,这样很容易出错,而且还浪费时间;
需求:希望能够不改动配置文件的情况下,动态切换mirror配置;
分析:
在maven的配置文件setting.xml大里面有个mirrors节点,用来配置镜像URL。mirrors可以配置多个mirror,每个mirror有id,name,url,mirrorOf属性,
id是唯一标识一个mirror,name节点名,url是官方的库地址,mirrorOf代表了一个镜像的替代位置,例如central就表示代替官方的中央库。
虽然mirrors可以配置多个子节点,但是它只会使用其中的一个节点,即默认情况下配置多个mirror的情况下,只有第一个生效,只有当前一个mirror
无法连接的时候,才会去找后一个;而我们想要的效果是:当a.jar在第一个mirror中不存在的时候,maven会去第二个mirror中查询下载,但是maven不会这样做!)。
那么maven是使用哪个mirror节点的呢?
默认:mirror不是按settings.xml中写的那样的顺序来查询的,即所谓的第一个并不一定是最上面的那个。
当有id为B,A,C的顺序的mirror在mirrors节点中,maven会根据字母排序来指定第一个,所以不管怎么排列,
一定会先找到A这个mirror来进行查找,当A无法连接,出现意外的情况下,才会去B查询。
注意:
配置多个mirror时,mirrorOf不能配置" * "," * " 的意思就是(根据mirrorOf和repository的id)匹配所有的仓库(repository),
这样就是说如果你需要某个jar,他会从镜像地址去下载这个jar。不管你配置了多少个库,即使这些库的地址不一样,仍然会从镜像地址访问。
解决办法:
settings.xml 中可以使用变量,可以尝试使用变量解决:
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
-->
<!-- 唯一标识一个mirror -->
<id>mirrorId</id>
<!-- 代表这个镜像的替代位置,例如central就表示替代官方的中央仓库。我们可以将这个地方设置为变量,然后通过手动指定变量地方式动态切换mirror -->
<!-- mirrorOf指定这个镜像是针对哪个repository的,配置成*就表示要代理所有repository的请求 -->
<mirrorOf>repositoryId</mirrorOf>
<!-- 名字(个人感觉这个name作用主要是给自己识别用,因为id已经在当前xml中唯一指定了一个mirror) -->
<name>Human Readable Name for this Mirror.</name>
<!-- 官方仓库库的地址 -->
<url>http://my.repository.com/repo/path</url>
</mirror>
实例:
<mirrors>
<mirror>
<id>aliyun</id>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>${aliyun}</mirrorOf>
</mirror>
<mirror>
<id>netease</id>
<url>http://mirrors.163.com/maven/repository/maven-public/</url>
<mirrorOf>${netease}</mirrorOf>
</mirror>
<mirror>
<id>default</id>
<url>http://ip/nexus/repository/maven-public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
切换命令:
配置多个mirror的情况下,默认只有第一个生效。因此我们可以把最后一个作为默认值,前面配置的使用环境变量动态切换。
默认执行: mvn help:effective-settings可以看到使用的是最后一个
切换阿里镜像执行mvn help:effective-settings -Daliyun=central即可
同理,切换网易mvn help:effective-settings -Dnetease=central
参考:Maven 的 settings.xml 配置中的mirror节点
maven的setting配置文件中mirror和repository的区别
maven动态切换mirror,无需修改settings.xml
2.1 maven配置多镜像地址的更多相关文章
- docker配置国内镜像地址,解决无法pull镜像问题docker: Error response from daemon
问题: 执行命令 $ docker run -it --rm -p 8888:8080 tomcat:8.5.32 报错 Unable to find image 'tomcat:8.5.32' lo ...
- Maven配置国内镜像仓库
eclipse 位置
- MAVEN 配置阿里巴巴镜像
配置 修改maven根目录下的conf文件夹中的setting.xml文件,内容如下: <mirrors> <mirror> <id>alimaven</id ...
- docker配置国内镜像地址
docker的官方镜像站被大天朝强了,今天发现阿里有镜像加速这个功能,目前好像是在公测中,废话不多说,接下来告诉你怎么操作. 点击进入阿里镜像库 https://cr.console.aliyun.c ...
- maven 配置国内镜像仓库加速获取jar包的配置方法
在 maven 的 conf/settings.xml 中配置 <mirrors> <!-- mirror | Specifies a repository mirror site ...
- Maven配置ali镜像
Maven目录,Conf文件夹下settings.xml 找到mirrors节点 添加配置 <mirror> <id>alimaven</id> <mirro ...
- maven配置阿里镜像仓库
打开maven的配置文件(windows机器一般在maven安装目录的conf/settings.xml),在<mirrors></mirrors>标签中添加mirror子节点 ...
- maven配置阿里镜像
在conf\settings.xml 在<mirrors>里面添加 <mirror> <id>nexus-aliyun</id> < ...
- maven配置国内镜像库
https://www.cnblogs.com/xiongxx/p/6057558.html
随机推荐
- 做一个有产品思维的研发:Scrapy安装
每天10分钟,解决一个研发问题. 如果你想了解我在做什么,请看<做一个有产品思维的研发:课程大纲>传送门:https://www.cnblogs.com/hunttown/p/104909 ...
- Pyenv部署
一.Git克隆方式 1.安装git yum -y install git 2.克隆pyenv到本地 git clone https://github.com/pyenv/pyenv.git ~/.py ...
- 通过类创建子线程&同步锁
一.通过类创建子线程 import threading class MyThread(threading.Thread): def __init__(self,num): threading.Thre ...
- 透析SOA、RPC、SOAP、REST、ICE、ESB模型发展史
最初的程序全是单机程序,没有网络,没有RPC,更没有RESTful.程序猿写的东西孤独运行在单机上. 那时的程序猿们语言相通,参与开发同一套系统的团队可以面对面沟通. 网络出现了.网络,也带来变乱.网 ...
- day21 python之模块和包
一 模块 1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编 ...
- 论文速读(Chuhui Xue——【arxiv2019】MSR_Multi-Scale Shape Regression for Scene Text Detection)
Chuhui Xue--[arxiv2019]MSR_Multi-Scale Shape Regression for Scene Text Detection 论文 Chuhui Xue--[arx ...
- 【003:使用SW4STM32不进入中断的原因】
系统环境: ubuntu 16.04 64bit开发环境:SW4STM32记录时间: 2017年07月01日联系方式: yexiaopeng1992@126.com背景: 在ubuntu下使用ST官方 ...
- ok6410如何从sdram中启动uboot 调试 这是一个猜想还没有验证
1\在smdk6410.h中定义宏 //#define CONFIG_SKIP_LOWLEVEL_INIT 1 //#define CONFIG_SKIP_RELOCATE_UBOOT 12\将编译的 ...
- python学习之爬虫初体验
作业来源: "https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2851" ** 1.简述爬虫原理 通用爬虫 即(搜索 ...
- dlo,学习清单
肥文自动机 模拟纵火 替罪羊 法法塔 ntt