第五章 maven核心概念-仓库

什么是仓库?

仓库首先是一个地方,其次,仓库是用于保管东西的。同理,maven仓库也是一个地方,也是用于保管东西的。那么,maven的仓库在哪里,保管的又是什么?

maven仓库保管的是许许多多的构件,就是我们所说的第三方jar,比如junit,spring的jar等,而仓库根据其分类的不同,其所在位置也不同。

maven仓库的分类



 本地仓库

顾名思义,它是在我们的本地磁盘上,即本地磁盘的某个目录,我们之前安装maven的时候配置过本地仓库的路径,在$M2_HOME/conf/settings.xml的<localRepository>D:\mvnRepository</localRepository>中指定。它对应磁盘上的一个目录,找到这个目录,可以看到,maven是按照一定的规则管理这些依赖,基本规则如下:groupId / artifactId / version / artifactId-version.packaging,然后按照路径创建相应的目录,这成为maven仓库的布局;

远程仓库

顾名思义,它位于远端,根据位置的不同,又分为中央仓库、私服、镜像仓库。

中央仓库:

中央仓库是maven内置的,最大的仓库,可以理解为大boss;默认情况下,我们在新建完maven项目后,第一次运行时,控制台可以看到maven在下载东西,整个过程可能会相当慢,就是因为maven去中央仓库现在需要的构建,而中央仓库位于国外,由于网络等原因,整个下载过程会相当慢;

私服:私服是一种代理技术的运用,由于从中央仓库下载构件比较慢,我们可以通过访问私服,让私服去中央仓库下载,私服下载到构件后会缓存,这样后续的请求就可以直接将缓存的构件返回,无需在下载,私服一般是搭建在公司或组织内部局域网中,因此,速度、稳定性都会有提升;

镜像仓库:

镜像仓库的作用类似于拦截器的概念,比如我们原本是请求某个仓库下载构件的,我们可以通过镜像的方式,将这些请求转交到其他仓库,这样maven就会从其他仓库下载构件。

中央仓库是maven内置的,我们无需配置

私服或者是其他远程仓库使用如下方式配置:

在项目的pom文件中,添加以下配置:

<repositories>
    <repository>
        <id>nexus</id>
        <name>Team Nexus Repository</name>
        <url>http://10.80.6.34:8081/nexus/content/groups/public</url>
    </repository>
</repositories>

 通过repository元素配置一个仓库,一个仓库包括id、name、url,不同的仓库,id不能冲突,url指示仓库的网络地址

镜像仓库的配置:

镜像仓库的配置在maven的settings.xml中


 通过mirror元素,配置镜像仓库的地址,其中,mirrorOf元素配置你要对哪个仓库镜像,如上,配置的镜像仓库是阿里云的仓库,central代表中央仓库,意味着原本对中央仓库的请求,现在都转交到阿里云仓库。

仓库解析依赖的机制


 maven首先在本地仓库中寻找依赖,本地没有的话,会从远程仓库寻找,如果我们配置了其他仓库或者是私服,会先从这些仓库寻找,如果没找到,则从中央仓库寻找,期间,如果配置了镜像,则从相应的镜像仓库寻找依赖。

猜你喜欢

转载自ywu.iteye.com/blog/2345425