maven 仓库

我们来看看maven提供的仓库路由图

从图中可以看出来maven仓库有多种,包括本地仓库、自定义仓库(私服)、远程仓库

它路由的基本流程:本地仓库-->私服仓库(如果有)-->远程仓库


maven 仓库_第1张图片


1)本地仓库

本地仓库:默认情况下,每个用户在自己的用户目录下都有一个路径名为~/.m2/repository/的仓库目录。用户也可以编辑.m2/settings.xml文件,设置localRepository元素的值为自己本地仓库地址,如:
<settings>
   <localRepository>D:\java\repository\</localRepository>
</settings>
要注意的是,默认情况下,.~/.m2/settings.xml文件是不存在的,用户需要从maven安装目录M2_HOME/conf/settings.xml文件在进行编辑。
当然,用户还可以选择配置M2_HOME/conf/settings.xml的全局配置文件,但是不建议这么做,因为这个配置是针对整个机器而已,而.m2/settings.xml是针对当前用户,如果确实需要统一系统中所有用户,那选择全局的settings.xml

2)中央仓库

由于最原始的本地仓库是空的,Maven必须知道至少一个可用的远程仓库,才能在执行maven命令的时候下载需要的构建与依赖。中央仓库就是这样一个默认的仓库,安装maven的时候自带了中央仓库的配置。中央仓库包含这个世界上绝大多数流行的开源java构建,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,一个简单的maven项目所需要的依赖构建都能从中央仓库下载到。

3)私服仓库

私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,提供局域网内的maven用户使用。当maven需要下载构建的时候,它从私服请求,如果私服上不存在该构建,则从外部的远程仓库下载,缓存在私服上之后,再为maven的下载提供请求服务。并且,一些无法从外部仓库下载到的构建也能从本地上传到私服上供大家使用。

大家可以从私服的结构图中看出,私服的相当于一个仓库托管所,保存着远程仓库与局域网内的构建

maven 仓库_第2张图片

建立私服的优势

1)节省自己的外网带宽:建立私服同样可以减少组织自己的开支,大量的对于外部仓库的重复请求会消耗很大的带宽,利用私服代理外部仓库之后,对外的重负构建下载便得以消除。
2)加速maven构建:不停的连接请求外部仓库是十分耗时的,但是maven的一些内部机制(如快照更新检查)要求maven在执行构建的时候不停的检查远程仓库数据。因此,当项目配置了很多外部仓库的时候,构建的速度会被大大降低。使用私服时,只要检查局域网内私服的数据时,构建的速度便能得到很大程度的提高。
3)部署第三方架构:当某个构建无法从任何一个外部仓库获得,比如组织内部生产的私有构建,或者由于版权因素不能发布到公共仓库中。建立私服后,便可以将这些构建部署到内部仓库,供内部使用。
4)提供稳定性,增强控制:maven构建高度依赖远程仓库,因此,当internet不稳定的时候,maven构建也会变得不稳定,甚至无法构建。使用私服后,即使暂时没有internet连接,由于私服中已经缓存了大量构建,maven也仍可以正常运行。此外,一些私服软件(如Nexus)还提供了很多额外功能,如权限管理、SNAPSHOT区分等,管理员可以对仓库进行一些高级控制。

你可能感兴趣的:(maven 仓库)