Maven settings.xml配置多个Nexus仓库无法回退到第二仓库问题咨询
Maven多仓库配置失败原因及解决方案
配置错误原因
mirrors节点配置错误:你给两个镜像都设置了<mirrorOf>*</mirrorOf>,Maven的镜像匹配规则是按顺序匹配第一个符合规则的镜像就停止匹配,所有依赖请求都会被拦截到第一个Maven镜像地址,失败后不会尝试第二个镜像,也不会走你在profile中配置的仓库列表。- 存在笔误:第二个jenkins仓库的url配置缺失域名后缀
.net,错误地址https://nexus_example/repository/Jenkins_Proxy/会直接导致请求失败。
解决方案
如果你需要配置多个独立仓库,按顺序自动降级拉取,按以下步骤修改配置即可:
方案一:删除mirror配置(推荐,适合直接用配置的仓库列表)
直接删除整个<mirrors>...</mirrors>节点即可,你已经在激活的profile中配置了两个repository,没有mirror拦截的情况下,Maven会自动按照配置顺序尝试拉取依赖,第一个仓库请求失败后会自动尝试第二个仓库。
修改后的完整配置示例:
<settings> <servers> <server> <id>maven</id> <username>username</username> <password>password</password> </server> <server> <id>jenkins</id> <username>username</username> <password>password</password> </server> </servers> <profiles> <profile> <id>nexus</id> <repositories> <repository> <id>maven</id> <url>https://nexus_example.net/repository/Maven_Proxy/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>jenkins</id> <url>https://nexus_example.net/repository/Jenkins_Proxy/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles> </settings>
方案二:调整mirror匹配规则(适合必须保留镜像配置的场景)
不要用<mirrorOf>*</mirrorOf>匹配所有仓库,改为每个镜像匹配对应id的仓库即可:
<mirrors> <mirror> <id>maven</id> <mirrorOf>maven</mirrorOf> <url>https://nexus_example.net/repository/Maven_Proxy/</url> </mirror> <mirror> <id>jenkins</id> <mirrorOf>jenkins</mirrorOf> <url>https://nexus_example.net/repository/Jenkins_Proxy/</url> </mirror> </mirrors>
内容的提问来源于stack exchange,提问作者user5722923
相关产品推荐
相关产品推荐

