原文地址:maven配置多仓库镜像

问题场景:

1、国内访问maven默认远程中央镜像特别慢

2、用阿里的镜像替代远程中央镜像

3、大部分jar包都可以在阿里镜像中找到,部分jar包在阿里镜像中没有,需要单独配置镜像

我想达到的目标:

在maven中配置一主一副两个镜像,大部分jar直接通过主镜像可以找到,部分特殊jar在主镜像中找不到时,自动去副镜像中寻找。

我所处的阶段:

修改了maven的全局配置文件setting.xml(其所处位置maven的安装目录maven/apache-maven-3.3.9/conf/setting.xml):

1、配置了本地仓库:

  1. <localRepository>D:/maven/repository</localRepository>

2、配置了中央仓库的镜像:(换成了阿里的)

  1. <mirror>
  2. <id>nexus-aliyun</id>
  3. <name>nexus-aliyun</name>
  4. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  5. <mirrorOf>central</mirrorOf>
  6. </mirror>

希望你也做到了这一步。并且知道了mirrorOf为什么要配置为central

我所做的尝试:

我想在全局配置文件setting.xml配置两个镜像,希望有主从的区别,希望maven能在大部分情况下去阿里镜像下载jar包,个别情况去附属镜像下载jar包。

最有用的一篇博文,这位大拿翻译了maven的官网,请看连接:大拿讲Maven settings配置中的mirrorOf

其实关键就是要搞懂mirrorOf和镜像的先后顺序

与是我在setting.xml里对这两个主从镜像,尝试了各种mirrorOf和顺序的组合,最后发现如下配置实现了我的愿望

  1. <mirror>
  2. <id>奇葩-mirror</id>
  3. <name>奇葩-mirror</name>
  4. <url>https://奇葩/repo/</url>
  5. <mirrorOf>central</mirrorOf>
  6. </mirror>
  7.  
  8. <mirror>
  9. <id>nexus-aliyun</id>
  10. <name>nexus-aliyun</name>
  11. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  12. <mirrorOf>*</mirrorOf>
  13. </mirror>
 

以上配置,当maven发现所需的奇葩jar在阿里镜像中没有时,会自动去奇葩镜像中寻找。奇葩jar的确下载下来了。

问题解决了,但是!我觉得这样很不爽!对,你可能觉得我有强迫症,但的确是这样,我觉得很不爽,难道你不这样认为么

maven的mirrorOf配置设计的很不科学,以上配置算解决了我的问题,但是我觉得这样的mirrorOf配置在语义上很不符合我的逻辑。

为什么要给一个很少用到的镜像配置一个central?

如果有大拿发现有更好的配置逻辑和语义请告诉我

现实就是这样,当你发现可以临时解决问题时(可能是碰巧,隐患还很多),碰巧你还很忙,继续改进的动力也就止步了,是的我就认为问题到此截至了,如果我有空的话,我就改maven的源码,重写一套mirrorOf的逻辑。

转折

今天,我看了另一篇文章,很基础,连接在这里:很基础的知识

于是,我有了新的想法:

1,在全局配置文件setting.xml,只配置一个中央仓库的镜像,即mirrorOf为central的镜像只配置一个

2、在具体项目的pom.xml文件里配置特殊的仓库

忙里偷闲,实验一下,成功了!

这才是很符合逻辑的配置呀,是不是觉得这样的配置很舒服。

全局配置里就应该只配置一个中央仓库,其他的个别仓库也不应该往全局配置里配,所以不用在纠结mirrorOf的配置语义了!就一个central,简单明了!

终极解决方案:

同学提示我应该搭建自己的私服!这是另一个研究方向,日后再说!

我先说我的大招(我憋了很久了):

1、在全局配置文件setting.xml配置一个central仓库的镜像。

2、在具体项目的pom里配置个别的仓库,如下

  1. <repositories>
  2. <repository>
  3. <id>奇葩仓库</id>
  4. <url>https://奇葩仓库/public/</url>
  5. </repository>
  6. </repositories>

例如

  1. <repositories>
  2. <repository>
  3. <id>mvnrepository</id>
  4. <url>http://mvnrepository.com/</url>
  5. </repository>
  6. <repository>
  7. <id>repo2</id>
  8. <url>http://repo2.maven.org/maven2/</url>
  9. </repository>
  10. </repositories>

大招下载页面,maven配置文件 和 pom配置文件

maven配置多仓库镜像(转)的更多相关文章

  1. myeclipse2014 安装maven3.3.9和maven配置本地仓库 及错误修改

    结合网上的知识梳理以及自己安装的经验 myeclipse2014 安装maven3.3.9和maven配置本地仓库  及犯的错误修改  成功搞定maven 1,安装 Maven 之前要求先确定你的 J ...

  2. maven配置本地仓库、maven配置阿里中央仓库、eclipse配置maven

    一.maven配置本地仓库路径 1.打开下载好的maven目录 (若没安装,可以看我写的安装步骤https://www.cnblogs.com/xjd-6/p/11344719.html) 2.进入c ...

  3. maven配置本地仓库和国内镜像仓库,解决国内访问国外中央仓库速度过慢问题

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 1.配置本地仓库   打开conf文件夹下面的setting.xml文件 红色方框为配置本地仓 ...

  4. Maven学习之 仓库镜像

    使用仓库镜像 仓库可以声明在项目中,但有时,你可能想要使用某个仓库的镜像,而不去修改项目文件. 使用镜像的原因: 有一个同步镜像,且速度更快. 想使用你自己控制的内部仓库. 想运行repository ...

  5. maven配置多个镜像

    问题场景 1.国内访问maven默认远程中央镜像特别慢 2.用阿里的镜像替代远程中央镜像 3.大部分jar包都可以在阿里镜像中找到,部分jar包在阿里镜像中没有,需要单独配置镜像 解决方案 setti ...

  6. 你还再为下载jar包慢而烦恼吗?Maven配置阿里云镜像

    Maven配置阿里云镜像 为什么我们下载jar这么慢 maven默认会从中央仓库下载jar包,这个仓库在国外,而且全世界的人都会从这里下载,所以下载速度肯定是非常慢的. 解决方案使用镜像 什么是镜像? ...

  7. maven配置远程仓库

    1,当中央仓库无法满足要求时,可能项目需要的构件存在另一个远程仓库中.可以在POM文件中配置该仓库.代码如下: <project> ...... <repositories> ...

  8. Windows下 maven3.3.1的安装步骤+maven配置本地仓库

    简单讲下maven的安装步骤: 1.在安装maven之前,先确保已经安装JDK1.6及以上版本,并且配置好环境变量. 2.下载maven3,最新版本是Maven3.3.1 ,下载地址:http://m ...

  9. Windows下 maven3.0.4的安装步骤+maven配置本地仓库

    简单讲下maven的安装步骤: 1.在安装maven之前,先确保已经安装JDK1.6及以上版本,并且配置好环境变量. 2.下载maven3,最新版本是Maven3.0.4 ,下载地址:http://m ...

随机推荐

  1. 【译】第41节---EF6-事务

    原文:http://www.entityframeworktutorial.net/entityframework6/transaction-in-entity-framework.aspx EF默认 ...

  2. python学习 day018打卡 反射

    本节主要内容: 1.isinstance,type,issubclass 2.区分函数和方法 3.反射(重点) 一.isinstance,type,issubclass issubclass():判断 ...

  3. C#:MVC打印PDF文件

    在百度上找了许多PDF文件打印,但是符合我需求的打印方式还没看到,所以根据看了https://www.cnblogs.com/TiestoRay/p/3380717.html的范例后,研究了一下,做出 ...

  4. 使用fiddler轻轻松松制造客户端接口time out的情况

    1.打开fiddler,过滤出你想要的请求 2.复制出你想要中断的请求 3.设置中断这个请求,bpu+请求,回车(详情请百度fiddle默认命令) 4.ctrl+x(清楚所有的请求),刷新页面,重新获 ...

  5. Python3入门 Python3+Selenium做UI页面测试的学习

    https://ke.qq.com/course/310732 一直计划着系统地看看Python3,这两天不用加班了,在网上下了些资源,自己演练一番. Python3标识符保留字,直接命令行中可以查看 ...

  6. Qt532界面.ZC测试

    ZC:Delphi中只要随便拖几个控件,设置一下属性就OK了.但是,Qt中 貌似没有 方便的方式来做这个... ZC:目前的解决方案是:Qt中 拖几个控件,然后点 工具条里面的 "栅格布局( ...

  7. OpenModelica读取文件

    parameter String file = Modelica.Utilities.Files.loadResource("J:/git/tcs/tcs.txt"); 将文件名变 ...

  8. 学习笔记18—circos应用集

    一.在线画图(行列分别最大为75) 相信大家都听说过circos图,但是亲自画过的人可能就很少,这主要因为软件的安装和使用稍微有一点麻烦.其实,circos图也是可以在线绘制的,这样就简单多了!一起来 ...

  9. Codeforces E - Connected Components?

    E - Connected Components? 思路: 补图bfs,将未访问的点存进set里 代码: #include<bits/stdc++.h> using namespace s ...

  10. (转)C#连接OleDBConnection数据库的操作

    对于不同的.net数据提供者,ADO.NET采用不同的Connection对象连接数据库.这些Connection对我们屏蔽了具体的实现细节,并提供了一种统一的实现方法. Connection类有四种 ...