概述
1、仓库的基本介绍
刚开始的时候如果不用maven来管理项目,我们就需要在每个项目中创建一个lib目录用来放项目的所有依赖,打包的时候就会将所有依赖打入jar包中。若公司有几十个,甚至上百个项目,每个项目就都需要维护一份依赖。这样一来,第一就会非常浪费空间,第二非常不方便管理:若我们需要对依赖进行升级,就需要先删掉原来的依赖,然后再放入新包。
maven的仓库就是用来用来统一管理依赖的地方。哪怕有几十个项目,但是各个项目中若存在相同的依赖,那么仓库里只会存在一份,而不会放在各个项目的lib目录中,从而消除了重复。如果过要升级某个依赖,直接在工程的pom文件里升级依赖版本即可,工程就会去自动引用最新版本的依赖。在仓库里所有依赖就放一份,然后每个工程在pom.xml里面声明对依赖的引用即可,打包的时候,就会将所有依赖打入发布包。
2、仓库的布局结构
~/.m2/repository目录,是maven的本地仓库。maven仓库的布局结构其实很简单,比如我们依赖了一个项目,它的坐标如下:
groupId:log4j
artifactId:log4j
version:1.2.15
那么这个依赖的jar包在maven仓库里的布局,就是以如下形式存在的log4j/log4j/1.2.15/log4j-1.2.15.jar,log4j/log4j/1.2.15就是目录,log4j-1.2.15.jar就是依赖对应的jar包。所以随时可以在仓库里根据坐标找到某个依赖的jar包。
所以当在pom文件中声明依赖之后,maven实际上就是根据依赖的坐标,先到本地仓库里面去根据坐标去一层一层的定位依赖所在的目录里面有没有这个jar包,就是到远程仓库里面去根据同样的布局去找依赖的jar包。
3、maven的多层次架构
maven仓库分成本地仓库和远程仓库两大类,如果声明了一个依赖,那么在构建打包的时候,先会去本地仓库里找,这个本地仓库的地址默认就在用户主目录下面的~/.m2/repository目录里。如果本地仓库找不到,那么就会去远程仓库找,默认是去maven自己的中央仓库里找,maven的中央仓库里几乎涵盖所有的依赖;然后会将中央仓库里的依赖下载下来放到本地仓库,缓存起来,供下次使用。中央仓库是属于一种远程仓库,但是不只是有中央仓库一种远程仓库
远程仓库还有私服和其他远程仓库,私服指的是在公司内部的局域网内,架设一个服务器,上面放一个公司内私有的仓库,就是私服;其他远程仓库,就是其他公司开放出来的仓库,比如java.net maven仓库,jboss maven仓库,等等。
(1)本地仓库
windows默认路径是~.m2repository,linux默认路径是/home/root/.m2/repository
可以修改本地仓库的路径,在~/.m2/settings.xml配置文件里,可以设置:
某路径
(2)远程仓库
如果本地仓库没有某个依赖,那么maven就会从远程仓库去下载,默认就是从中央仓库去下载
(3)中央仓库
maven有一个自带的超级pom.xml文件,里面配置了一个默认的中央仓库
<repositories>
<repository>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
如果不做任何配置,那么当你声明了某个依赖之后,如果本地仓库没有,就会去maven自带配置的这个中央仓库去拉取,就是http://repo1.maven.org/maven2这个地址。
(4)私服
一般公司都会自己搞一个maven私服,也就是在公司局域网内部,架设一个服务器,上面放一个maven私有仓库。因为很多公司的服务器是不允许访问外网的,只能访问局域网。
此时就是在本地配置远程仓库为私服,如果本地仓库没有,先去私服找,如果私服没有,再去中央仓库找。在中央仓库找到后,先缓存在私服中,然后再缓存在本地仓库中。
此外,架设私服,有另外一个意义,就是自己公司内部的一些发布包,可以放到私服上,供公司内的项目组之间使用。
(5)其他远程仓库
有些依赖可能在中央仓库没有,或者中央仓库的速度太慢,此时可能会用其他的一些远程仓库,比如jboss的仓库。java.net,google,codehaus,jboss,还有一些其他公司自己搞的Maven仓库,有少数的依赖包可能在中央仓库里找不到,只在其他仓库里。那么私服除了连接中央仓库,还可以连接其他远程仓库。
(6)镜像仓库
比如说,像中央仓库在国外,很慢的,直接从中央仓库下载的话,是很慢的。
所以一般国内的一些大型的互联网公司,比如阿里云,会搞一个镜像仓库,完全跟中央仓库一模一样的,代理了中央仓库所有的请求
你可以直接从阿里云镜像仓库去请求,如果有就直接返回了,国内网络的速度很快的。阿里云如果自己没有,就会去从国外的中央仓库去下载。
最后
以上就是彪壮咖啡为你收集整理的maven企业级应用(六)之私服前置知识1、仓库的基本介绍2、仓库的布局结构3、maven的多层次架构的全部内容,希望文章能够帮你解决maven企业级应用(六)之私服前置知识1、仓库的基本介绍2、仓库的布局结构3、maven的多层次架构所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复