maven repository

mvn配置中repository和mirror的区别 平时在配置mvn仓库地址的时候,总是会百度一下,有时候文章让用repository配置,有时候用mirror,配置起来都能用,于是就不怎么在意他们的区别。实际在 Maven 中,mirror和repository是两个相关但有不同用途的配置项。理解它们的区别有助于有效地管理 Maven 项目中的依赖项。repository: 项目中直接使用的仓库配置,指定下载依赖项的具体地址。mirror: 用于重定向对某个或某些仓库的访问,通常在全局配置中使用,用来优化和控制依赖项的下载路径。 阅读详情

maven repository

 2016-10-19 |   Visit count

保存构件的地方即为repository(仓库)。

仓库的分类

maven仓库分为两类:本地仓库和远程仓库。

当maven根据pom中定义的坐标寻找构件时,首先在本地仓库中寻找,当找不到时再从远程仓库寻找,都找不到时抛出异常。

maven远程仓库还可进一步分类:

16184712-file_1487994665746_7075.png

本地仓库

默认maven会在c盘创建一个.m2的本地仓库,如果要修改本地仓库地址,可以修改setting.xml文件:

1
2
3
<settings>
    <localRepository>D:\64\m2\repository</localRepository>
</settings>

远程仓库

中央仓库

使用解压软件打开%M2_HOME%/lib/maven-model-builder-3.1.1.jar,然后访问路径org/apache/maven/model/pom-4.0.0.xml,可看到:

1
2
3
4
5
6
7
8
9
10
11
<repositories>
    <repository>
        <id>central</id>
        <name>Central Repository</name>
        <url>http://repo.maven.apache.org/maven2</url>
        <layout>default</layout>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

包含这段配置的文件是所有maven项目都会继承的超级pom。上述配置中,snapshots子元素enabled的值为false,表示不从中央仓库下载快照版本的构件。

私服

私服是一种特殊的远程仓库,架设于局域网内。当maven需要下载构件时,先从私服寻找,私服中没有再从外部仓库下载。

私服有许多显著的优点:

■ 节省外网带宽

■ 加速maven构件

■ 部署第三方构件

■ 提高稳定性,增强控制

■ 降低中央仓库的负荷

远程仓库配置

如果默认的远程中央仓库无法满足需求,我们可以在pom中添加远程仓库的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<project>
    ...
    <repositories>
        <repository>
            <id>jboss</id>
            <name>JBoss Repository</name>
            <url>http://repository.jboss.com/maven2/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <layout>default</layout>
        </repository>
    </repositories>
</project>

在repositories元素下,使用repository元素声明一个或多个远程仓库。上面的xml声明了一个id为jboss,名称为JBoss Repository的仓库。

任何一个仓库的id是唯一的,maven自带的中央仓库使用的id为central,如果其他仓库的id也为central,那么它将覆盖自带的中央仓库。

url指向仓库地址,一般该地址都是基于http协议。releases的enabled值为true,表示开启JBoss仓库的发布版本下载支持,snapshots的enabled值为false,表示关闭JBoss仓库的快照版本的下载支持。

release和snapshots元素还可以配置另外两个子元素:

1
2
3
4
5
<snapshots>
    <enabled>true</enabled>
    <updatePolicy>daily</updatePolicy>
    <checksumPolicy>ignore</checksumPolicy>
</snapshots>

updatePolicy元素配置maven从远程仓库检查更新的频率,默认值为daily。其他可用值有:never —— 从不检查更新,always —— 每次构建都检查更新,interval:X —— 每隔X分钟检查一次更新。用户也可以使用命令 mvn clean install -U强制更新。

checksumPolicy元素用来配置当下载构件时,maven检验和验证失败时候的动作,默认为warn,即输出警告信息,ignore则为忽略错误。

远程仓库认证

如果远程仓库出于安全的考虑设置了用户名和密码,这时候我们必须在settings.xml中配置:

1
2
3
4
5
6
7
8
9
10
<settings>
    ...
    <servers>
        <server>
            <id>my-proj</id>
            <username>repo-user</username>
            <password>repo_pwd</password>
        </server>
    </servers>
</settings>

上述xml指定了id为my-proj的远程仓库的用户名和密码。

部署至远程仓库

如前所述,私服一大作用是可以部署第三方构件。无论是开发中生成的构件还是正式发布的构件,都需要部署到私服中供小组中的其他开发人员使用,在maven项目pom中配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<project>
    ...
    <distributionManagement>
        <snapshotRepository>
            <id>user-snapshot</id>
            <name>User Porject Snapshot</name>
            <url>http://192.168.10.217:8081/nexus/
                    content/repositories/snapshots/</url>
            <uniqueVersion>true</uniqueVersion>
        </snapshotRepository>
        <repository>
            <id>user-release</id>
            <name>User Porject Release</name>
            <url>http://192.168.10.217:8081/nexus/
                    content/repositories/releases/</url>
        </repository>
    </distributionManagement>
</project>

上述xml明确指定了快照版本和发行版本的私服id和地址,如前所述,如果私服设置了账号密码,则应该在settings.xml中设置对应id的私服账号和密码,就本例来说,我们应该在settings.xml中设置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<settings>
    <servers>
        <server>
            <id>user-release</id>
            <username>deployment</username>
            <password>deployment123</password>
        </server>
        <server>
            <id>user-snapshot</id>
            <username>deployment</username>
            <password>deployment123</password>
        </server>
    </servers>
</settings>

配置正确后,可以运行命令mvn clean deploy将项目构建输出的构件部署到对应的远程仓库。

快照版本

版本元素version中添加SNAPSHOT标识,表明该构件为快照版本。SNAPSHOT版本的构件发布到私服的过程中,maven会自动加上时间戳。另一位开发者从该私服获取这个构件的时候,maven会自动获取时间戳最新的构件。

快照版本只应该在组织内部依赖使用,项目不应该依赖于任何组织外部的快照版本依赖。因为快照版本的不稳定性会对项目造成潜在的危险。

镜像

如果仓库B可以提供仓库A存储的所有内容,那么就可以认为B是A的一个镜像。maven默认的远程中央仓库由于服务器不在中国,所以访问速度可能会慢些,这时候可以再settings.xml中配置一个镜像:

1
2
3
4
5
6
7
8
9
10
11
<settings>
    ...
    <mirrors>
        <mirror>
            <id>maven.net.cn</id>
            <name>one of the central mirrors in china</name>
            <url>http://maven.net.cn/content/groups/public</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>
</settings>

<mirrorOf>的值为central,表示该配置为中央仓库的镜像。任何对于中央仓库的请求都会本转至该镜像。

镜像常用于私服。由于私服可以代理任何外部的公共仓库,所以可以说私服就是所有仓库的镜像。如:

1
2
3
4
5
6
7
8
9
10
<settings>
    ...
    <mirrors>
        <mirror>
            <id>nexus</id>
            <mirrorOf>*</mirrorOf>
            <url>http://192.168.10.217:8081/nexus/content/groups/public/</url>
        </mirror> 
  </mirrors>
</settings>

<mirrorOf>的值为*号,表示http://192.168.10.217:8081/nexus/content/groups/public/是所有外部仓库的镜像。任何对远程仓库的请求都会被转到这个地址。

<mirrorOf>的配置:

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

■ <mirrorOf>external:*<mirrorOf>:匹配所有不在本机上的远程仓库

■ <mirrorOf>repo1,repo2<mirrorOf>:匹配仓库repo1和repo2

■ <mirrorOf>*,!repo1<mirrorOf>:匹配除了repo1之外的所有远程仓库

镜像仓库完全屏蔽了被镜像仓库,当镜像仓库停止服务的时候,maven仍无法访问被镜像仓库,因而将无法下载构建。

仓库搜索服务

下面列出几个目前能用的maven坐标服务:

1.The Centrl Repository:Maven Central Repository Search

12271665-file_1487994710522_16de0.png

2.Maven Repository:http://www.mvnrepository.com/

7463955-file_1487994731601_75b0.png

3.Nexus Repository Manager:Nexus Repository Manager

outputImagefileId58e65bffab6441770f003cf9.png

《Maven实战》读书笔记

maven中mirror镜像和repository仓库配置 maven 中 mirror repository的关系,正确配置,mirorOf的正确配置 阅读详情

相关推荐

maven-repository仓库

maven仓库所需要的jar包,包含完整的内容,可以去看一下简绍(https://blog.youkuaiyun.com/Fly_tom/article/details/81874197),由于csdn网站上传文件的限制,这个只是一部分,另一部分:https://download.youkuaiyun.com/download/fly_tom/10615977

Maven Repository(官网打开太慢或者崩溃的话,不妨试试这个)

官网每次打开都太慢了,我还是保存到博客方便点。Apache Commons DBCP,Apache Log4j,Apache Log4j Core,C3P0,Java Servlet API,JSTL,JUnit,MyBatis,MySQL Connector/J,Project Lombok,P6Spy,Spring Web MVC

wowpH 20万+

Arco Design Pro PC端商家后台框架 | Axure高保真原型库

摘要:本Axure原型设计方案基于字节跳动ArcoDesignPro规范,提供企业级后台快速搭建方案。包含动态表格、表单验证等核心组件,采用中继器驱动设计,支持响应式布局。方案覆盖80%后台常用交互,可节省60%原型制作时间,配套完整设计文档和组件库,实现原型到开发的高效衔接。特别适用于电商、SaaS等后台系统开发,支持权限管理、数据分析等场景,显著提升团队协作效率。

招风的黑耳优快云 3970

Maven - Repository(存储库)

章节Maven – 简介 Maven – 工作原理 Maven – Repository(存储库) Maven – pom.xml 文件 Maven – 依赖管理 Maven – 构建生命周期、阶段、目标 Maven – profile Maven – 插件 Maven – web 实例 Maven – Eclipse例子 Maven Repository/存储库,顾名思义是一个存储JAR文...

吴吃辣 6万+

RS485信号测量避坑指南:示波器抓包常见问题与波形分析技巧

本文详细解析了RS485信号测量中的常见问题与解决方案,包括差分信号测量基础、终端电阻配置、共模干扰处理等关键技巧。通过实测波形案例和优化建议,帮助工程师有效提升RS485通信的可靠性和抗干扰能力,适用于工业自动化、远程监测等场景。

kappa的博客 614

基于DFT的scanshift sdc模板(DFT)

摘要:本文详细介绍了DFT测试模式下的SDC约束方法。

murphyrong的博客 882

maven仓库地址https://mvnrepository.com/

maven仓库地址

ibigboy 8万+

PaddleOCR PP-OCRv5实战:5分钟搞定身份证信息提取(附完整代码)

本文详细介绍了如何利用PaddleOCR的PP-OCRv5模型,在5分钟内快速搭建身份证信息提取流程。文章从环境搭建、核心代码实战出发,深入解析了PP-OCRv5针对证件识别的优化特性,并提供了从OCR结果到结构化数据的完整处理方案与避坑指南,帮助开发者高效实现AI驱动的自动化信息提取。

salt9的博客 782

Maven:repositories、distributionManagement、pluginRepositories中repository的区别

repositories、distributionManagement、pluginRepositories中repository的区别.

netyeaxi的专栏 1万+

初学者入门YOLO目标检测:从懵圈到上手,这篇文章讲透所有核心(附学习路径+避坑指南)

目标:比如训练一个“检测苹果和橘子”的模型,或者“检测人脸”的模型;任务:学会用LabelImg标注数据,制作YOLO格式的数据集,用命令行训练模型;关键:不用追求高精度,能训练出一个能检测出目标的模型就行。很多初学者卡在入门阶段,不是因为智商不够,而是因为“想太多,做太少”——总觉得要把所有原理搞懂才能动手,结果越想越怕,最后放弃。先动手,再动脑。先跑通一个案例,获得成就感;再制作自定义数据集,训练简单模型;最后再回头去理解原理,优化模型。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 688

MATLAB应用实战系列(七十七)-基于长时间序列栅格数据的MK检验

1 MK检验介绍 MK检验是曼-肯德尔法,又称Mann—Kenddall 检验法,是一种气候诊断与预测技术,应用Mann-Kendall检验法可以判断气候序列中是否存在气候突变,如果存在,可确定出突变发生的时间。Mann-Kendall检验法也经常用于气候变化影响下的降水、干旱频次趋势检测。目前常用于长时间序列的栅格数据的显著性检验,在植被覆盖度,NDVI,NPP等方面尤为常见。 该检验功能强大,不需要样本遵从一定的分布,部分数据缺失不会对结果造成影响,不受少数异常值的干扰,适用性强。不但可以检验时

wenyusuran的专栏 6289

maven repository的官方网址

地址如下:

ynztlan的博客 2328

Unity3D实现视频和模型融合效果

在Unity中,视频和3D模型融合通常涉及到将视频表面内嵌到3D场景中。视频不影响模型的展示, 这可以通过使用Shader和Texture来实现。大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。下面就让我们进入正文吧!提示:以下是本篇文章正文内容,下面案例可供参考本次介绍的就是视频和模型融合的实现,以后有其他的需要添加的会继续添加不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒。

心疼你的一切博客 5357

Maven:mirror和repository 区别

Maven:mirror和repository 区别一、为什么不理解这两者的区别?二、具体原理是怎么样的? 一、为什么不理解这两者的区别? # 授之以鱼,不如授之以渔。# 很多时候我们不懂陌生的东西,主要还是对这两者本身的功能属性不了解,才会出现根本看不懂区别在哪,所以问题需要看本质。可以从以下几个步骤入手: (1)字面意思, mirror:镜像,我们开发过程中见到非常多镜像场景,比如经常会看到国外的一些网站访问很慢,我们回去清华或者阿里之类的镜像网站去下载对应资源,到这里应该就比较好理解了。 reposi

Leedsh的博客 4803

【二】MADDPG多智能体算法实现(parl)【追逐游戏复现】

论文全称:Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments 论文原文:https://download.youkuaiyun.com/download/sinat_39620217/16203960 论文翻译:https://blog.youkuaiyun.com/qiusuoxiaozi/article/details/79066612 ...

丨汀、的博客 2万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

maven-repository文件

maven-repository文件repository是什么:关于repository的路径 repository是什么: repository是maven在本地的jar包库,项目中依赖的jar文件都是网上下载下来,放在本地库(repository 就是这个仓库)。今后,项目需要使用某个jar,如果本地库已经有了,maven就不会从网络下载了。 关于repository的路径 如果你用的win7以上系统,会在C盘你自己的用户下面有一个.m2文件夹,里面有一个settings.xml,这个就是你maven

qq_55342245的博客 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

修改maven的repository路径

maven的repository默认在C盘的C:\Users\***\.m2路径下,但是放在C盘下可能会有后遗症,所以大多数人选择将其放至别的盘符下. 1.找到C:\Users\14323\.m2下的settings.xml打开它 2.将第五行localRepository的路径改为你想存放的路径即可 3.第六行是阿里云的镜像.因为maven是国外的服务器,慢,添加阿里云的镜像会快很多...

我想起个名字的博客 2465

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Nexus Repository搭建maven远程仓库

本文详细介绍了在Windows Server上使用Nexus Repository Manager搭建Maven远程仓库的完整流程。主要内容包括:1)安装前的Java环境准备和Nexus下载;2)Nexus的安装配置、服务启动及Web界面访问;3)创建Maven仓库、用户账号及权限管理;4)本地Maven的settings.xml配置和IDEA中pom.xml的部署设置;5)常见问题处理如端口修改、权限配置等。通过清晰的步骤说明和配置示例,帮助用户快速搭建企业级Maven仓库,实现依赖的统一管理和高效构建。

weixin_47425074的博客 853

Maven中GeoTools的引入 - Maven 的 repository 与 mirror

在Maven中引入GeoTools时找不到jar包,搜索了蛮久才明白是自己maven没有学明白,于是从学了一次maven,解决了这个问题。关键在于理解maven中仓库(repository)与镜像(mirror)的关系与使用。

Sky_Tree_Delivery的博客 2万+

【Maven】Maven解决Maven Repository 没有

1、一个老项目改造使用Maven作为项目的构建工具,有些jar在Maven Repository 怎么处理 安装第三方jar包本地的Repository里面(smslib 一个第三方的sms SDK包) mvn install:install-file -Dfile=smslib-3.5.0.jar -DgroupId=smslib -DartifactId=smslib -Dversion=

Draco 1万+

maven之repository和mirror

1.pom.xml里的repositories元素,里面可以包含多少repository(至少默认包含了中央仓库,   该仓库总是在effective-pom里repositories元素的最后一个子元素),   每个repository都有一个id(此id非常重要)。 2.maven获取真正起作用的repository集合流程:      首先会获取pom.xml里的repository

wuhelang90的博客 3293

如何发布自己的项目到Maven Central Repository?

最近在看 Spring。依托Spring Framework写了一个轻量级的 ORM 框架,但是想把他上传到 Maven central repository,其他人引入 pom 文件就可以使用了。查看了一下网上的资料,发现大部分资料都是旧版通过 OSSRH 发布的教程比较麻烦,而且从 2024 年 3 月 12 日起,maven central reository 可以通过 Central Portal(中央门户)发布操作相对来说比较简单。

学员悟空的博客 1457

Maven项目中, mirror 与 repository 的优先级

在使用 Maven 进行构建时,你可能遇到这样的问题: > 项目中的 `pom.xml` 明明已经配置了自定义 `<repository>`,但最终下载依赖时却**没有走项目配置的地址**,而是走了你本地 `settings.xml` 中配置的 mirror。为什么? 这其实是 Maven 的一个**机制性行为**,也是很多人第一次接触 Maven 私服时容易踩的坑。

常备不懈 1334

maven repository pom

场景: 如果maven setting.xml 中没指定国内的镜像 可以通过在项目中的pom中指定 指定repository : <properties> <java.version>1.8</java.version> </properties> <repositories> ...

weixin_30537391的博客 754

Maven:distributionManagement、repository、mirror的使用说明

distributionManagement、repository、mirror的使用说明

netyeaxi的专栏 1732
上一篇: Spring Bean生命周期
下一篇: maven坐标与依赖
海深不见鲸
博客等级 码龄6年 7粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值