1.概述
不同的项目依赖的jar有可能一样。这时候为了避免jar重复下载的问题,就产生仓库的概念。这个仓库只保证一个jar,以便供其他项目使用。
在Maven的conf目录的settings.xml自定义仓库地址
<localRepository>/Java_Develop_Environment/Maven/repository</localRepository>
2.仓库布局
Maven仓库的布局是根据其唯一的坐标进行对应的。
例如下面的坐标在硬盘中的文件路径地址
com/strivelearn/hello/1.0.0
3.仓库分类
Maven仓库分为两类:1、本地仓库 2、远程仓库
Maven根据坐标寻找构件的时候,首先先查看本地仓库,如果有,则直接使用。如果没有,则从远程仓库获取。
Maven还有一种特殊的远程仓库:私服。为了节约带宽和时间,则在局域网内架设一个私有的仓库服务器。用其代理所有的外部远程仓库。国内通常使用阿里云的私服。其中在maven中设置如下镜像:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
4.本地仓库
当我们在编写自己项目的时候,我们在执行下面的命令,则就会把自己项目的jar包安装到本地仓库。
mvn clean install
5.远程仓库
远程仓库包含:1、中央仓库 2、私服 3、其他公共库。
我们可以通过设置Maven的setting.xml来确认远程仓库地址,如上面在setting文件设置阿里云镜像。又可以在Maven里定义远程仓库地址。
<repositories>
<repository>
<id>aliyun</id>
<name>aliyun repository</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</repository>
</repositories>
6.远程仓库的认证
大部分远程仓库无须认证,但是有时候出于安全方面的考虑,我们需要提供依认证信息才能访问一些远程仓库。
配置认证信息和配置仓库信息不同,仓库信息可以直接配置在POM文件中,但是认证信息必须配置在settings.xml文件中。这是因为pom文件往往被提交到代码仓库中供所有成员访问。而setting文件一般只放在本机。因此setting.xml文件中配置认证信息比较安全。
<servers>
<server>
<id>deploymentRepo</id>
<username>repouser</username>
<password>repopwd</password></server>
</servers>
7.部署到远程仓库
项目开发完毕,都需要部署到仓库中,供其他团队使用。那么我们就需要将自己的项目包部署到远程仓库。
<distributionManagement>
<!--发布版本构件的仓库-->
<repository>
<id>xxx</id>
<name>xxx</name>
<url>xxxx</url>
</repository>
<!--快照版本的仓库-->
<snapshotRepository>
<id>xxx</id>
<name>xxx</name>
<url>xxxx</url>
</snapshotRepository>
</distributionManagement>
配置正确后,在命令行运行:
mvn clean deploy
8.镜像
如果仓库X可以提供仓库Y存储的所有内容,那么可以认为X是Y的一个镜像。也就是任意一个可以从仓库Y获取的构件,都能够从它的镜像中获取。
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
9.仓库搜索服务
再使用Maven进行日常开发的时候,通常需要寻找需要的依赖。这时候可以用仓库搜索服务根据关键字得到Maven坐标。在国内能正常打开网址:http://mvnrepository.com/