当前位置: 首页 > news >正文

maven 下载jar包加载顺序

在 Maven 构建过程中,依赖的下载源取决于你的 pom.xml 文件中的 配置、settings.xml 文件中的 和 配置,以及你的 Nexus 仓库的设置。以下是决定 Maven 从哪个仓库下载依赖的关键点:

仓库配置优先级

  1. 项目 pom.xml 文件中的仓库配置:优先使用在项目 pom.xml 文件中指定的仓库。
  2. 用户 settings.xml 文件中的仓库配置:如果项目中没有指定仓库,则使用用户 settings.xml 文件中的配置。
  3. 全局 settings.xml 文件中的仓库配置:如果用户 settings.xml 中也没有配置,则使用全局 settings.xml
    文件中的配置(通常位于 Maven 的安装目录中)。

仓库的匹配和下载逻辑

  1. 定义的仓库顺序:Maven 会按照仓库定义的顺序依次查询。第一个找到所需依赖的仓库将被使用。
  2. 镜像配置:如果在 settings.xml 中定义了镜像(),所有对原始仓库的请求会被重定向到镜像仓库。
  3. 本地缓存:在查询远程仓库之前,Maven 首先会在本地缓存(~/.m2/repository)中查找依赖。

示例配置和行为

pom.xml

<project><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>my-project</artifactId><version>1.0.0</version><repositories><repository><id>central</id><url>https://repo.maven.apache.org/maven2</url></repository><repository><id>nexus-releases</id><url>http://nexus.mxcd.top/repository/maven-releases/</url></repository></repositories>
</project>

settings.xml

<settings><mirrors><mirror><id>aliyun-repos</id><name>aliyun repository</name><mirrorOf>central</mirrorOf><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror></mirrors><profiles><profile><id>nexus</id><repositories><repository><id>mxc-release-repo</id><url>http://nexus.mxcd.top/repository/maven-releases/</url></repository><repository><id>mxc-snapshot-repo</id><url>http://nexus.mxcd.top/repository/maven-snapshots/</url></repository></repositories><pluginRepositories><pluginRepository><id>mxc-release-repo</id><url>http://nexus.mxcd.top/repository/maven-releases/</url></pluginRepository><pluginRepository><id>mxc-snapshot-repo</id><url>http://nexus.mxcd.top/repository/maven-snapshots/</url></pluginRepository></pluginRepositories></profile><profile><id>aliyun</id><repositories><repository><id>central</id><url>http://maven.aliyun.com/nexus/content/groups/public/</url></repository></repositories><pluginRepositories><pluginRepository><id>central</id><url>http://maven.aliyun.com/nexus/content/groups/public/</url></pluginRepository></pluginRepositories></profile></profiles><activeProfiles><activeProfile>nexus</activeProfile></activeProfiles>
</settings>

分析下载行为

  1. 镜像配置生效:
  • 如果你在 settings.xml 中配置了镜像 aliyun-repos,且指定 了
    central,那么所有对中央仓库的请求都会被重定向到阿里云的镜像仓库。这意味着,任何试图从中央仓库下载的依赖都会从阿里云镜像仓库下载。
  1. 项目 pom.xml 中的仓库配置:
  • 在你的 pom.xml 文件中,如果你明确指定了 nexus-releases 仓库,那么该仓库会首先被查询。如果依赖在 nexus-releases 仓库中存在,它会从该仓库下载。
  • 如果 nexus-releases 仓库中没有找到依赖,接下来会查询中央仓库(被重定向到阿里云镜像仓库)。
  1. 用户 settings.xml 中的 Profile 配置:
  • 如果你在 settings.xml 中激活了 nexus profile,那么在没有其他配置覆盖的情况下,Maven 会优先从 nexus profile 中定义的仓库下载依赖。
  • 例如,如果你在构建命令中使用 mvn clean install -P nexus,Maven 会首先查询 http://nexus.mxcd.top/repository/maven-releases/ 和 http://nexus.mxcd.top/repository/maven-snapshots/ 仓库。

示例操作流程

假设你的项目 pom.xml 文件和 settings.xml 文件配置如下:

pom.xml
<project><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>my-project</artifactId><version>1.0.0</version><repositories><repository><id>nexus-releases</id><url>http://nexus.mxcd.top/repository/maven-releases/</url></repository></repositories>
</project>
settings.xml<settings><mirrors><mirror><id>aliyun-repos</id><name>aliyun repository</name><mirrorOf>central</mirrorOf><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror></mirrors><profiles><profile><id>nexus</id><repositories><repository><id>mxc-release-repo</id><url>http://nexus.mxcd.top/repository/maven-releases/</url></repository><repository><id>mxc-snapshot-repo</id><url>http://nexus.mxcd.top/repository/maven-snapshots/</url></repository></repositories><pluginRepositories><pluginRepository><id>mxc-release-repo</id><url>http://nexus.mxcd.top/repository/maven-releases/</url></pluginRepository><pluginRepository><id>mxc-snapshot-repo</id><url>http://nexus.mxcd.top/repository/maven-snapshots/</url></pluginRepository></pluginRepositories></profile><profile><id>aliyun</id><repositories><repository><id>central</id><url>http://maven.aliyun.com/nexus/content/groups/public/</url></repository></repositories><pluginRepositories><pluginRepository><id>central</id><url>http://maven.aliyun.com/nexus/content/groups/public/</url></pluginRepository></pluginRepositories></profile></profiles><activeProfiles><activeProfile>nexus</activeProfile></activeProfiles>
</settings>

行为总结

  • 默认行为:
    如果你运行 mvn clean install,nexus profile 被自动激活,Maven 会优先从 http://nexus.mxcd.top/repository/maven-releases/http://nexus.mxcd.top/repository/maven-snapshots/ 下载依赖。

  • 中央仓库镜像:
    如果 nexus profile 中定义的仓库没有找到依赖,且依赖定义在中央仓库,那么由于镜像配置,Maven 会从 http://maven.aliyun.com/nexus/content/groups/public 下载。

  • 命令行指定 profile:
    如果你运行 mvn clean install -P aliyun,则会激活 aliyun profile,Maven 只会从 http://maven.aliyun.com/nexus/content/groups/public 下载依赖,而不会查询 nexus 仓库。

具体操作示例

假设你希望从 Nexus 私库下载依赖,但如果私库中没有找到依赖再从阿里云镜像下载,确保你没有在命令行中指定 profile,则 nexus profile 会被自动激活,行为如下:

sh
mvn clean install
  1. 查询 Nexus 私库:首先查询 http://nexus.mxcd.top/repository/maven-releases/ 和 http://nexus.mxcd.top/repository/maven-snapshots/。
  2. 查询阿里云镜像:如果私库中没有找到依赖,查询 http://maven.aliyun.com/nexus/content/groups/public。

这样配置可以保证在不同的构建场景下灵活选择依赖下载的源,同时提高构建过程中的效率和稳定性。

相关文章:

maven 下载jar包加载顺序

在 Maven 构建过程中&#xff0c;依赖的下载源取决于你的 pom.xml 文件中的 配置、settings.xml 文件中的 和 配置&#xff0c;以及你的 Nexus 仓库的设置。以下是决定 Maven 从哪个仓库下载依赖的关键点&#xff1a; 仓库配置优先级 项目 pom.xml 文件中的仓库配置&#xff…...

新增多种图表类型,新增视频、流媒体、跑马灯组件,DataEase开源数据可视化分析工具v2.7.0发布

2024年6月11日&#xff0c;人人可用的开源数据可视化分析工具DataEase正式发布v2.7.0版本。 这一版本的功能变动包括&#xff1a;图表方面&#xff0c;新增对称条形图、桑基图、流向地图、进度条等图表类型&#xff0c;并对已有的仪表盘、指标卡、明细表、汇总表、水波图、象限…...

supOS工业操作系统的由来

作为“世界制造工厂”&#xff0c;我国拥有最庞大、最完整的工业企业集群与产业链&#xff0c;其中既有众多全球性制造巨头&#xff0c;又有数以百万计的中小型工厂。但这些企业的制造工厂在推进数字化、网络化、智能化进程时普遍受阻&#xff1a;1&#xff09;系统软件定制程度…...

6spark期末复习

1)var a:Double5;var b:Int7;那么print(a*b) 2) var a:Int5; var bif(a>6) 7 println(b) 3)var a:Int16; var b:Int13; var cif(a>b) 5 else 7; println(c) 4. object TestDemo { print("B") def main(args: Array[String]): Unit { } } 5 def mai…...

C语言背景⾊、线条颜⾊和填充颜⾊有什么区别?何时使⽤?

一、问题 背景⾊、线条颜⾊和填充颜⾊&#xff0c;这⼏种颜⾊有什么区别&#xff1f;什么时候使⽤&#xff1f; 二、解答 背景⾊&#xff1a;是整个屏幕的底⾊&#xff0c;设置之后&#xff0c;屏幕空⽩区域都变成该颜⾊。 线条颜⾊&#xff1a;是画线时所⽤的颜⾊。⽂字输出也…...

Python 植物大战僵尸游戏【含Python源码 MX_012期】

简介&#xff1a; "植物大战僵尸"&#xff08;Plants vs. Zombies&#xff09;是一款由PopCap Games开发的流行塔防游戏&#xff0c;最初于2009年发布。游戏的概念是在僵尸入侵的情境下&#xff0c;玩家通过种植不同种类的植物来保护他们的房屋免受僵尸的侵袭。在游…...

搜索文档的好助手

搜索文档的好助手 AnyTXT SearcherEverything AnyTXT Searcher 文本内容搜索 下载&#xff1a;AnyTXT Searcher Everything 它能够基于文件名快速定文件和文件夹位置 下载&#xff1a;Everything...

如何计算 GPT 的 Tokens 数量?

基本介绍 随着人工智能大模型技术的迅速发展&#xff0c;一种创新的计费模式正在逐渐普及&#xff0c;即以“令牌”&#xff08;Token&#xff09;作为衡量使用成本的单位。那么&#xff0c;究竟什么是Token呢&#xff1f; Token 是一种将自然语言文本转化为计算机可以理解的…...

在远程服务器上安装虚拟环境

一、Anaconda环境安装 先下载Anaconda Linux版&#xff0c;并将其重命名为anaconda2020.sh wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2020.07-Linux-x86_64.sh --header"User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (K…...

《站在2024年的十字路口:计算机专业是否仍是高考生的明智之选?》

文章目录 每日一句正能量前言行业竞争现状行业饱和度和竞争激烈程度[^3^]新兴技术的影响[^3^]人才需求的变化[^3^]行业创新动态如何保持竞争力 专业与个人的匹配度判断专业所需的技术能力专业核心课程对学生的要求个人兴趣和性格特点专业对口的职业发展要求实践和经验个人价值观…...

从零手写实现 nginx-23-nginx 对于 cookie 的操作

前言 大家好&#xff0c;我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的&#xff0c;可以参考我的另一个项目&#xff1a; 手写从零实现简易版 tomcat minicat 手写 nginx 系列 …...

Python语言例题集(015)

#!/usr/bin/python3 #使用列表模仿队列的操作。 class Queue(): def init(self): self.queue[] def enqueue(self,data):self.queue.insert(0,data)def dequeue(self):if len(self.queue):return self.queue.pop()return "队列是空的"qQueue() q.enqueue(‘Grape’…...

Halcon C++ XLD 数据写入图片

1. xld转换为Region 生成与调用函数 gen_cross_contour_xld (CrossXld, Rows, UpdateCols, 6, 0) get_xld_region (CrossXld, xldRegions)函数实现 get_xld_region * 计算XLD个数 count_obj (BaseXld, Number) * 生成空的区域&#xff08;结果&#xff09; gen_empty_region…...

一文入门vim

先来波快问快答。 第一个问题&#xff0c;vim是什么&#xff1f; vim就是一文本编辑器。 第二个问题&#xff0c;我们为什么要使用vim&#xff1f; 好像在终端中可选择使用的文本编辑器也不多&#xff08;其他有&#xff0c;但是相对而言vim用的比较广泛&#xff09; 第三…...

植物ATAC-seq文献集锦(三)——果实发育篇

ATAC-seq在植物研究领域的应用我们已经介绍2期了&#xff0c;本期我们聚焦ATAC-seq技术在果实发育方向的应用案例。 植物ATAC-seq文献集锦&#xff08;一&#xff09;——基因组篇 植物ATAC-seq文献集锦&#xff08;二&#xff09;——生长发育篇 文献一&#xff1a;Ident…...

在自己的电脑上搭建我的世界Java版服务器

很多朋友&#xff0c;喜欢玩Minecraft&#xff0c;也希望搭建一个服务器&#xff0c;用于和小伙伴联机&#xff1b; 并且&#xff0c;拥有服务器后&#xff0c;即使所有玩家都下线&#xff0c;“世界”依旧在运行&#xff0c;玩家可以随时参与其中&#xff0c;说不定一上线&am…...

1.PyQt6库和工具库QTDesigner安装

1.安装PyQT6和pyqt6-tools 1. PyQt6库是PyQt的开发库 2.pyqt6-tool时QTDesigner设计器工具支持库 pip install PyQt6 pip install pyqt6-tools 2.在Pycharm中配置外部工具QTDesigner和PYGIC 配置外部工具QTDesigner 1. QTDesigner是QT界面设计器 2.打开Pycharm->Settin…...

Hbase搭建教程

Hbase搭建教程 期待您的关注 ☀小白的Hbase学习笔记 目录 Hbase搭建教程 1.上传hbase的jar包并解压 2.重新登录 3.启动zookeeper 4.配置环境变量 5.关闭ZK的默认配置 6.修改hbase-site.xml文件 7.修改regionservers文件 8.将配置好的文件分发给其它节点 9.配置环境变量…...

利用three-csg-ts对做物体交互式挖洞

默认物体均为居中&#xff0c;如果指定位置没有发生偏移&#xff0c;可能是因为在执行布尔操作之前没有正确设置变换。确保在进行布尔运算之前应用所有必要的变换。以下是经过修正的完整代码示例&#xff0c;它会确保圆柱正确旋转并与盒子进行 CSG 操作。 安装依赖 首先&…...

腾讯云对象存储不绑定自定义备案域名不给下载应该如何处理?

从2024年1月1日起&#xff0c;腾讯云对象存储&#xff08;COS&#xff09;将实施新政策&#xff1a;新创建的存储桶不再支持使用path-style域名&#xff08;即存储桶绝对路径&#xff09;。此外&#xff0c;使用默认域名访问的新存储桶将不再支持任意类型文件的预览&#xff0c…...

2026年5月14隔夜暗盘挂单排行榜

推荐好文:每年节约五六千交易费不香吗如何获取龙虎榜是否有量化参与如何获取股东减持信息大A有5400多只股票, 这里面只有不到10%, 约500只由资金投票, 剩余的都是杂毛, 炒股看龙头找主线. 从隔夜挂单里选择, 再叠加我们之前分享的如何判断是否有大股东减持, 是否有融资融券参与…...

Godot引擎集成CEF实现Web混合渲染:gdcef项目架构与实战指南

1. 项目概述与核心价值最近在折腾一个老项目的现代化改造&#xff0c;需要把传统的桌面应用嵌入到Web视图中&#xff0c;实现混合渲染。在技术选型时&#xff0c;我绕不开一个名字&#xff1a;CEF&#xff0c;也就是Chromium Embedded Framework。它几乎是桌面应用内嵌浏览器控…...

接手遗留系统第一周,我做了三件事,团队从此不再怕改老代码

刚跳槽到新公司&#xff0c;技术总监在入职谈话时递给我一杯咖啡&#xff0c;语气沉重地说&#xff1a;“我们最核心的交易系统已经跑了八年&#xff0c;负责它的老张去年离职了。现在整个团队没人敢动里面的代码&#xff0c;每次改需求都像在拆炸弹。”他停顿了一下&#xff0…...

交通事故车辆受损情况数据集分享(适用于YOLO系列深度学习分类检测任务)

交通事故车辆受损情况数据集分享&#xff08;适用于YOLO系列深度学习分类检测任务&#xff09; 源码下载链接:https://pan.baidu.com/s/1zYLg1EOwHB-HTBlxQr4w7A?pwdyhmd 提取码:yhmd前言 随着道路交通量的不断增加&#xff0c;交通事故的发生频率也呈现上升趋势。事故发生后&…...

接入Taotoken后感受到的API调用延迟降低与错误率改善

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 接入Taotoken后感受到的API调用延迟降低与错误率改善 1. 背景与切换契机 作为一名长期在项目中集成大模型能力的开发者&#xff0…...

Adafruit Metro M4 AirLift开发板:硬件解析与物联网开发实战

1. 项目概述与硬件解析如果你正在寻找一款既能提供强大本地计算能力&#xff0c;又能轻松接入无线网络的微控制器开发板&#xff0c;那么Adafruit Metro M4 Express AirLift绝对是一个值得深入研究的选项。它不是简单的单片机加WiFi模块的堆砌&#xff0c;而是一个经过精心整合…...

ARM架构CPACR与SCR寄存器详解与应用

1. ARM架构系统控制寄存器概述在ARMv8/v7架构中&#xff0c;系统控制寄存器(System Control Registers)是处理器核心功能配置的关键组件&#xff0c;它们直接控制着处理器的运行状态、安全机制和硬件资源访问权限。这些寄存器通常通过协处理器CP15进行访问&#xff08;在AArch3…...

Docker Compose实战:一键部署OpenClaw项目与环境管理

1. 项目概述&#xff1a;一个为OpenClaw项目量身定制的Docker助手 如果你正在折腾一个名为OpenClaw的开源项目&#xff0c;并且被它复杂的依赖环境、繁琐的配置步骤搞得焦头烂额&#xff0c;那么你很可能需要“vivganes/openclaw-docker-helper”这个工具。简单来说&#xff0…...

别再格式化U盘了!Ubuntu 22.04 LTS下永久解决exFAT支持问题的完整配置指南

永久解决Ubuntu 22.04 LTS的exFAT兼容性问题&#xff1a;从原理到实践 当你在Ubuntu系统中插入一个exFAT格式的U盘或移动硬盘时&#xff0c;那个令人沮丧的错误提示可能已经出现过多次&#xff1a;"unknown filesystem type exfat"。这不是偶然现象&#xff0c;而是源…...

明日方舟素材库:从游戏资产到创意引擎的技术解密

明日方舟素材库&#xff1a;从游戏资产到创意引擎的技术解密 【免费下载链接】ArknightsGameResource 明日方舟客户端素材 项目地址: https://gitcode.com/gh_mirrors/ar/ArknightsGameResource 在数字创作的广阔天地中&#xff0c;专业级游戏素材往往被锁在商业游戏的围…...