Maven-HTTP Blocked

问题描述

Could not transfer artifact xxx from/to maven-default-http-blocker (http://0.0.0.0/):
Blocked mirror for repositories: [blocked-repository-id (http://blocked.repository.org, default, releases+snapshots)]

  • Maven 在升级到 3.8.1 以后,从安全角度考虑,默认将非 HTTPS 的远端仓库屏蔽掉了。

解决方案

  • 将 Maven 版本降到 3.8.1 以下

  • 让远端仓库支持 HTTPS

  • 为每一个 HTTP 源增加 mirror 配置

    1
    2
    3
    4
    5
    6
    <mirror>
    <id>other-mirror</id>
    <name>Other Mirror Repository</name>
    <url>https://other-mirror.repo.other-company.com/maven2</url>
    <mirrorOf>central</mirrorOf>
    </mirror>
  • 注释 $MAVEN_HOME/conf/settings.xml 默认配置中的相关镜像配置

    1
    2
    3
    4
    5
    6
    7
    <mirror>
    <id>maven-default-http-blocker</id>
    <mirrorOf>external:http:*</mirrorOf>
    <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
    <url>http://0.0.0.0/</url>
    <blocked>true</blocked>
    </mirror>
  • ~/.m2/settings.xml 配置中使用 dummy 镜像覆盖默认配置中的镜像配置

    1
    2
    3
    4
    5
    6
    7
    <mirror>
    <id>maven-default-http-blocker</id>
    <mirrorOf>external:dummy:*</mirrorOf>
    <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
    <url>http://0.0.0.0/</url>
    <blocked>true</blocked>
    </mirror>

参考资料