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

Maven:mirror和repository 区别、pom.xml 指定仓库地址、releases 和 snapshots 区别

文章目录

      • 一、Maven:mirror 和 repository 区别
        • 1、Repository(仓库)
          • 1.1 Maven 仓库主要有2种
          • 1.2 Remote Repository主要有3种
          • 1.3 maven仓库的优先级顺序
        • 2、Mirror
          • 2.1 没有配置mirror
          • 2.2 配置mirror
          • 2.3 <mirrorOf><mirrorOf>
        • 3、Repository 与 Mirror
          • 3.1 定义
          • 3.2 目的
          • 3.3 注意
        • 4、私服
      • 二、pom.xml 指定仓库地址
      • 三、releases 和 snapshots

一、Maven:mirror 和 repository 区别

1、Repository(仓库)

在这里插入图片描述

1.1 Maven 仓库主要有2种
  • remote repository:相当于公共的仓库,大家都能访问到,一般可以用 URL 的形式访问

  • local repository:存放在本地磁盘的一个文件夹,例如,windows 上默认是 C:\Users\{用户名}\.m2\repository目录

1.2 Remote Repository主要有3种
  • 中央仓库:http://repo1.maven.org/maven2/

  • 私服:内网自建的 maven repository,其URL是一个内部网址

  • 其他公共仓库:其他可以互联网公共访问 maven repository,例如 jboss repository 等

repository 里存放的都是各种 jar 包和 mave n插件。

当向仓库请求插件或依赖的时候,会先检查 local repository,如果 local repository 有则直接返回,否则会向 remote repository 请求,并缓存到 local repository。

也可以把做的东西放到本地仓库,仅供本地使用;或上传到远程仓库,供大家使用。

1.3 maven仓库的优先级顺序

https://my.oschina.net/sunchp/blog/3114228

2、Mirror

mirror相当于一个拦截器,它会拦截 maven 对 remote repository 的相关请求,把请求里的 remote repository 地址,重定向到 mirror 里配置的地址。

2.1 没有配置mirror

在这里插入图片描述

2.2 配置mirror

在这里插入图片描述

此时,B Repository被称为A Repository的镜像。

如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。换句话说,任何一个可以从仓库Y获得的构件,都胡够从它的镜像中获取。

2.3 <mirrorOf><mirrorOf>

<mirrorOf></mirrorOf> 标签里面放置的是要被镜像的 Repository ID。为了满足一些复杂的需求,Maven 还支持更高级的镜像配置:

<mirrorOf>*</mirrorOf> :匹配所有远程仓库

<mirrorOf>repo1,repo2</mirrorOf>:匹配仓库 repo1 和 repo2,使用逗号分隔多个远程仓库。

<mirrorOf>*,!repo1</miiroOf>: 匹配所有远程仓库,repo1 除外,使用感叹号将仓库从匹配中排除。

3、Repository 与 Mirror
3.1 定义

其实,mirror 表示的是两个 Repository 之间的关系,在 maven 配置文件(setting.xml )里配置了<mirrors><mirror>..........</mirror></mirrors>,即定义了两个 Repository 之间的镜像关系。

3.2 目的

配置两个 Repository 之间的镜像关系,一般是出于访问速度和下载速度考虑。

例如, 有一个项目,需要在公司和住所都编码,并在项目 pom.xml 配置了A Maven 库。

  • 在公司,是电信网络,访问 A 库很快,所以 maven 管理依赖和插件都从 A 库下载;
  • 在住所,是网通网络,访问A库很慢,但是访问B库很快。

这时,在住所的 setting.xml 里,只要配置一下<mirrors><mirror>....</mirror></mirrors>,让 B 库成为 A 库的 mirror,即可不用更改项目 pom.xml 里对于 A 库的相关配置。

如果该镜像仓库需要认证,则配置 setting.xml 中的 <server></server> 即可。

3.3 注意

需要注意的是,由于镜像仓库完全屏蔽了被镜像仓库,当镜像仓库不稳定或者停止服务的时候, Maven 仍将无法访问被镜像仓库,因而将无法下载构件。

4、私服

私服是一种特殊的远程 Maven 仓库,它是架设在局域网内的仓库服务,私服一般被配置为互联网远程仓库的镜像,供局域网内的 Maven 用户使用。

当 Maven 需要下载构件的时候,先向私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,同时缓存在私服之上,然后为 Maven 下载请求提供下载服务,另外,对于自定义或第三方的jar可以从本地上传到私服,供局域网内其他 maven 用户使用。

优点主要有:
①、节省外网宽带 ②、加速Maven构建、③、部署第三方构件、
④、提高稳定性、增强控制:原因是外网不稳定
⑤、降低中央仓库的负荷:原因是中央仓库访问量太大

在这里插入图片描述

PS:Maven仓库示意图

在这里插入图片描述

二、pom.xml 指定仓库地址

有的时候需要的仓库在 maven setting.xml 没有配置,用的很少,不想在 setting.xml 中配置,那么可以直接配置在 pom.xml 文件中,如下配置

    <repositories><repository><repository><id>activiti-repos</id><name>Activiti Repository</name><url>https://maven.alfresco.com/nexus/content/groups/public</url></repository><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>aliyun-plugin</id><url>https://maven.aliyun.com/repository/public</url></pluginRepository></pluginRepositories>

三、releases 和 snapshots

在 pom.xml 中,经常会看到代码仓库中的某些项目版本以 release 或 snapshots 结尾

开发标准:snapshots 版本代表正在开发中的版本,release 代表比较稳定的发布版本.

对于上面的 <repositories></repositories> releases=true、snapshots=false,表示只会去仓库查找稳定版本,不回去查找开发中的版本

http://www.xdnf.cn/news/846847.html

相关文章:

  • 数据要素全流程解析
  • 信息系统项目管理
  • Go编程基础教程:Go网络安全
  • 【kubernetes详解13】-DashBoard部署
  • 网络安全CTF系列培训教程之Web篇-burpsuite爆破弱密码
  • 新建vm 配置环境
  • Spring Cloud 简介
  • k8s集群的pod理论详解
  • Python爬虫详细教程,从零基础入门到精通,看完这一篇就够了!
  • 【机器学习】机器学习是什么?
  • MyBatis-Plus详解
  • Kali 2023年最新版下载安装最全流程功能介绍(内附安装包)
  • 全站最全Tampermonkey 油猴插件指南,不看后悔一辈子
  • Mysql的安装和配置教程(超详细图文)从零基础入门到精通,看完这一篇就够了
  • SQL cast()函数
  • select简单使用
  • Unity移动应用如何在Bugly上查看崩溃堆栈
  • 【Python】【进阶篇】四、Python爬虫的URL编码/解码
  • ASCII码表完整版
  • Postman下载安装教程
  • XML简介及举例
  • 阿里图标库使用(Unicode)展示图标
  • pip基本使用
  • Linux基本指令(超详版)
  • Three.js学习1:threejs简介及文档本地部署
  • vscode使用git上传提交代码、比较代码(git基本操作)
  • 【雕爷学编程】Arduino智慧农业之精确控制温度、湿度和光照
  • Git的下载、安装与使用(Windows)
  • flex布局
  • 前端插件swiper基础使用详解含部分常用API