Maven是当前流行的项目管理工具,但官方的库在国内经常连不上,连上以后龟一般的速度也能让你崩溃,这时候也许你会去搜索下如何加速。 百度搜索 maven镜像
会发现绝大部分都在推荐 阿里云 的镜像服务,但是阿里云的镜像服务真的好用吗?去国内各大云厂商搜索了下发现都提供了镜像服务,到底哪个是最快的呢?这里进行深度测试。各大厂商也是鸡贼,对关键字也做了处理比如腾讯的 腾讯云镜像maven
腾讯云maven镜像
镜像地址
- 阿里云 https://maven.aliyun.com/mvn/view
- 腾讯云 https://mirrors.cloud.tencent.com/
- 华为云 https://mirrors.huaweicloud.com/
我们分表从用户体验、下载速度进行评测
用户体验
阿里云
- 打开阿里云maven镜像网址 https://maven.aliyun.com/mvn/view 列出了所代理的镜像地址,基本常用的都在列了,具体如何配置很难找打,如果你细心的话会发现右上角有一个
使用指南
的链接
进去使用指南界面,这个界面符合阿里所有帮助文档的风格,第一部分是代理仓库列表,第二部分为配置指南,包含 mvn和gradle的配置详解,直接复制配置到
settings.xml
文件即可aliyunmaven * 阿里云公共仓库 https://maven.aliyun.com/repository/public
腾讯云
- 打开腾讯云maven镜像地址 https://mirrors.cloud.tencent.com/ 以列表的形式列出了所有支持的软件源,同样在右上角有 很不明显的文档链接
进去以后需要认真查看才能看到maven镜像加速的配置,简单介绍了如何进行配置,同样提供了一键复制功能
nexus-tencentyun * Nexus tencentyun http://mirrors.cloud.tencent.com/nexus/repository/maven-public/
华为云
- 打开华为云maven镜像 https://mirrors.huaweicloud.com/ 乍一看界面很复杂,但是界面很友好,提供了多种检索方式,可以根据需要很方便的进行搜索,maven属于语言类的我们点击语言类的进行查看,用卡片的形式对结果进行了渲染,鼠标上去还有高亮标记,可以说很用心了
- 点击maven卡片会提示登录、注册、或者继续使用,这里特意强调了华为镜像使用了CDN加速,并且下载速度快一倍
我们点击继续使用,打开的界面也很直观,提供了jdk下载、maven加速下载地址,maven、gradle可以直接切换,并且详细说明了如何进行替换,更加用心的是提供了一键下载可以直接下载完整的配置文件,良心啊,每一步都替用户着想,新手引导链接跳转到了华为论坛,更加详细的指导,一键复制mirror地址进行配置
huaweicloud * https://mirrors.huaweicloud.com/repository/maven/
结论
华为云每一步都替用户着想,详细的配置说明罗胜一筹
下载速度
配置文件准备
示例程序使用之前多数据源配置的程序样例,文末有下载方式
我们使用华为云maven镜像加速下载下来的配置文件为模板,复制三份,mirror分别指定为华为云、阿里云、腾讯云的地址,文件命名为 settings_ali.xml settings_huawei.xml settings_tencent.xml
maven本地缓存路径使用默认的地址 ${user.home}/.m2/repository
,每次构建之前需要清理本地缓存文件
rm -rf /root/.m2/repository/*
我们使用maven命令行窗口指定特定settings.xml的方式进行测试
maven命令如下
mvn clean package -Dmaven.test.skip=true -s settings_ali.xml
完整的脚本
这里以华为云为例,脚本执行100次
#!/bin/bash
echo '' > huawei
for ((i=1; i<=100; i ++))
do
echo $i
rm -rf /root/.m2/repository/*
# start_mill=$((`date '+%s'`*1000+`date '+%N'`/1000000))
mvn clean package -Dmaven.test.skip=true -s settings_huawei.xml >> huawei
# end_mill=$((`date '+%s'`*1000+`date '+%N'`/1000000))
# diff=$[10#$end_mill-10#$start_mill]
#echo $diff >> huawei
done
grep 'Total time' huawei |awk 'BEGIN {max = 0} {if ($4>max) max=$4 fi} END {print "Max=", max}'
grep 'Total time' huawei |awk 'BEGIN {min = 6553565} {if ($4