一、仓库的基本概念
首次运行 Maven
命令的时,需要网上下载文件。 这些文件,是从 Maven
默认的远程库下载的。 这个远程仓库,有 Maven
的核心插件和可供下载的 jar 文件。maven 仓库地址
二、仓库分类
仓库只分为两类: 本地仓库和远程仓库。
Maven
根据坐标寻找构件,首先会查看本地仓库,如果本地仓库存在,则直接使用; 如果本地没有,Maven
就会去远程仓库查找,发现需要的构件之后,下载到本地仓库再使用。 如果本地仓库和远程仓库都没有,Maven
就会报错。-
远程仓库分为三种: 中央仓库,私服, 其他公共库。
1、中央仓库是默认配置下,Maven
下载jar
包的地方。
2、 私服是另一种特殊的远程仓库,为了节省带宽和时间,应该在局域网内架设一个私有的仓库服务器,用其代理所有外部的远程仓库。 内部的项目还能部署到私服上供其他项目使用。
3、一般来说,在Maven
项目目录下,没有诸如lib/
这样用来存放依赖文件的目录。 当Maven
在执行编译或测试时,如果需要使用依赖文件,它总是基于坐标使用本地仓库的依赖文件。
4、默认情况下,每个用户在自己的用户目录下都有一个路径名为.m2/repository/
的仓库目录。 有时候,因为某些原因(比如c盘空间不足),需要修改本地仓库目录地址。
5、对于仓库路径的修改,可以通过maven
配置文件conf
目录下settings.xml
来指定仓库路径。<!-- 设置到指定目录中,路径的斜杆不要写反 --> <settings> <localRepository>D:/m2/repository</localRepository> </settings>
中央仓库
由于原始的本地仓库是空的,
maven
必须知道至少一个可用的远程仓库,才能执行maven
命令的时候下载到需要的构件。中央仓库就是这样一个默认的远程仓库。maven-model-builder-3.3.9.jar
,maven
自动的jar
中包含了一个超级POM
。定义了默认中央仓库的位置。 中央仓库包含了 2000 多个开源项目,接收每天1亿次以上的访问。
私服
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的
maven
用户使用。 当maven
需要下载构件时,它去私服当中找,如果私服没有,则从外部远程仓库下载,并缓存在私服上,再为maven
提供。
此外,一些无法从外部仓库下载的构件,也能从本地上传到私服提供局域网中其他人使用。配置方式:项目
pom.xml
配置
<repositories>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>public</id>
<name>Public Repositories</name>
<url>http://192.168.0.96:8081/content/groups/public/</url>
</repository>
<repository>
<id>getui-nexus</id>
<url>http://mvn.gt.igexin.com/nexus/content/repositories/releases/</url>
</repository>
</repositories>
- 公司内部应该建立私服:
- 节省自己的外网带宽
- 加速
maven
构建 - 部署第三方控件
- 提高稳定性
- 降低中央仓库的负荷
其他公共库
常用的阿里云仓库配置
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>