maven 下载jar包加载顺序
在 Maven 构建过程中,依赖的下载源取决于你的 pom.xml 文件中的 配置、settings.xml 文件中的 和 配置,以及你的 Nexus 仓库的设置。以下是决定 Maven 从哪个仓库下载依赖的关键点:
仓库配置优先级
- 项目 pom.xml 文件中的仓库配置:优先使用在项目 pom.xml 文件中指定的仓库。
- 用户 settings.xml 文件中的仓库配置:如果项目中没有指定仓库,则使用用户 settings.xml 文件中的配置。
- 全局 settings.xml 文件中的仓库配置:如果用户 settings.xml 中也没有配置,则使用全局 settings.xml
文件中的配置(通常位于 Maven 的安装目录中)。
仓库的匹配和下载逻辑
- 定义的仓库顺序:Maven 会按照仓库定义的顺序依次查询。第一个找到所需依赖的仓库将被使用。
- 镜像配置:如果在 settings.xml 中定义了镜像(),所有对原始仓库的请求会被重定向到镜像仓库。
- 本地缓存:在查询远程仓库之前,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>
分析下载行为
- 镜像配置生效:
- 如果你在 settings.xml 中配置了镜像 aliyun-repos,且指定 了
central,那么所有对中央仓库的请求都会被重定向到阿里云的镜像仓库。这意味着,任何试图从中央仓库下载的依赖都会从阿里云镜像仓库下载。
- 项目 pom.xml 中的仓库配置:
- 在你的 pom.xml 文件中,如果你明确指定了 nexus-releases 仓库,那么该仓库会首先被查询。如果依赖在 nexus-releases 仓库中存在,它会从该仓库下载。
- 如果 nexus-releases 仓库中没有找到依赖,接下来会查询中央仓库(被重定向到阿里云镜像仓库)。
- 用户 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
- 查询 Nexus 私库:首先查询 http://nexus.mxcd.top/repository/maven-releases/ 和 http://nexus.mxcd.top/repository/maven-snapshots/。
- 查询阿里云镜像:如果私库中没有找到依赖,查询 http://maven.aliyun.com/nexus/content/groups/public。
这样配置可以保证在不同的构建场景下灵活选择依赖下载的源,同时提高构建过程中的效率和稳定性。
相关文章:
maven 下载jar包加载顺序
在 Maven 构建过程中,依赖的下载源取决于你的 pom.xml 文件中的 配置、settings.xml 文件中的 和 配置,以及你的 Nexus 仓库的设置。以下是决定 Maven 从哪个仓库下载依赖的关键点: 仓库配置优先级 项目 pom.xml 文件中的仓库配置ÿ…...
新增多种图表类型,新增视频、流媒体、跑马灯组件,DataEase开源数据可视化分析工具v2.7.0发布
2024年6月11日,人人可用的开源数据可视化分析工具DataEase正式发布v2.7.0版本。 这一版本的功能变动包括:图表方面,新增对称条形图、桑基图、流向地图、进度条等图表类型,并对已有的仪表盘、指标卡、明细表、汇总表、水波图、象限…...
supOS工业操作系统的由来
作为“世界制造工厂”,我国拥有最庞大、最完整的工业企业集群与产业链,其中既有众多全球性制造巨头,又有数以百万计的中小型工厂。但这些企业的制造工厂在推进数字化、网络化、智能化进程时普遍受阻:1)系统软件定制程度…...
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语言背景⾊、线条颜⾊和填充颜⾊有什么区别?何时使⽤?
一、问题 背景⾊、线条颜⾊和填充颜⾊,这⼏种颜⾊有什么区别?什么时候使⽤? 二、解答 背景⾊:是整个屏幕的底⾊,设置之后,屏幕空⽩区域都变成该颜⾊。 线条颜⾊:是画线时所⽤的颜⾊。⽂字输出也…...
Python 植物大战僵尸游戏【含Python源码 MX_012期】
简介: "植物大战僵尸"(Plants vs. Zombies)是一款由PopCap Games开发的流行塔防游戏,最初于2009年发布。游戏的概念是在僵尸入侵的情境下,玩家通过种植不同种类的植物来保护他们的房屋免受僵尸的侵袭。在游…...
搜索文档的好助手
搜索文档的好助手 AnyTXT SearcherEverything AnyTXT Searcher 文本内容搜索 下载:AnyTXT Searcher Everything 它能够基于文件名快速定文件和文件夹位置 下载:Everything...
如何计算 GPT 的 Tokens 数量?
基本介绍 随着人工智能大模型技术的迅速发展,一种创新的计费模式正在逐渐普及,即以“令牌”(Token)作为衡量使用成本的单位。那么,究竟什么是Token呢? Token 是一种将自然语言文本转化为计算机可以理解的…...
在远程服务器上安装虚拟环境
一、Anaconda环境安装 先下载Anaconda Linux版,并将其重命名为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 的操作
前言 大家好,我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的,可以参考我的另一个项目: 手写从零实现简易版 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) * 生成空的区域(结果) gen_empty_region…...
一文入门vim
先来波快问快答。 第一个问题,vim是什么? vim就是一文本编辑器。 第二个问题,我们为什么要使用vim? 好像在终端中可选择使用的文本编辑器也不多(其他有,但是相对而言vim用的比较广泛) 第三…...
植物ATAC-seq文献集锦(三)——果实发育篇
ATAC-seq在植物研究领域的应用我们已经介绍2期了,本期我们聚焦ATAC-seq技术在果实发育方向的应用案例。 植物ATAC-seq文献集锦(一)——基因组篇 植物ATAC-seq文献集锦(二)——生长发育篇 文献一:Ident…...
在自己的电脑上搭建我的世界Java版服务器
很多朋友,喜欢玩Minecraft,也希望搭建一个服务器,用于和小伙伴联机; 并且,拥有服务器后,即使所有玩家都下线,“世界”依旧在运行,玩家可以随时参与其中,说不定一上线&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对做物体交互式挖洞
默认物体均为居中,如果指定位置没有发生偏移,可能是因为在执行布尔操作之前没有正确设置变换。确保在进行布尔运算之前应用所有必要的变换。以下是经过修正的完整代码示例,它会确保圆柱正确旋转并与盒子进行 CSG 操作。 安装依赖 首先&…...
腾讯云对象存储不绑定自定义备案域名不给下载应该如何处理?
从2024年1月1日起,腾讯云对象存储(COS)将实施新政策:新创建的存储桶不再支持使用path-style域名(即存储桶绝对路径)。此外,使用默认域名访问的新存储桶将不再支持任意类型文件的预览,…...
写段代码教会你什么是HOOK技术?HOOK技术能干什么?
起因是我想在搞一些操作windows进程的事情时,老是需要右键以管理员身份运行,感觉很麻烦。就研究了一下怎么提权,顺手瞄了一眼Windows下用户态权限分配,然后也是感谢《深入解析Windows操作系统》这本书给我偷令牌的灵感吧ÿ…...
让 AI 听懂业务、直接干活:销售易 NeoAgent 2.0 的三大跃迁
当软件行业仍在争论“AI是否会杀死SaaS”时,销售易已经给出了自己的答案。3月27日,在2026腾讯云城市峰会首站上海站,腾讯旗下CRM销售易正式发布新一代营销服全场景AI原生CRM——NeoAgent 2.0。这并非一次简单的产品迭代,而是销售易…...
快速原型构建遇阻?用快马AI一键绕过npm error 128,聚焦核心功能验证
最近在尝试用Node.js快速验证一个Web服务原型时,遇到了烦人的npm error code 128问题。这个错误通常和Git仓库权限相关,会直接卡住依赖安装流程。经过一番折腾,我总结出一套在InsCode(快马)平台快速绕开这个坑的实践方案,分享给同…...
理视康新零售系统开发要点
业务模式设计新零售模式需整合线上线下渠道,构建会员体系、分销机制与数据中台。通过小程序、APP或H5实现线上商城,线下门店采用智能硬件(如AR试戴、智能货架)提升体验。结合LBS技术实现附近门店导流,支持到店自提或同…...
MemMA:多智能体驱动的记忆自进化框架
📌 一句话总结: 本工作提出 MemMA,一个通过多智能体协同与自进化机制统一优化“记忆构建-检索-利用”循环的框架,显著提升长程记忆推理能力。 🔍 背景问题: 当前 memory-augmented LLM agent 存在两个核…...
三种主流技术方案,实现文本差异并排对比与可视化
1. 文本差异对比的技术需求与场景分析 在代码审查、文档修订或数据比对等场景中,文本差异对比功能就像给内容做"CT扫描",能快速定位修改痕迹。我经历过多次团队协作时找不到修改点的尴尬,直到系统化地测试了三种主流技术方案。**并…...
2026年3月上海污水处理设备生产厂家推荐:十大口碑产品评测对比知名
步入2026年3月,随着环保政策持续收紧与工业智能化升级的双重驱动,企业对污水处理设备的需求已从单纯的“达标排放”转向“高效、智能、全生命周期成本最优”。根据中国环保产业协会发布的《2026年度水处理装备市场趋势报告》,超过68%的采购决…...
【独家首发】基于eBPF+Java Agent+Istio Telemetry V2的零侵入式调试框架(已落地金融级生产环境,QPS>50K场景验证)
第一章:零侵入式调试框架的演进逻辑与金融级落地价值传统调试方式依赖代码埋点、日志增强或代理注入,不仅增加系统耦合度,更在高敏感、强一致性的金融核心系统中引入不可控风险。零侵入式调试框架应运而生——它不修改业务字节码、不依赖特定…...
3D Face HRN开源镜像:ModelScope官方cv_resnet50_face-reconstruction部署
3D Face HRN开源镜像:ModelScope官方cv_resnet50_face-reconstruction部署 1. 引言:从2D照片到3D人脸的魔法转换 你是否曾经想过,仅仅通过一张普通的2D人脸照片,就能生成精确的3D人脸模型?这在过去可能需要专业设备和…...
Anubi基金会为何押注Cassava?深度解析Web3数据层+社交任务的黄金组合
Anubi基金会战略投资Cassava:Web3社交任务与数据层的价值重构 当Web3世界从DeFi的金融实验转向更广泛的社会化应用时,基础设施的演进正在经历一场静默的革命。Anubi基金会近期对Cassava Network的战略投资,揭示了两个关键趋势:社交…...
