zoukankan      html  css  js  c++  java
  • Maven从仓库中解析依赖的机制

      当本地仓库没有依赖构件的时候,Maven会自动从远程仓库下载;当依赖版本为快照版本的时候,Maven会自动找到最新的快照。

      这背后的依赖解析机制可以概括如下:
    1)当依赖的范围是system的时候,Maven直接从本地文件系统解析构件。
    2)根据依赖坐标计算仓库路径后,尝试直接从本地仓库寻找构件,如果发现相应构件,则解析成功。
    3)在本地仓库不存在相应构件的情况下,如果依赖的版本是显式的发布版本构件,如1.2、2.1-beta-1等,则遍历所有的远程仓库,发现后,下载并解析使用。
    4)如果依赖的版本是RELEASE或者LATEST,则基于更新策略读取所有远程仓库的元数据groupld/artifactId/maven-metadata.xml,将其与本地仓库的对应元数据合并后,计算出 RELEASE或者LATEST真实的值,然后基于这个真实的值检查本地和远程仓库,如步骤2)和3)。
    5)如果依赖的版本是SNAPSHOT,则基于更新策略读取所有远程仓库的元数据groupld/artifactId/version/maven-metadata.xml,将其与本地仓库的对应元数据合并后,得到最新快照版本的值,然后基于该值检查本地仓库,或者从远程仓库下载。
    6)如果最后解析得到的构件版本是时间戳格式的快照,如1.4.1-20091104.121450-121,则复制其时间戳格式的文件至非时间戳格式,如SNAPSHOT,并使用该非时间戳格式的构件。

      当依赖的版本不明晰的时候,如RELEASE、LATEST 和SNAPSHOT,Maven就需要基于更新远程仓库的更新策略来检查更新。在maven仓库配置中,有一些配置与此有关:首先是<releases> <enabled >和<snapshots><enabled>,只有仓库开启了对于发布版本的支持时,才能访问该仓库的发布版本构件信息,对于快照版本也是同理;其次要注意的是<releases > 和<snapshots >的子元素<updatePolicy>,该元素配置了检查更新的频率,每日检查更新、永远检查更新、从不检查更新、自定义时间间隔检查更新等。最后,用户还可以从命令行加人参数-U,强制检查更新,使用参数后,Maven就会忽略<updatePolicy>的配置。

  • 相关阅读:
    PyTools包罗万象的python工具包
    手撕神经网络实验报告
    数组模拟队列 以及队列的复用(环形队列)
    Sentinel熔断降级
    二维数组与稀疏数组的转换dataStructures
    Sentine熔断降级进阶
    Centos7防火墙以及端口控制
    docker的安装以及使用命令
    ToDesk个人免费 极致流畅的远程协助软件
    typora+PicGo+gitee搭建免费的的床
  • 原文地址:https://www.cnblogs.com/sulishihupan/p/15723574.html
Copyright © 2011-2022 走看看