一. 什么是仓库

用来统一存储所有Maven共享构建的位置就是仓库

仓库布局:根据Maven坐标定义每个构建在仓库中唯一存储路径,大致为:groupId/artifactId/version/artifactId-version.packaging

二. 仓库的分类

2.1、本地仓库

  每个用户只有一个本地仓库,默认是在~/.m2/repository/,~代表的是用户目录。我们可以自定义本地仓库路径,建立好的仓库路径,只需要配置再setting.xml文件中的localRepository字段就好了。

2.2、远程仓库

  1、中央仓库:Maven默认的远程仓库,URL地址:http://search.maven.org/

  

可以通过如下方式查看中央仓库的地址:

打开Maven安装目录下的lib目录中的maven-model-builder-3.0.jar,解压后,查看解压文件中的pom.xml文件就可以看到:

  2、私服:是一种特殊的远程仓库,它是架设在局域网内的仓库

  

创建私服可以缓解中央仓库的压力、部署第三方构件、节约带宽等等优势。

3、别的远程仓库

三. 远程仓库的配置

在很多情况下,默认的中央仓库无法满足项目的需求,可能项目需要的构建存在于另外一个远程仓库中,比如JBoss Maven仓库。这时,可以在pom中配置该仓库,如下:

说明:在repository中配置远程仓库的地址。

(1)releases:标识开启JBoss仓库的发布版本下载支持

(2)snapshots:标识关闭JBoss仓库的快照版本的下载支持。

3.1 远程仓库的认证

大部分远程仓库无须认证就可以访问,但有时候出于安全方面的考虑,我们需要提供认证信息才能访问一些远程仓库。

配置认证信息和配置仓库信息不同,仓库信息可以直接配置在pom文件中,但是认证信息必须配置在settings.xml文件中。这时因为pom往往是被提交到代码仓库中供所有成员访问的,而settings.xml一般只放在本机。因此,在settings.xml中配置认证信息更安全。

eg: 假设需要为一个id为my-proj的仓库配置认证信息,编辑settings.xml文件如下:

说明:这里的关键元素是id,settings.xml中的server元素的id必须与pom中需要认证的repository元素的id一致。换句话说,正是这个id将认证信息与仓库配置联系在了一起。

3.2 部署至远程仓库

前面提到,私服的一大作用就是部署第三方构件,包括组织内部生成的构件以及一些无法从外部仓库直接获取的构件。无论是日常开发中生成的构件,还是正式版本发布的构件,都需要部署到仓库中,供其它团队成员使用。

Maven处理能对项目进行编译、测试、打包之外,还能将项目生成的构件部署到仓库中。

(1)首先,需要编辑项目的pom.xml文件。配置distributionManagement元素

distributionManagement包含了repositorysnapshotRepository子元素,前者表示发布版本构件的仓库,后者表示快照版本的仓库。往远程仓库部署构件的时候,往往需要认证。配置正确后,进入第二步:

(2)执行mvn clean deploy

执行了这个命令后,Maven就会将项目构建输出的构件部署到配置对应的远程仓库。如果项目当前的版本是快照版本,则部署到快照版本仓库地址;否则就部署到发布版本仓库地址。

四. 快照版本

大致了解下就行了:

五. 从仓库解析依赖的机制

六. 镜像

mirror则相当于一个代理,它会拦截去指定的远程repository下载构件的请求,然后从自己这里找出构件回送给客户端。配置mirror的目的一般是出于网速考虑。 
可以看出,internal repository和mirror是两码事。前者本身是一个repository,可以和其它repository一起提供服务,比如它可以用来提供公司内部的maven构件;而后者本身并不是repository,它只是远程repository的网络加速器。

不过,很多internal repository搭建工具往往也提供mirror服务,比如Nexus就可以让同一个URL,既用作internal repository,又使它成为所有repository的mirror。

如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。换句话说,任何一个可以从仓库Y获得的构件,都胡够从它的镜像中获取。举个例子,http://maven.net.cn/content/groups/public/ 是中央仓库http://repo1.maven.org/maven2/ 在中国的镜像,由于地理位置的因素,该镜像往往能够提供比中央仓库更快的务。因此,可以配置Maven使用该镜像来替代中央仓库。编辑settings.xml,代码如下:

<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,表示该配置为中央仓库的镜像,任何对于中央仓库的请求都会转至该镜像,用户也可以使用同样的方法配置其他仓库的镜像。另外三个元素id,name,url与一般仓库配置无异,表示该镜像仓库的唯一标识符、名称以及地址。类似地,如果该镜像需认证,也可以基于该id配置仓库认证。 
       关于镜像的一个更为常见的用法是结合私服。由于私服可以代理任何外部的公共仓库(包括中央仓库),因此,对于组织内部的Maven用户来说,使用一个私服地址就等于使用了所有需要的外部仓库,这可以将配置集中到私服,从而简化Maven本身的配置。在这种情况下,任何需要的构件都可以从私服获得,私服就是所有仓库的镜像。这时,可以配置这样的一个镜像,如例:

<settings>...<mirrors><mirror><id>internal-repository</id><name>Internal Repository Manager</name><url>http://192.168.1.100/maven2</url><mirrorOf>*</mirrorOf></mirror></mirrors>...
</settings>

该例中<mirrorOf>的值为星号,表示该配置是所有Maven仓库的镜像,任何对于远程仓库的请求都会被转至http://192.168.1.100/maven2/。如果该镜像仓库需要认证,则配置一个Id为internal-repository的<server>即可。为了满足一些复杂的需求,Maven还支持更高级的镜像配置:

  • 1.<mirrorOf>*</mirrorOf>
  • 匹配所有远程仓库。
  • 2.<mirrorOf>external:*</mirrorOf>
  • 匹配所有远程仓库,使用localhost的除外,使用file://协议的除外。也就是说,匹配所有不在本机上的远程仓库。
  • 3.<mirrorOf>repo1,repo2</mirrorOf>
  • 匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。
  • 4.<mirrorOf>*,!repo1</miiroOf>
  • 匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。

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

七. 如何在网上搜寻依赖的确切目标

介绍几种好用的搜索方式:

https://repository.sonatype.org  打开这个连接直接输入关键字,比如输入了spring context

https://mvnrepository.com/  同上-----感觉这个用起来更快捷,舒服

参考文献

《Maven实战》

https://www.cnblogs.com/xdp-gacl/p/3498271.html

https://www.cnblogs.com/sharpest/p/8011546.html

转载于:https://www.cnblogs.com/Hermioner/p/10250944.html

maven05----maven仓库相关推荐

  1. pom文件中引入常用的maven仓库

    给大家分享几个maven仓库,如果本地总是下载很慢的话可以尝试换一下仓库或者多加几个.可以直接拖放在pom.xml中使用. 阿里云仓库 <mirrors><mirror>< ...

  2. 删除maven仓库中的LastUpdated文件

    转自:https://www.oschina.net/code/snippet_151849_49131 maven仓库中的某个构件如果因为网络或者其他的原因,没有下载成功或者下载被中断,将会出现一个 ...

  3. 合并本地Maven仓库

    今天遇到一个问题,就是将一个Maven项目导入到自己的开发环境Myecplise.之前的步骤都很顺利,没有问题,但是到了最后发现pom.xml文件的第一行有一个大红叉,点击错误看,是缺少jar包,但是 ...

  4. 国内阿里Maven仓库镜像Maven配置文件Maven仓库速度快

    国内连接maven官方的仓库更新依赖库,网速一般很慢,收集一些国内快速的maven仓库镜像以备用. 最新更新:2016年11月11日 18:05:40 阿里云提供Maven私服,我把配置文件贴一下,自 ...

  5. 怎样在nexus 中 搜索到远程maven仓库中的jar 文件

    怎样在nexus 中 搜索到远程maven仓库中的jar 文件 url: http://www.oschina.net/question/95712_21999 点击Administration菜单下 ...

  6. 在内网中使用maven_搭建私有maven仓库并在项目中使用

    这是一篇写给女朋友看的教程...前方高能,注意避让~ 1.私有maven仓库的搭建 搭建环境为阿里云ESC服务器,CentOS.确保服务器已经安装Jdk.然后我要手把手教你安装和启动nexus. St ...

  7. [Android]上传到多个Maven仓库的Gradle插件RapidMavenPushPlugin

    博客搬迁至https://blog.wangjiegulu.com RSS订阅:https://blog.wangjiegulu.com/feed.xml RapidMavenPushPlugin 用 ...

  8. 【Maven学习】Nexus私服代理其他第三方的Maven仓库

    一.背景 [Maven学习]Nexus OSS私服仓库的安装和配置 http://blog.csdn.net/ouyang_peng/article/details/78793038 [Maven学习 ...

  9. 国内阿里Maven仓库镜像及自己收集镜像库

    国内阿里Maven仓库镜像Maven配置文件Maven仓库速度快 收集的仓库如下: <?xml version="1.0" encoding="UTF-8" ...

  10. [maven] settings 文件 本地maven仓库

    <?xml version="1.0" encoding="UTF-8"?><!-- Licensed to the Apache Softw ...

最新文章

  1. mysql中transaction的实现
  2. dojo在ASP.NET中使用Ajax初步
  3. 【CV项目实战】纯新手如何从零开始完成一个工业级的图像分类任务?
  4. 三维空间长度温度数量_塑料压力和温度对注塑件质量与尺寸的影响研究
  5. win10 64 + VS2010 + Opencv 2.4.9 + HIKVISION(海康)
  6. linux c 多线程socket编程,Linux多线程socket编程一些心得
  7. 解决Eclipse启动Tomcat时报Error loading WebappClassLoader错误
  8. zookeeper 原理
  9. chrome driver 获取 session_BOSS直聘招聘信息获取之使用webdriver进行爬取
  10. 《深入理解OSGi:Equinox原理、应用与最佳实践》笔记_1_运行最简单的bundlehelloworld...
  11. Ajax解决浏览器的缓存问题
  12. Windows Mac 光盘刻录软件
  13. 如何使用BitBar将几乎所有信息添加到Mac的菜单栏中
  14. 【未完成】常微分实验3.3:解 连续的初值 可微性定理
  15. 微信公众平台开发--入门了解
  16. EBS 常用模块到XLA的关联字段追溯
  17. dbunit测试dao_使用DbUnit和Anthill控制您的测试环境
  18. 微信群营销:有哪些加微信群的渠道?
  19. [程序员福利] 获取Lynda视频课程免费账户
  20. mansory自适应label高度

热门文章

  1. _java5条件阻塞Condition的应用
  2. 【线段树】HDU 3397 Sequence operation 区间合并
  3. Google 网站品质指南
  4. C语言大写字母E转小写e,C语言 大小写字母转换
  5. java 泛型 比较_java 泛型和object比较
  6. 深入Istio架构和功能--理解数据面/控制面/流量管理/安全/可观察性
  7. nginx简介--理解nginx配置/模块/openresty
  8. (16)FPGA面试题MOORE 与 MEELEY状态机
  9. java解析简历_java:解析word文档(前程无忧简历),最好有代码案例?poi或者jacob解析都可以,有jar资源,求急。感谢...
  10. 10.FreeRTOS学习笔记-中断管理