Maven 仓库

Maven 仓库对于管理构建 Java 项目所需的依赖和插件至关重要。

Maven 仓库主要有三种类型:本地仓库、中央仓库和远程仓库。

本文将探讨每种仓库的用途以及如何有效使用它们。

Maven 仓库类型

  1. 本地仓库

    本地仓库是位于您本地机器上的一个目录,Maven 在这里存储所有下载的项目工件(库、插件等)。这有助于重用工件并避免每次构建项目时重新下载。默认情况下,Maven 在用户主目录下的 .m2 目录中创建本地仓库。

    位置
    本地仓库的默认位置是:

    ~/.m2/repository
    

    您可以通过配置 settings.xml 文件来更改这个位置,该文件位于 Maven 安装目录或 .m2 目录中。

    示例
    当您构建 Maven 项目时,pom.xml 文件中指定的依赖项如果不在本地仓库中,则会被下载到本地仓库。例如,如果您在 pom.xml 中添加以下依赖项:

    <dependencies><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version></dependency>
    </dependencies>
    

    Maven 将从中央仓库(或其他远程仓库)下载 commons-lang3-3.12.0.jar 到您的本地仓库。

  2. 中央仓库

    中央仓库是由 Maven 社区提供的默认远程仓库。它是一个广泛收集常用库和插件的集合。当 Maven 在本地仓库中找不到依赖项时,它会从中央仓库中获取。

    URL
    中央仓库的 URL 是:

    https://repo.maven.apache.org/maven2
    

    示例
    当您在 pom.xml 中添加一个依赖项且该依赖项不在本地仓库中时,Maven 会自动从中央仓库下载。例如:

    <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency>
    </dependencies>
    

    如果 junit-4.13.2.jar 不在本地仓库中,Maven 将从中央仓库中获取。

  3. 远程仓库

    远程仓库是托管在远程服务器上的自定义仓库。它们可以用于托管您自己的库、第三方库或公司内部工件,这些工件在中央仓库中不可用。您可以配置 Maven 使用远程仓库,除了中央仓库之外。

    配置
    您可以在 pom.xmlsettings.xml 文件中配置远程仓库。以下是在 pom.xml 中添加远程仓库的示例:

    <repositories><repository><id>my-remote-repo</id><url>https://my-company-repo.com/maven2</url></repository>
    </repositories>
    

    示例
    假设您有一个在中央仓库中不可用的自定义库。您可以将其托管在远程仓库中,并配置项目使用此仓库。Maven 将从指定的远程仓库下载该库。

Maven 依赖搜索顺序

当 Maven 搜索依赖项时,它遵循特定的顺序:

  1. 本地仓库:Maven 首先检查本地仓库中是否存在所需的依赖项。
  2. 中央仓库:如果依赖项在本地仓库中未找到,Maven 然后搜索中央仓库。
  3. 远程仓库:最后,如果依赖项在本地仓库和中央仓库中都未找到,Maven 将搜索任何已配置的远程仓库。

这种搜索顺序确保了构建过程的高效性,并通过首先利用本地缓存的工件避免了不必要的下载。

使用 Maven 仓库

  1. 本地仓库使用
    Maven 在所有构建中自动使用本地仓库,您无需进行特殊配置。当您运行 Maven 命令(如 mvn install)时,Maven 会将构建的工件安装到本地仓库中。

  2. 访问中央仓库
    中央仓库默认用于所有 Maven 项目,您无需显式配置。Maven 总是先检查本地仓库,然后检查中央仓库以获取任何依赖项。

  3. 配置远程仓库
    要使用远程仓库,您需要在 pom.xmlsettings.xml 中添加其配置。以下是 settings.xml 文件中的配置示例:

    <settings><profiles><profile><id>my-profile</id><repositories><repository><id>my-remote-repo</id><url>https://my-company-repo.com/maven2</url></repository></repositories></profile></profiles><activeProfiles><activeProfile>my-profile</activeProfile></activeProfiles>
    </settings>
    

    此配置告诉 Maven 在解析依赖项时使用指定的远程仓库。

总结

Maven 仓库在管理 Java 项目的依赖项中起着关键作用。

了解不同类型的仓库——本地仓库、中央仓库和远程仓库——有助于高效管理和使用项目依赖项。

本地仓库缓存依赖项,中央仓库提供广泛的常用库,而远程仓库允许托管和访问自定义或内部工件。

通过正确配置和使用这些仓库,您可以简化构建过程并确保所有必需的依赖项都可随时用于您的项目。

了解依赖项搜索顺序(本地仓库 -> 中央仓库 -> 远程仓库)进一步优化了构建过程,通过利用现有缓存的工件减少了远程请求的次数。

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

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

相关文章

分布式 Data Warebase - 构筑 AI 时代数据基石

导读&#xff1a;作者以人类世界一个信息层次模型 DIKW 为出发点&#xff0c;引出对计算机世界&#xff08;系统&#xff09;处理数据过程的介绍。接着以一个民宿平台数据架构随业务发展而不断演进的过程&#xff0c;展示了这场信息革命中&#xff0c;在具体应用场景下&#xf…

如何将Latex的文章内容快速用word+Endnote排版

1 第一步 Endnote文件是无法直接导入bib文件的。需要将reference.bib的参考文献内容&#xff0c;通过JabRef软件打开并另存为refefence.ris文件 下载JabRef软件&#xff1a;https://www.jabref.org/#download 导出为ris格式文件 2 第二步 通过Endnote导入ris文件&#xff0…

[论文阅读] 异常检测 Deep Learning for Anomaly Detection: A Review(三)总结梳理-疑点记录

《深度异常检测综述》总结梳理 目录 一、研究背景与挑战二、深度异常检测方法分类三、实验评估四、结论在这篇文章中&#xff0c;**异常检测的异构性**主要从以下几个方面来理解&#xff1a;如何理解多源数据融合的困难“学习正常性的特征表示”与“用于特征提取的深度学习”在…

网络爬虫——爬虫项目案例

本节将全面讲解如何通过实战爬虫项目解决复杂问题。结合最新技术和实际开发需求&#xff0c;案例将涵盖完整开发流程&#xff0c;包括需求分析、实现代码、优化方法和常见问题解决。力求实现高效、可扩展的爬虫项目架构&#xff0c;帮助开发者提升实战能力。 案例 1&#xff1a…

实时质检-静音检测分析流程(运维人员使用)

前言 用户在实时质检时&#xff0c;开启了主叫或被叫静音检测功能&#xff0c;但是听录音时&#xff0c;主叫或被叫明明没有任何声音&#xff0c;但是通话没有被挂断。 说明主叫或被叫的静音阈值太低&#xff0c;导致系统没有把很小的声音认定为静音&#xff1b;或者检测非静音…

MetaGPT实现多动作Agent

异步编程学习链接 智能体 LLM观察思考行动记忆 多智能体 智能体环境SOP评审路由订阅经济 教程地址 多动作的agent的本质是react&#xff0c;这包括了think&#xff08;考虑接下来该采取啥动作&#xff09;act&#xff08;采取行动&#xff09; 在MetaGPT的examples/write_…

【MySQL】MySQL数据库基础

【MySQL】MySQL数据库基础 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;MySQL&#x1f34b; &#x1f33c;文章目录&#x1f33c; 1. 数据库基础 1.1 什么是数据库 1.2 主流数据库 1.3 MySQL基本使用 1.3.1 服务器&#xff0c;数据…

进程控制(详解)

一.进程创建 1.fork函数 在linux中fork函数是⾮常重要的函数&#xff0c;它从已存在进程中创建⼀个新进程。新进程为⼦进程&#xff0c;⽽原进 程为⽗进程。 #include <unistd.h>pid_t fork(void);返回值&#xff1a;⾃进程中返回0&#xff0c;⽗进程返回⼦进程id&…

RFSOC 49dr 开发板,支持12收5发

硬件支持: 1,12收5发 2.4X25G光模块 3.J30J扩展接口 4.支持多板同步&#xff0c;多TILE同步

生产制造领域的多元化模式探索

在当今全球化和信息化的时代背景下&#xff0c;生产制造领域正经历着前所未有的变革。随着消费者需求的多样化、市场竞争的加剧以及技术的不断进步&#xff0c;传统的生产制造模式已经难以满足现代企业的需求。因此&#xff0c;多种生产制造模式应运而生&#xff0c;以适应不同…

基于YOLOv8深度学习的智慧农业果园果树苹果类果实目标检测系统(PyQt5界面+数据集+训练代码)

随着智慧农业技术的快速发展&#xff0c;果园管理逐渐向自动化和智能化方向迈进&#xff0c;传统的果园管理方式面临着高成本、效率低以及人工依赖程度大的挑战。在这种背景下&#xff0c;基于人工智能的目标检测技术为果园管理提供了一种全新的解决方案。本研究设计并实现了一…

【泥石流;风险;脆弱性;风险评估;川藏公路北线|论文解读4】川藏高速公路北线泥石流风险评估

【泥石流&#xff1b;风险&#xff1b;脆弱性&#xff1b;风险评估&#xff1b;川藏公路北线|论文解读4】川藏高速公路北线泥石流风险评估 【泥石流&#xff1b;风险&#xff1b;脆弱性&#xff1b;风险评估&#xff1b;川藏公路北线|论文解读4】川藏高速公路北线泥石流风险评…

mysql的优化

1、概念 在应用开发的初期&#xff0c;由于数据量较小&#xff0c;开发人员更重视功能上的实现&#xff0c;随着应用系统上线后&#xff0c;数据量急剧增长&#xff0c;很多性能问题逐渐显现&#xff0c;对使用的影响也越来越大&#xff0c;此时这些问题语句就称为整个系统的性…

栈的应用,力扣394.字符串解码力扣946.验证栈序列力扣429.N叉树的层序遍历力扣103.二叉树的锯齿形层序遍历

目录 力扣394.字符串解码 力扣946.验证栈序列 力扣429.N叉树的层序遍历 力扣103.二叉树的锯齿形层序遍历 力扣394.字符串解码 看见括号&#xff0c;由内而外&#xff0c;转向用栈解决。使用两个栈处理&#xff0c;一个用String,一个用Integer 遇到数字:提取数字放入到数字栈…

【Python系列】 Base64 编码:使用`base64`模块

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Mac 修改默认jdk版本

当前会话生效 这里演示将 Java 17 版本降低到 Java 8 查看已安装的 Java 版本&#xff1a; 在终端&#xff08;Terminal&#xff09;中运行以下命令&#xff0c;查看已安装的 Java 版本列表 /usr/libexec/java_home -V设置默认 Java 版本&#xff1a; 找到 Java 8 的安装路…

C++ STL - vector/list讲解及迭代器失效

vector 使用 vector 是一个动态数组. 构造/拷贝构造/赋值重载函数 int main() {// 是一个模板, 在实例化的时候, 需要指明类型std::vector<int> first; // 一个空的数组std::vector<int> second (4,100); // 设置初始空间大小为 4 个int, 全部初始化为 100std::v…

libphone desktop编译

linphone-desktop 在ubuntu20.04 下编译 linphone 介绍 Linphone是一款遵循GPL的开源网络视频电话系统&#xff0c;支持多种平台如Windows、Linux、Android等。它基于SIP协议&#xff0c;提供语音、视频通话及即时文本消息功能。核心功能包括SIP用户代理、音频视频Codec支持、…

根据已知站点寻找路网的最短路径

背景 接上期&#xff0c;基于MATSim的交通仿真&#xff0c;其中有一块非常重要的就是公交的仿真&#xff0c;这也是当初选择MATSim技术路线的一个重要原因&#xff0c;现在业务给出的场景是上传一些有序站点及其经纬度&#xff0c;需要通过算法来适配对应的路网&#xff0c;由…

Jenkins + gitee 自动触发项目拉取部署(Webhook配置)

目录 前言 Generic Webhook Trigger 插件 下载插件 ​编辑 配置WebHook 生成tocken 总结 前言 前文简单介绍了Jenkins环境搭建&#xff0c;本文主要来介绍一下如何使用 WebHook 触发自动拉取构建项目&#xff1b; Generic Webhook Trigger 插件 实现代码推送后&#xff0c;触…