第7章 仓库
本章介绍了maven的仓库概念,仓库分类等内容。
7.1 何为maven仓库
maven仓库就是放置所有jar文件(war,zip,pom等等)的地方,maven项目可以从maven仓库中获取自己所需要的依赖jar。此外,仓库中的构件都有自己的坐标,坐标描述了版本、打包方式和maven如何找到此构件。
7.2 仓库的分类
7.2.1 本地仓库
在第一章安装maven时,我们已经设置了maven本地仓库,那么现在,详细说一说为什么要设置本地仓库。 在maven项目中,是没有lib目录来存放依赖文件的,如果pom.xml中需要依赖,在编译或测试时,maven会自动基于坐标使用本地仓库的依赖文件。 默认情况,maven本地仓库位置在用户根目录的.m2文件夹中。 某些情况下,例如c盘不足,我们需要设置仓库位置。
7.2.1.1 Linux设置方法
找到已注释掉的
<localRepository>/path/to/local/repo</localRepository>
,解开注释;
修改内容为:
<localRepository>/usr/local/maven/repo</localRepository>
当然,路径你可以自己定义。
7.2.1.2 Window设置方法
找到已注释掉的
<localRepository>/path/to/local/repo</localRepository>
解开注释,修改内容为:
<localRepository> D:/repository </localRepository>
当然,路径你可以自己定义。
一个maven构件,只有在本地仓库中时,才能供其他maven项目使用。maven一般会自动从中央仓库下载至本地仓库中。
自建的项目需要安装至本地仓库,才能供其他maven项目调用。
安装至本地仓库命令:mvn clean install
7.2.2 远程仓库
远程仓库可以看做和中央仓库相似,他的构件基本上都是从中央仓库克隆来的,还有些是自己发布的构件。那为什么要远程仓库?有时,国内的网络访问中央仓库很慢,这时可以修改maven配置来访问速度更快的远程仓库来下载构件。
7.2.2.1 远程仓库配置
在pom.xml文件中,
常见的远程仓库地址: 开源中国:http://maven.oschina.net/content/groups/public/
配置pom链接远程仓库:
<!-- 远程仓库配置 -->
<repositories>
<repository>
<id>oschina</id>
<name>oschina repo</name>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<url>http://maven.oschina.net/content/groups/public/</url>
</repository>
</repositories>
标签 | 介绍 |
---|---|
id | 标识仓库的唯一值,central会覆盖中央仓库 |
name | 仓库名称 |
releases | true表示开启仓库发布版本下载,false表示禁止 |
snapshots | false表示禁止快照版本下载,true表示支持 |
url | 仓库地址,基于http协议 |
updatePolicy | 远程仓库的检查频率:never-从不检查,always-每次构建都检查,interval:x-每x分钟检查,daily-每天检查 |
checksumPolicy | 检查检验和文件的策略:ignore-不检查,warn-校验错误警告,fail-校验错误构建失败 |
7.2.3 中央仓库
当maven刚安装至系统中时,本地仓库是空的,maven至少需要一个可用的远程仓库来下载构件,才能执行maven命令。中央仓库就是这样一个远程仓库。 maven默认的远程仓库地址是:http://repo1.maven.org/maven2/
7.2.4 私服
私服是一种特殊的远程仓库,他架设在局域网内或公司内网,负责代理公网上的远程仓库。 maven构建项目时,本地仓库没有所需构件,先请求私服,如果私服上不存在,则从外部的远程仓库下载构件缓存至私服上,供用户使用。 私服的好处:
- 加速maven构件下载,私服一般会搭建在公司内部局域网中,这样maven的构件下载速度可以比公网下载快很多。
- 部署第三方构件,当有些构件不能从远程仓库下载,或者某些自己内部开发出的构件,都可以部署至私服上,供用户使用。
- 降低中央仓库负荷,使用私服可以避免对中央仓库的重复下载。