1、仓库的基本介绍
不使用maven,我们只能在各种工程里建一个lib目录,里面放入这个工程的所有依赖,在打包的时候将工程打成一个胖jar,里面包含了所有依赖。
如果公司内有几十个,甚至上百个工程,那么每个工程都要维护一份依赖
- 第一非常浪费空间,
- 第二非常麻烦,每次升级某个依赖,可能要将几十个工程里的lib包下的依赖,先删除旧版本,再放入新版本。
而maven的仓库,就是用来统一存放各种依赖的地方。哪怕是有几十个工程,但是每个工程如果有相同的依赖,那么那个依赖在仓库里只会存在一次,不会放在各个工程自己的lib包下。
消除了重复,如果要升级某个依赖,直接在各个工程的pom.xml里升级依赖的版本即可,大家都会自动引用最新版本的依赖了。
在仓库里所有依赖就放一次,然后每个工程在pom.xml里面声明对依赖的引用即可,打包的时候,可以将所有依赖打入发布包即可。
2、仓库的布局结构
自己windows本地的仓库,是在~/.m2/repository目录,就是maven的本地仓库
那么依赖在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包。
所以你声明依赖之后,maven实际上就是根据依赖的坐标,先到本地仓库里面去根据坐标去一层一层的定位依赖所在的目录里面有没有这个jar包,如果没有的话,就是到远程仓