1.什么是仓库
在maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。
maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库。
任何构件都有唯一的坐标。这个坐标定义了构件在仓库中唯一的存放路径。
2.坐标是如何成为路径的?
举例如下图依赖:
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
那么在仓库里路径解析如下:
1.基于groupId的准备路径,将句点分隔符转换成路径分隔符。/net/sf/json-lib
2.将artifactId拼接到后面。/net/sf/json-lib/json-lib
3.将version拼接到后面。/net/sf/json-lib/json-lib/2.4
自此,目录是结束了。接下是具体的文件。
4.将aftifactId和version以分隔符连接到后面。/net/sf/json-lib/json-lib/2.4/json-lib-2.4
5.判断是否有classifier,如果有,在第四项后加上分隔符再加上classifier。/net/sf/json-lib/json-lib/2.4/json-lib-2.4-jdk15
6.加上句点和文件格式的扩展名。扩展名是由package决定的,一般是jar和war。/net/sf/json-lib/json-lib/2.4/json-lib-2.4-jdk15.jar
来看下实际仓库中位置
非常完美。
3.仓库分类
1.本地仓库
2.远程仓库:远程仓库又分为中央仓库、私服、其他公共库。
4.本地仓库配置
maven本地仓库默认都是在用户目录下.m2/repostitory/这里的。安装后不会创建,而是在第一次执行mvn命令时才会创建。
这么诡异的位置,实在是没有心情。那么如何自定义位置呢?
这里需要引入一个新的元素localRespository,存放于maven的settings.xml里
在%M2_HOME%/conf/settings.xml里
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository -->
<localRepository>C:\Users\Administrator\Desktop\MyRepository</localRepository>
这里本来是注释掉的。打开注释后,改成自己的路径即可。但这个是全局级别的,也就是说本机器所有的用户的仓库路径到这里。如果想要用户级别的。那么把这个settings.xml复制到在${user.home}/.m2/下再去修改localRespository就是用户级别的。