什么是 maven 仓库
maven 在某个位置统一储存构建,这个位置就是仓库。
仓库分类
本地仓库
不管是在 windows 还是 linux,每个用户在自己目录下有一个 .m2/repository/ 的目录,这就是本地仓库的地址。可以通过修改 settings.xml 文件修改这个地址。
远程仓库
安装好 maven 后,本地仓库是不存在的,当用户执行第一条 maven 命令,才会创建本地仓库。这时,仓库中也没有 maven 构建。需要通过配置,从远程仓库获取。
远程仓库好比书店,有各种各样的书本,当我们需要时,就去远程仓库获取,同时,也可以配置多个远程仓库。
中央仓库
中央仓库是一个默认的远程仓库,maven 的安装自带了中央仓库的配置。因此能做到“开箱即用”
私服
私服是一种特殊的远程仓库,架设在局域网内。私服主要有以下优点:
- 节省自己的外网带宽
- 加速 maven 构建
- 部署第三方构件
- 提高稳定性,增强控制
- 降低中央仓库的负荷
远程仓库的配置
1 | <repositories> |
当默认的中央仓库无法满足项目需求时,可以在 pom 文件中配置远程仓库,大多数情况下,公司内部需要配置自己的私服地址。
id 标签声明了远程仓库,maven 自带的中央仓库 id 为 central,其他仓库的声明不能覆盖这个 id,否则就会覆盖中央仓库的配置。updatePolicy 配置从远程仓库检查更新的频率
- daily:默认值,每天一次
- never
- always:每次构建都检查更新
- interval:X ,每隔 X 分钟检查更新一次
远程仓库的认证
就像数据库一样,当我们用自己的远程仓库,会配置账号密码以防止数据泄露。通常在 settings 中配置认证信息,如
1 | <servers> |
id 要与配置的仓库 id 保持一致
镜像
如果仓库 X 可以提供仓库 Y 的所有内容,那么可以认为 X 是 Y 的一个镜像。由于地理位置原因,从中央仓库获取构件通常很慢,因此,我们可以用国内的镜像仓库替代
1 | <mirrors> |
通常配置在 settings.xml 文件中,mirrorOf 表示该仓库为 central 的镜像,任何对于中央仓库的请求都会转移到此仓库。
镜像仓库完全屏蔽了被镜像仓库,因此,当镜像仓库不稳定时,maven 将无法访问被镜像仓库,而无法下载构件。