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。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/27494.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

联想电脑电池只能充到80%,就不在充电了,猛一看以为坏了,只是设置了养护模式。

现在电池管理模式有三种&#xff1a; 1&#xff09;常规 2&#xff09;养护 3&#xff09;快充 好久没有用联想的电脑了&#xff0c;猛一看&#xff0c;咱充到了80%不充了&#xff0c;难道电池是坏的&#xff1f;我们要如何设置才可以让其充电到100%呢&#xff1f; 右下角…

搜索文档的好助手

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

LLM大语言模型算法特训,带你转型AI大语言模型算法工程师(完结)

LLM大语言模型算法 与AI大语言模型算法工程师的联系 LLM&#xff08;Large Language Model&#xff09;大语言模型是指像GPT这样的大型自然语言处理模型&#xff0c;而AI大语言模型算法工程师则是负责开发和优化这些模型的专业人士。它们之间的联系可以从以下几个方面来理解&a…

ROPgadget

他是一个常用的pwn工具. 首相看这一篇文章 什么是gadget&#xff0c;以及64位libc如何泄露的问题_libc特殊gadget收集-CSDN博客 之后看这一篇 (Pwn)CTF工具 ROPgadget 的安装与使用介绍_ropgadget --binary pwn strings information --strin-CSDN博客这个时候已经差不多了 …

Web前端网站设计案例:深入剖析创意与技术的完美融合

Web前端网站设计案例&#xff1a;深入剖析创意与技术的完美融合 在当今数字化时代&#xff0c;Web前端网站设计不仅关乎视觉美观&#xff0c;更涉及到用户体验、技术实现以及创意表达的融合。本文将通过四个方面、五个方面、六个方面和七个方面的详细阐述&#xff0c;带您深入…

江苏徐州存储服务器怎样进行搭建?

存储服务器是为特定目标所设计的&#xff0c;与普通的服务器之间是有着一定区别的&#xff0c;每个存储服务器的配置也是不同的&#xff0c;因为存储服务器是根据企业的自身需求来进行设置的&#xff0c;那么对于江苏徐州存储服务器我们应该怎样进行搭建呢&#xff1f; 对于存储…

Centos7.9使用kubeadm部署K8S集群

Centos7.9使用kubeadm部署K8S集群 使用kubeadm部署一个k8s集群&#xff0c;单master2worker节点。 1. 环境信息 操作系统&#xff1a;CentOS 7.9.2009内存: 2GBCPU: 2网络: 能够互访&#xff0c;能够访问互联网 hostnameip备注k8s-master192.168.0.51masterk8s-node1192.16…

【docker实战】使用代理的坑

在docker公共仓库被封禁的日子里&#xff0c;大多数人更喜欢使用镜像仓库代理源。 网上教程一大把&#xff0c;似乎不使用代理&#xff0c;就不会使用docker一样。 上图就是我设置的代理源镜像仓库。通常是设置/etc/docker/daemon.json这个文件实现的。 这样设置之后&#xff0…

【react】react 使用 Context 的简单示例

React的Context API是一种在组件树中传递数据的方法&#xff0c;它允许你将数据从顶层组件传递到底层组件&#xff0c;而无需手动在每个层级传递props。 目录 1 创建 Context2 提供 Context 值3 消费 Context 值4 不是子组件能通过Consumer获取吗&#xff1f; 1 创建 Context …

用python把docx批量转为pdf

为保证转换质量&#xff0c;本文的方法是通过脚本和com技术调用office自带的程序进行转换的&#xff0c;因此需要电脑已经装有office。如果希望不装office也能用&#xff0c;则需要研究OpenXML技术&#xff0c;后面实在闲的慌&#xff08;退休&#xff09;再搞。 安装所需库 …

Linux---​代码运行-程序的翻译过程

前言 我们平常用C/C语言写代码的时候&#xff0c;运行只是靠编译器&#xff0c;点一下运行按钮就会出现我们代码运行的结果&#xff0c;那我们的代码究竟是怎么得到最终结果的呢&#xff1f;还是非常值得我们去了解与学习的。 一、翻译过程 > 预处理 预处理功能主要包括宏…

智能合约与身份验证:区块链技术的创新应用

一、引言 区块链&#xff0c;一个近年来备受瞩目的技术名词&#xff0c;已经从最初的数字货币领域扩展到了众多行业。那么&#xff0c;究竟什么是区块链&#xff1f;它为何如此重要&#xff1f;本文将深入剖析区块链技术的原理、应用及未来发展。 二、区块链的基本概念 区块…

BeanFactory和FactoryBean的区别:

BeanFactory和FactoryBean的区别&#xff1a; BeanFactory和FactoryBean是Spring框架中两个不同的概念&#xff0c;它们的作用和使用方式有所不同。 1. BeanFactory&#xff08;普通Bean工厂/我们所用的都是Bean工厂创建的&#xff09;是Spring框架的核心接口之一&#xff0c…

java第二十三课 —— 继承

面向对象的三大特征 继承 继承可以解决代码复用&#xff0c;让我们的编程更加靠近人类思维&#xff0c;当多个类存在相同的属性&#xff08;变量&#xff09;和方法时&#xff0c;可以从这些类中抽象出父类&#xff0c;在父类中定义这些相同的属性和方法&#xff0c;所有的子…

【JavaScript脚本宇宙】从简到繁:理解六种关键的拖放排序解决方案

前端开发利器&#xff1a;最佳拖放排序库全面解析 前言 在现代Web开发中&#xff0c;拖放排序功能已经成为许多应用程序的必备功能。无论是任务管理工具、电子商务网站还是内容管理系统&#xff0c;都需要一种高效且用户友好的方式来实现元素的重新排序。本文将详细介绍六种流…

虚拟淘宝-Virtual-Taobao论文解读(AAAI2019)

目录 1 论文简介 2 文章的主要贡献 3 文章技术的简要说明 4 技术的详细说明 4.1 GAN-SD&#xff1a;生成客户特征 4.2 MAIL&#xff1a;生成交互过程 4.3 ANC&#xff1a;动规范约束 5 实验设定及结果 6 结论 7 参考 1 论文简介 南京大学LAMDA团队的侍竞成、俞扬等…

【服务器硬件由 CPU、RAM、硬盘等组成,选购时需考虑应用需求、预算等。散热、安全、监控与维护亦重要,未来发展趋势包括高性能、低能耗和智能化。】

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

MySQL----索引的底层实现和原理

索引 在前面的文章中&#xff0c;我们分析了索引的分类、创建、删除以及索引的创建原则等&#xff0c;知道了创建索引的目的就是为了加速对表中的数据行的检索而创造的一种分散存储的数据结构。那么索引的底层结构是什么呢&#xff1f; 底层实现 数据库索引是存储在磁盘上的…

PDF标准详解(三)—— PDF坐标系统和坐标变换

之前我们了解了PDF文档的基本结构&#xff0c;并且展示了一个简单的hello world。这个hello world 虽然只在页面中显示一个hello world 文字&#xff0c;但是包含的内容却是不少。这次我们仍然以它为切入点&#xff0c;来了解PDF的坐标系统以及坐标变换的相关知识 图形学中二维…

OpenCV学习(4.15) 基于 GrabCut 算法的交互式前景提取

1. 目标 在这一章当中 我们将看到 GrabCut 算法来提取图像中的前景我们将为此创建一个交互式应用程序。 2. 理论 GrabCut 算法由英国剑桥微软研究院 Carsten Rother&#xff0c;Vladimir Kolmogorov和Andrew Blake发明&#xff0c;并在他们的论文“GrabCut”&#xff1a;使…