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

Maven 仓库的分类

Maven 是一个广泛使用的项目构建和依赖管理工具,在 Java 开发生态中占据重要地位。作为 Maven 的核心概念之一,仓库(Repository)扮演着至关重要的角色,用于存储项目的依赖、插件以及构建所需的各种资源。

了解 Maven 仓库的分类和用途,不仅能够帮助开发者有效管理项目依赖,还能提升构建过程的稳定性与效率。本章将系统介绍 Maven 仓库的分类,包括本地仓库、远程仓库和中央仓库,以及它们之间的协作关系。这为您在实际开发中优化依赖管理策略、提高开发效率提供坚实的理论基础。

无论您是初学者还是有经验的开发者,希望这部分内容能够为您在 Maven 的使用中提供清晰的指引。


文章目录

      • 1、Maven 的仓库分类
      • 2、本地仓库
      • 3、远程仓库


1、Maven 的仓库分类

Maven 仓库的类型一般可以分为 2 种:即本地仓库、远程仓库。

2、本地仓库

本地仓库(Local),是存在于本地的一个仓库,它用来缓存下载的依赖包。运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。

Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。默认情况下,不管 Linux 还是 Windows,每个用户在自己的用户目录下都有一个路径名为 .m2/respository/ 的仓库目录。

Maven 本地仓库默认被创建在 %USER_HOME% 目录下。要修改默认位置,可以在 %M2_HOME%\conf 目录中的 Maven 的 settings.xml 文件中定义新路径。

  <!-- interactiveMode| This will determine whether maven prompts you when it needs input. If set to false,| maven will use a sensible default value, perhaps based on some other setting, for| the parameter in question.|| Default: true<interactiveMode>true</interactiveMode>--><localRepository>~/.m2/repository</localRepository>

3、远程仓库

远程仓库(Remote),如其名字所述,其实位于远程服务器的一个仓库。它是开发人员自己定制仓库(一般公司会自己定制一个远程仓库),包含了所需要的代码库或者其他工程中用到的 .jar 文件。

Maven 的远程仓库,一般可以在项目 POM 文件的 repositories 标签中定义,或者也可以在项目 POM 文件中的 profiles/profile/repositories 标签以及 conf/setting.xml 文件中的 profiles/profile/repositories 标签中定义。

在网上其他资料中,还会提到 Maven 仓库有另一个类型 —— 中央仓库(Central),它其实是一个特殊的远程仓库。Maven 中央仓库是由 Maven 社区提供的仓库,绝大多数流行的开源 Java 构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的 Java 项目依赖的构件都可以在这里下载到。另外一个特殊之处在于,中央仓库的地址是内置在 Maven 源码中的,即默认会向中央仓库拉取依赖。

Maven 仓库的查找顺序:Local Repository > settings_profile_repo > pom_profile_repo (子) > pom_repositories (子) > parent_pom_profile_repo (父) > parent_pom_repositories (父) > settings_mirror > Central Repository

此外,Maven 中还会有一个镜像仓库的概念,它由 conf/setting.xml 文件中的 mirrors 标签定义。其相当于一个拦截器,当镜像仓库mirror/mirrorOf 值与远程仓库 repository/id 相同时,远程仓库会被拦截,转而使用镜像仓库地址地址。只有镜像仓库找不到依赖时,Maven 才会回退并访问被代理的仓库。

配置范例如下:

<!--使用私有仓库替换 Maven 默认的中央仓库 -->
<mirrors><mirror><!--镜像的唯一标识,在 mirror 标签中,其实没啥用 --><id>aliyun</id>   <!--仓库描述 --><name>xx公司私有仓库地址</name> <!--私有仓库地址,这个很重要不能错--><url>http://maven.aliyun.com/nexus/content/groups/public/</url><!--`central` 为 Maven 中央仓库的标识,替换 Maven 源码内默认的是中央仓库地址--><mirrorOf>central</mirrorOf></mirror>
</mirrors>

如上图配置所示,Maven 会用 http://maven.aliyun.com/nexus/content/groups/public/ 这个仓库镜像替换 Maven 中央仓库,其中 central 是 Maven 中央仓库的 ID 标识。我们经常说用阿里云的 Maven 仓库可以提速,其实就是使用这种方法实现的。

http://www.lryc.cn/news/519951.html

相关文章:

  • 隧道网络:为数据传输开辟安全通道
  • CentOS 7 下 Nginx 的详细安装与配置
  • JAVA 使用apache poi实现EXCEL文件的输出;apache poi实现标题行的第一个字符为红色;EXCEL设置某几个字符为别的颜色
  • 通过vba实现在PPT中添加计时器功能
  • 检验统计量与p值笔记
  • 【集成学习】Bagging、Boosting、Stacking算法详解
  • Rabbit Rocket kafka 怎么实现消息有序消费和延迟消费的
  • 【Ubuntu与Linux操作系统:五、文件与目录管理】
  • 32_Redis分片集群原理
  • 微信小程序mp3音频播放组件,仅需传入url即可
  • Sql 创建用户
  • 数据结构:LinkedList与链表—面试题(三)
  • 【开发日记】Docker修改国内镜像源
  • Elasticsarch:使用全文搜索在 ES|QL 中进行过滤 - 8.17
  • 第432场周赛:跳过交替单元格的之字形遍历、机器人可以获得的最大金币数、图的最大边权的最小值、统计 K 次操作以内得到非递减子数组的数目
  • RK3399开发板Linux实时性改造
  • 青少年编程与数学 02-006 前端开发框架VUE 22课题、状态管理
  • Linux 内核中的 netif_start_queue 函数:启动网络接口发送队列的关键
  • 数据结构之顺序结构二叉树(超详解)
  • acwing_5722_十滴水
  • acwing-3194 最大的矩形
  • UnityDemo-TheBrave-制作笔记
  • 玩转 JMeter:Random Order Controller让测试“乱”出花样
  • VTK知识学习(33)-交互问题2
  • Centos9-SSH免密登录配置-修改22端口-关闭密码登录-提高安全性
  • SqlServer: An expression services limit has been reached异常处理
  • CentOS下安装Docker
  • WPF控件Grid的布局和C1FlexGrid的多选应用
  • Jenkins-持续集成、交付、构建、部署、测试
  • 高级第一次作业