仓库列举
镜像
概念解释
maven的镜像是在setting文件中配置的,镜像的作用相当给其他仓库中做的一个代理,假设A_repository中的资源是B_repository中资源的子集,那么就可以把B_repository配置成A_repository的代理镜像,也就可以吧B_repository称为A_repository的镜像。
适用场景(用途)
为什么需要镜像呢,在不做任何处理的场景下,我们利用maven拉包(),会到A_repository仓库去拉,但如果是这个repository不在国内,会导致拉包的效率非常低,然后我们把国内的某个maven仓库配置成他的镜像,让所有去A_repository的拉包请求都转交B_repository来处理,因为B_repository在国内,那么包的下载速率就会有提升。
所以镜像的配置可以理解为对原有repository的加速。
配置方法
最外层的mirrors标签标示这是个镜像列表,里边可以配置多个镜像源,
每个mirror代表一个镜像源,其中id作为镜像源的标示,url标示镜像源的地址,name没有明确作用,mirrorOf用来指被镜像的repository的id。
注意
1 由于镜像仓库是会完全屏蔽被镜像仓库的,所以如果镜像仓库不稳定或者暂时无法访问的话,我们也是访问不到被镜像的仓库的。
2 此外,对同一个repository配置的多个镜像,多个镜像是备份关系,只有上一个镜像找不到(即你访问的repository在这个mirror节点没匹配到)的场景下才会去匹配下一个镜像,如果一个镜像被匹配到了,但是找不到jar包,maven是不会再去第匹配第二个镜像,
私服
概念解释
私服,就是另一种特殊的远程仓库,它通常架设在局域网内的一台服务器上,用于代理所有外部的远程仓库,并且能接受内部项目的上传和获取。
适用场景(用途)
在实际的项目开发过程,可能会有很多自己打出来的项目特有的包,这些包一般是不会放在公共仓库中公开的,但是直接放在本地的话,项目中的其他成员不好访问,因此我们需要一个私有的远程仓库,让他来帮我们管理这些私有的包。
配置方法
认证配置
server标签外层还有一个servers标签表示多个私服的账号配置
server标签表示一个私服的账号配置
id表示私服的唯一标识
username表示私服的登录用户名
password表示私服的登录密码
私服信息配置
最外层profiles标签说明可以配置多个私服
内层profile标签代表这是一个私服配置
id标签是私服的唯一标识
repositories 仓库配置
repository 这里我并未尝试过对私服配置多个地址的做法
release和snapshot用来配置仓库是否允许为快照包和发布包的提供下载权限
其中release和snapshot标签中可以加入updatePolicy标签用来设置更新评率,每一次mvn构建时,会提供一个时间戳,mvn通过比较比较这次构建的时间和上次构建的时间,以及是否超过设置的更新频率,来判断这次构建是否需要从远程更新依赖,always(每次构建都检查), daily(默认, 距上次构建检查时间超过一天), interval: x(距上次构建检查超过 x 分钟)、 never(从不)。
激活配置
然后配置对私服配置的激活,其中activeProfile中配置填入想要激活的私服配置id
pom文件打包配置
在pom文件中进行打包配置,使得在项目中的包可以被发布当私服中去
distributionManagement标签表明这是打包配置
repository表明这是稳定版本的打包地址
id对应私服唯一id标识
name可以随便配
url表示私服的地址
snapshotRepository表明这是快照版本的打包地址
好处
项目中配置多远程仓库的情况下,会导致项目构建速度很慢,配置私服来代替多个远程仓库可以加快项目的构建速度
对于一些无法从外部获取的依赖,可以通过放入私服中的方式进行获取
降低中央仓库的负荷:maven中央仓库被请求的数量是巨大的,配置私服也可以大大降低中央仓库的压力
远程仓库
概念解释
一些mvn依赖的存放地址
适用场景(用途)
配置依赖的下载地址,有些依赖在指定的远程仓库中,但是mvn默认只会从中央仓库去找,所以需要我们自己制定远程仓库去下载依赖
配置方法
repositories表示多个远程仓库的配置
repository表示一个远程仓库的配置
release和snapshot表示是否有从改远程仓库下载依赖的权限
id表示远程仓库的唯一id标识
name并没有什么实际意义
url表示远程仓库的地址
本地仓库
本地仓库就是我们从就是自己pc中的 .m2/repository,我们从非本地仓库中获取的依赖都会放到这里,这个本地仓库就是一个缓存,当我们请求依赖的时候,会检查本地仓库里有没有,如果没有的话,再向远程仓库发起请求
本地仓库是远程仓库的一个缓冲和子集,当你构建Maven项目的时候,首先会从本地仓库查找资源,如果没有,那么Maven会从远程仓库下载到你本地仓库。这样在你下次使用的时候就不需要从远程下载了。如果你所需要的jar包版本在本地仓库没有,而且也不存在于远程仓库,Maven在构建的时候会报错,这种情况可能发生在有些jar包的新版本没有在Maven仓库中及时更新。
依赖的下载顺序
本地仓库 --> 私服 --> 镜像 --> 远程仓库
评论区