We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
安装最新版本 ( 3.8.4 ) 的 Maven 之后,发现无法更新项目依赖了,出现了形如这种错误:
maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories
查阅资料发现,从 3.8.1 版本开始,Maven 为了修复 CVE-2021-26291 增加了禁止访问 HTTP 地址仓库的逻辑: https://maven.apache.org/docs/3.8.1/release-notes.html
禁用的方法是在 maven 的默认 settings.xml 中增加了新的配置:
<mirrors> <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> </mirrors>
此时当你访问任何 http 开头的仓库时,都会报错终止。
所以有两个解决办法:
我尝试了,将本地用户配置 ~/.m2/settings.xml 中的地址全部改为 https:
~/.m2/settings.xml
<profile> <id>profile-f6-public</id> <repositories> <repository> <id>repo-f6</id> <url>https://maven.mynexus.com/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>repo-f6</id> <url>https://maven.mynexus.com/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> <properties> <sonar.host.url>https://sonar.mynexus.com</sonar.host.url> </properties> </profile>
再将项目中配置 ( pom.xml ) 的仓库地址改为 https:
<repositories> <repository> <id>repo-f6</id> <url>https://maven.mynexus.com/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
再次尝试,一般情况应该就可以了。
但是!如果你依赖的 jar 中也定义了 http 形式的 repositories 咋办?比如某工程依赖的 utility 包, 这个依赖内部声明了 http 地址:
<pluginRepository> <id>erp</id> <name>erp</name> <url>http://maven.mynexus.com/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository>
此时运行 maven 命令仍会报错,那该怎么办呢?
修改本地配置 ~/.m2/settings.xml,允许 http 访问,上面也提到了 3.8.1 禁止 HTTP 访问的方式是新增了名叫 maven-default-http-blocker 的 mirror,那我们定义一个重名的 mirror 覆盖它即可,在配置文件中新增以下代码:
maven-default-http-blocker
<!-- 允许 HTTP 仓库访问 --> <mirrors> <mirror> <id>maven-default-http-blocker</id> <mirrorOf>dummy</mirrorOf> <name>Dummy mirror to override default blocking mirror that blocks http</name> <url>http://0.0.0.0/</url> <!-- 这里注释掉因为旧版本的 Maven 不支持该选项,默认值即 false --> <!-- <blocked>false</blocked> --> </mirror> </mirrors>
此时万事大吉。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
问题描述
安装最新版本 ( 3.8.4 ) 的 Maven 之后,发现无法更新项目依赖了,出现了形如这种错误:
查阅资料发现,从 3.8.1 版本开始,Maven 为了修复 CVE-2021-26291 增加了禁止访问 HTTP 地址仓库的逻辑: https://maven.apache.org/docs/3.8.1/release-notes.html
禁用的方法是在 maven 的默认 settings.xml 中增加了新的配置:
此时当你访问任何 http 开头的仓库时,都会报错终止。
所以有两个解决办法:
方案1:将项目中所有的仓库地址改为 https
我尝试了,将本地用户配置
~/.m2/settings.xml
中的地址全部改为 https:再将项目中配置 ( pom.xml ) 的仓库地址改为 https:
再次尝试,一般情况应该就可以了。
但是!如果你依赖的 jar 中也定义了 http 形式的 repositories 咋办?比如某工程依赖的 utility 包, 这个依赖内部声明了 http 地址:
此时运行 maven 命令仍会报错,那该怎么办呢?
方案2:修改本地配置,允许http访问
修改本地配置
~/.m2/settings.xml
,允许 http 访问,上面也提到了 3.8.1 禁止 HTTP 访问的方式是新增了名叫maven-default-http-blocker
的 mirror,那我们定义一个重名的 mirror 覆盖它即可,在配置文件中新增以下代码:此时万事大吉。
The text was updated successfully, but these errors were encountered: