当前位置: 首页 > 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…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7

在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤&#xff1a; 第一步&#xff1a; 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为&#xff1a; // 改为 v…...