zoukankan      html  css  js  c++  java
  • maven 中的mirror详解

    一、前言

    今天同事遇到个问题,本来公司是有maven私服的,但同事觉得上面有些东西下载不到,于是在自己本地的maven配置中加了:

    <mirrors>
    
    <mirror>
    <id>bolRemote</id>
    <mirrorOf>*</mirrorOf>
    <name>cts</name>
    <url>http://192.168.19.210:8081/nexus/content/groups/public/</url>
    </mirror>
    
    <mirror>
     <id>aliyun</id>
     <mirrorOf>central</mirrorOf>
     <name>ali yun</name>
     <url>https://maven.aliyun.com/mvn/view</url>
    </mirror>
    
    </mirrors>

    然后下载个组件,说下载不下来。

    二、解决

    首先,这里我感觉很奇怪的是,下载时,加了-U,让其强制去私服下载。

    但是我想的是,mirrorOf设为*之后,应该所有请求都会去私服下载啊,为啥日志里显示还去了aliyun的地址呢?

    于是看了官方文档,也在本地进行了实验(wireshark抓包)。

    抓包中看到了向aliyun.com发出的http请求,请求的地址为:

    https://maven.aliyun.com/mvn/view/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.jar


    前半部分,地址就是仓库url的地址,后半部分为要下载的artifact的地址。

    相当于:

    maven本地在查找仓库时,是先查找了完全匹配的仓库,然后再查找私服。查找到仓库后,直接在仓库url后,拼接对应的组件的地址,然后请求服务器。

    三、官方文档的说明

    http://maven.apache.org/guides/mini/guide-mirror-settings.html

    这里也可以看出来,是先去查找完全匹配的仓库镜像。比如,我要查central仓库,然后发现mirrors中配置了镜像,然后就查找central完全匹配的镜像地址。

    然后找到了就用它,没找到,就看看是否有通配符那种的镜像。(一般私服就是用的mirrorOf *,这时候就匹配上了)。

    更多细节,直接看官方文档吧。就

    http://maven.apache.org/guides/mini/guide-mirror-settings.html

    同事的问题在于,那个仓库的url不对,改为:

    http://maven.aliyun.com/nexus/content/groups/public/即可。

  • 相关阅读:
    【交往智慧】005.做一个愿意聆听的人
    【生活智慧】005.信守诺言的约束
    人生时间表. 如果您有了时间
    爱情五十七课,还是两个人
    【生活智慧】008.不要把自己的不顺归结于外在因素
    【交往智慧】006.勇于接受别人的意见
    【交往智慧】001.交际本领可使你利用外界的无限能量
    【交往智慧】007.给人改过的机会
    【生活智慧】004.把手放在《圣经》上
    【交往智慧】003.要能与人和谐相处
  • 原文地址:https://www.cnblogs.com/grey-wolf/p/10436310.html
Copyright © 2011-2022 走看看