Maven仓库及镜像配置
摘要
- maven仓库和镜像的配置及其关联方式
依赖查找顺序(按优先级排序,由高到低)
-
本地仓库,setting.xml中
settings.localRepository
的配置地址 -
settings.xml中profile.repositories配置的仓库,
settings.profiles.profile.repositories.repository
,注意要激活对应的profile -
pom.xml中profile.repositories配置的仓库,
project.profiles.profile.repositories.repository
,注意要在settings.xml中激活对应的profile -
pom.xml中repositories配置的仓库,
project.repositories.repository
-
maven默认的中央仓库:https://repo.maven.apache.org/maven2
说明,仓库的查找顺序实际上就是最终的pom.xml中仓库的声明顺序,所以可以通过如下命令导出最终的pom信息进行查看
1 | mvn help:effective-pom -Doutput=EffectivePom.xml |
仓库配置–repository
-
可以将仓库信息配置在
settings.xml
或pom.xml
中,如下可以配置多个,按顺序依次查找,注意这里的id必须唯一,repository
和pluginRepository
的id可以相同:
1 | <repositories> |
镜像代理–mirror
说明
-
由于网络等原因导致我们不能很顺利的从仓库下载到对应的依赖,此时我们可以为仓库配置镜像代理,加快下载速度,国内一般会使用阿里云作为镜像代理
-
mirror镜像可以配置多个,每个mirrorOf里可以配置如下内容:
-
*
: 匹配所有仓库,一般我们搭建了自己的私服时推荐这样设置 -
repo1Id
: 匹配仓库id为repo1Id的仓库 -
repo1Id,repo2Id
: 匹配仓库id为repo1Id和repo2Id的仓库 -
*,!repo1Id
: 匹配所有仓库,但不包含repo1Id -
external:*
: 匹配所有不在本机上的远程仓库,也就是说,如果仓库的url里配置的是localhost
或者file://
则不进行代理
镜像代理需要配置在setting.xml中
1 | <mirrors> |
maven3.8.1以后的配置中会禁止http协议的仓库地址,该如何处理?
-
我们可以看到setting.xml中的镜像配置里默认增加了如下配置,其会禁止所有http协议的仓库被请求,目的是推荐使用https协议
1 | <mirror> |
-
此时执行mvn时会报告如下错误:
1 | maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories |
-
但是很多公司的私服都没有配置证书,我们可以修改其配置如下,即可解决
1 | <mirror> |
仓库配置–profile分环境配置多个仓库
-
一般我们在公司都会连接公司的私服,但是私服一般不支持外网访问,如果不能vpn到公司的环境,我们就需要切换镜像的地址,此时可以通过配置profile的方式进行解决,我们可以配置多个profile,使用时激活对应的profile即可
-
配置profile允许maven根据不同的环境采用不同的maven配置,一个profiles标签中可以有很多个profile,只需要根据不同的项目环境,激活不同的profile即可。
1 | <profiles> |
-
默认激活的就是
nexus
对应的私服,激活其它profile可以修改配置文件的activeProfile
,或者使用如下命令
1 | mvn clean package -P aliyun |
-
关于
profile
的使用方式,可以参考https://www.jb51.net/article/272846.htm