zoukankan      html  css  js  c++  java
  • maven访问仓库的顺序(六)

    前言

    一、顺序

    maven项目使用的仓库一共有如下几种方式:

    1. 中央仓库,这是默认的仓库
    2. 镜像仓库,通过 sttings.xml 中的 settings.mirrors.mirror 配置
    3. 全局profile仓库,通过 settings.xml 中的 settings.repositories.repository 配置
    4. 项目仓库,通过 pom.xml 中的 project.repositories.repository 配置
    5. 项目profile仓库,通过 pom.xml 中的 project.profiles.profile.repositories.repository 配置
    6. 本地仓库

    搜索顺序如下:

    local_repo > settings_profile_repo > pom_profile_repo > pom_repositories > settings_mirror > central

    ================

    查询顺序

            现在maven的查询顺序为:

            首先在本地资源库中查找依赖,若不存在,则进入下一步,否则,退出;

            然后在 远程仓库(私服) 中查找依赖,若不存在,则进入下一步,否则,退出;

            最后在 中央仓库 中查找依赖,若不存在,则提示错误信息,退出。

    ================

    三个仓库:
    本地仓库:本地的一个文件夹,用来存放所有的jar包,由自己维护;
    远程仓库(或私服):由公司或单位创建的一个仓库,由公司维护;
    中央仓库:互联网上的仓库,由Maven团队维护;

     =========

    maven的仓库只有两大类:

    1.本地仓库

    2.远程仓库,在远程仓库中又分成了3种:

    2.1 中央仓库

    2.2 私服

    2.3 其它公共库

    参看链接:https://www.cnblogs.com/YuyuanNo1/p/12938161.html

    二、MAVEN 仓库加载顺序

    2.1如果未配置有 mirrorOf * 的镜像仓库按照下面顺序获取jar

    1 、查找本地仓库

    2 、查找全局repository仓库配置并且按配置文件编辑倒序查找

    【如果配置多个全局私服仓库,就算其中一个找到jar也会继续执行其他全局私服仓库下载操作,是否存在覆盖关系无法验证;如果全局有配置的情况下,未找到jar直接抛错,不会去项目配置的私有仓库下载资源】

    3 、查找项目的repository仓库配置

    【如果全局仓库找到jar,还会继续下载项目配置的私有仓库资源,是否存在覆盖关系无法验证;如果全局仓库无法找到jar,直接抛错,不会继续下载项目私服仓库配置】

    4 、查找中央仓库,如果没有配置mirror 就默认中央仓库地址 https://repo.maven.apache.org/maven2

    5 、查找中央仓库,如果配置了mirror并且配置多个mirrorOf 是central 只会获取第一个配置进行下载jar

    2.2如果配置有 mirrorOf * 的镜像仓库

    <mirrors>
             <mirror>
                <id>xx-repository</id>
                <name>xxx</name>
                <mirrorOf>*</mirrorOf>
                <url>xxxxx</url>
            </mirror>
      </mirrors>

    则忽略上述规则,只从此仓库获取jar包。

    1.<mirrorOf>*</mirrorOf>匹配所有远程仓库。

    2.<mirrorOf>external:*</mirrorOf>匹配所有远程仓库,使用localhost的除外,使用file://协议的除外。也就是说,匹配所有不在本机上的远程仓库。

    3.<mirrorOf>repo1,repo2</mirrorOf>匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。

    4.<mirrorOf>*,!repo1</miiroOf>匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。

    2.3个人总结

    总体来说,根据实验,得出以下个人想法:

    1、本地仓库永远是第一个被查找的对象。

    2、本地仓库找不到了,他会判断maven是否配置了<mirrorOf>*</mirrorOf>的镜像,如果是则从这里下载,不是则往下走。

    3、判断是否存在私服配置,不管是maven settings.xml全局配置还是项目的pom私有配置,如果有则优先全局而后是项目私有,都会下载一遍jar【更正,取决于私服相关配置和启用条件】,是否存在覆盖关系无法验证。若都是启用状态则全局配置按配置文件倒序排优先级,找不到挨个往上找,但如果全局下不到jar就直接抛错了,不会继续去项目pom配置的私服下载。

    4、查找中央仓库是否配置镜像,有走镜像,无走默认镜像。

    参看链接:https://blog.csdn.net/kkillala/article/details/105809519

    如果错过太阳时你流了泪,那你也要错过群星了。
    在所有的矛盾中,要优先解决主要矛盾,其他矛盾也就迎刃而解。
    不要做个笨蛋,为失去的郁郁寡欢,聪明的人,已经找到了解决问题的办法,或正在寻找。
  • 相关阅读:
    (九)SpringBoot之错误处理
    (九)SpringBoot之使用jsp
    (八)SpringBoot之freeMarker基本使用
    (七)freemarker的基本语法及入门基础
    (六)Spring Boot之日志配置-logback和log4j2
    (五)Spring Boot之@RestController注解和ConfigurationProperties配置多个属性
    (四)Spring Boot之配置文件-多环境配置
    HashPayloadPcapReader
    Wireshark理解TCP乱序重组和HTTP解析渲染
    Centos定时启动和清除任务
  • 原文地址:https://www.cnblogs.com/szrs/p/15251319.html
Copyright © 2011-2022 走看看