• 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/即可。

  • 相关阅读:
    kafka原理深入研究 (转 )
    redis——持久化篇
    IDEA 配置环境和相关工具整理(新手入门)
    Spring Data JPA(官方文档翻译)
    springboot:spring data jpa介绍
    JDK8-十大新特性-附demo
    JDK8新特性一览
    Maven中的pom.xml配置文件详解
    数据库面试题(更新中...)
    互联网协议系列
  • 原文地址:https://www.cnblogs.com/grey-wolf/p/10436310.html
Copyright © 2020-2023  润新知