Maven仓库
上一篇讲了maven仓库的好处和maven仓库的布局。这次就来好好将一下maven仓库。讲一下maven仓库的分类、各自的作用及一些配置。
Maven仓库的分类
了解maven仓库,是我们在使用maven仓库的必备知识。大致分为:本地仓库和远程仓库。理解起来很简单,本地仓库就是部署在我们本地电脑上的,远程仓库就是专门的服务器来部署。作用方面:本地仓库就是我们项目直接引用的一些构件都放在其中(其实就是一个文件夹)。远程仓库,就是面向与互联网的,大家都可以访问,也可以上传自己的构件,但是得通过认证,不然管理这些仓库的人肯定受不了。当然远程仓库又分为:中央仓库,私服。看图:
本地仓库
maven项目是一般是不存在lib文件夹的,依赖构件都放在本地仓库中,进行统一管理。我们的项目需要使用依赖文件的时候,它就会通过坐标去仓库中寻找使用本地仓库的依赖。
但是它究竟放在哪里呢?这里分为两种情况:
第一种情况:我们没有进行配置maven的配置文件(也就是settings.xml 文件)它是我们计算机的用户目录下有一个 .m2\repository 的目录下。
看一下我们默认的本地仓库,这个我们在安装maven的时候就会自动创建。
第二种情况:我们当然不希望依赖放在C盘(系统盘),大多数情况下,我甚至都不往系统盘装任何软件,当然有时候在所难免。但是这些依赖还是可以进行操作的。首先打开maven的配置文件,找到了本地仓库的配置部分(localRespository)
从这里可以看出,默认的地址是 ${user.home}/.m2/repository 。{ }中内容的是指的我们电脑的本地变量。回归正题,我们需要自定义本地仓库的路径只需要在< localRepository > 中写上我们想要放在位置的路径即可。
<localRepository>D:\apache-maven-3.6.1-bin\maven</localRepository>
远程仓库
远程仓库分为两种:中央仓库,私服。什么是中央仓库呢?就是直接放在互联网上的,供大家都可以去下载使用。私服,就是我们自己在局域网内架设的一个服务器,只供我们自己来使用。理解起来也很简单吧,市面上有专门的maven仓库的搭建方式。
中央仓库
所谓的中央仓库,可以理解为就是放在互联网上的仓库。最出名的就是:https://mvnrepository.com/ 当然不止这一个。
查看maven的配置文件
由于原始的本地仓库是空的,Maven必须要知道至少一个可用的远程仓库,才能在执行Maven命令的时候下载需要的构件。(至少一个,表示可以配置多个哦!,配置多个当备份呗。)
- < id > 表示当前中央仓库的ID,这个我们可以随便起,配置镜像的时候会用到(后续会讲)。但是需要注意的是要唯一。
- < name > 就是我们中央仓库的名字,这个也可以随便起。
- < url > 是我们中央仓库的IP地址,复制一下就好了。
- < layout > 我们要根据仓库的布局方式进行配置,我个人认为就是告诉maven中央仓库的仓库布局方式,不然maven按照什么规则去找呢?具体值看仓库。
- < snapshots > < enabled > 表示我们可以从中央仓库下载快照版本。后面会详细讲。
私服
私服就是架设在局域网的中央仓库。好处是:
- 节省自己的外网带宽。
举个例子:你跟女朋友在使用同一个网络,此时你在搭建你的项目,需要下载一堆依赖。而你的女朋友正在打游戏,网速大量被你占用,你女朋友卡的要死,绝对要哔哔你。这也就是以前网吧禁止看黄片的原因(小的时候在黑网吧上网,就遇到过)嘿嘿。 - 加速Maven项目的构建。
为啥加速Maven项目的构建了呢?大家都知道正常情况下,局域网比外网要快很多。依赖构件下载的快了,项目不就构建的快了。 - 部署第三方构件。
这个会涉及到版权问题,比如Orcal的数据库驱动是不开源的,你们公司买了以后,大家都需要用到,怎么办呢?不能放在中央仓库上,肯定也不会一个一个的来拷贝吧,最好的办法就是放在私服上。同时也方便公司内部的构件放在私服上。 - 提高稳定性,增强控制。
局域网肯定比外网稳定。而且,我的局域网,当然我来管理了。 - 降低中央仓库的负荷。
少一些人去直接访问中央仓库,负荷不就低了。
常见的私服:Sonatype Nexus 、Jarvana 、 MVNbrowser 、MVNrepository 。具体架设私服的私服的方式就不在这里赘述了。网上教程一大把。自己可以配置玩玩。
小结
本篇重点是,搞清楚仓库的种类,本地仓库及中央仓库的基本配置。