当前位置: 首页 > news >正文

maven-default-http-blocker (http://0.0.0.0/)

从 Maven 3.8.1 版本开始,许多开发者在构建项目时可能会遇到一个意想不到的错误,提示无法下载依赖,并指向一个 HTTP 地址。这通常是由于 Maven 引入了一个名为 maven-default-http-blocker 的默认镜像。

本文将深入解析这个新特性背后的原因、它如何工作,并提供完整的解决方案,包括了详细的 settings.xml 路径说明。
在这里插入图片描述

1. 为什么会出现这个问题?Maven 的安全加固

这个问题源于 Maven 社区对安全的重视,旨在解决一个重要的安全漏洞 CVE-2021-26291

  • 不安全的 HTTP 链接: HTTP 协议不提供加密,这使得在依赖下载过程中可能发生 中间人攻击 (Man-in-the-Middle, MITM)。攻击者可以在传输过程中篡改依赖,注入恶意代码,给项目带来严重的安全风险。
  • POM 的不可变性: Maven Central 上的许多旧项目 POM 文件引用了不安全的 HTTP 仓库。由于这些 POM 文件是不可修改的,Maven 社区选择在客户端层面进行安全加固。

因此,从 Maven 3.8.1 开始,Maven 默认引入了 maven-default-http-blocker 镜像,阻止所有以 http:// 开头的外部仓库访问,将请求重定向到无效的 http://0.0.0.0/ 地址,从而保护用户。

2. 解决方案
方案操作步骤优点缺点 & 警告
方案一<br>(推荐)<br>升级为 HTTPS检查 pom.xmlsettings.xml,将所有仓库 URL 从 http:// 修改为 https://最安全,最彻底,一劳永逸。需要仓库支持 HTTPS,不适用于无法升级的遗留仓库。
方案二<br>(临时方案)<br>禁用阻断器settings.xml 中添加或修改镜像规则来覆盖默认阻断器。快速解决问题,无需修改项目 pom.xml不安全! 项目仍暴露在中间人攻击风险下。

2.1 方案一:将 HTTP 仓库升级为 HTTPS (推荐)

这是最安全、最彻底的解决方案,也是 Maven 社区所提倡的最佳实践

pom.xml 配置示例:

<project>...<repositories><repository><id>my-legacy-repo</id><url>http://my.legacy.repo.com/releases</url></repository><repository><id>my-legacy-repo</id><url>https://my.legacy.repo.com/releases</url></repository></repositories>...
</project>
2.2 方案二:临时禁用默认阻断器 (不安全)

如果您的项目依赖于一个 只支持 HTTP 的遗留仓库,您可以选择禁用这个阻断器。

警告: 这种做法 不安全,仅应作为 临时解决方案

操作方式:

settings.xml<mirrors> 标签内部添加以下配置。

settings.xml 配置示例:

<settings>...<mirrors><mirror><id>aliyunmaven</id><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url><mirrorOf>*,!maven-default-http-blocker</mirrorOf></mirror></mirrors>...
</settings>

3. 附录:settings.xml 文件路径详解

理解 settings.xml 的位置至关重要,它通常有两种类型,取决于您使用的环境。

3.1 用户级别 settings.xml (推荐修改)

这是最常见的 settings.xml 文件,它只对当前用户有效,也是 IDEA 等 IDE 默认使用的文件。

  • 路径: 位于用户主目录下的 .m2 隐藏文件夹中。
    • Windows: %USERPROFILE%\.m2\settings.xml
    • Linux/macOS: ~/.m2/settings.xml
3.2 全局级别 settings.xml (不推荐修改)

这个文件用于配置 Maven 安装目录下的所有用户,通常由管理员维护。

  • 路径: 位于 Maven 安装目录的 conf 文件夹中。
    • 路径: $M2_HOME/conf/settings.xml
3.3 IntelliJ IDEA 与 settings.xml

IntelliJ IDEA 本身没有一个独立的 settings.xml 文件。它提供了一个配置界面,让您选择要使用的文件。默认情况下,IDEA 使用 用户级别settings.xml 文件。

  • 配置路径: 您可以在 IDEA 的 File -> Settings -> Build, Execution, Deployment -> Maven 选项中进行检查或修改。

结论: 当您需要修改配置来解决此问题时,请优先修改您用户主目录下的 ~/.m2/settings.xml 文件

http://www.dtcms.com/a/349982.html

相关文章:

  • Gemini CLI 与 MCP 服务器:释放本地工具的强大潜力
  • Swiper属性全解析:快速掌握滑块视图核心配置!(2.3补充细节,详细文档在uniapp官网)
  • 飞牛影视桌面客户端(fntv-electron)使用教程
  • 无人机航拍数据集|第20期 无人机公路损伤目标检测YOLO数据集3771张yolov11/yolov8/yolov5可训练
  • 一键终结Win更新烦恼!你从未见过如此强大的更新暂停工具!
  • 云手机挂机掉线是由哪些因素造成的?
  • 指纹云手机×Snapchat Spotlight:动态GPS+陀螺仪仿生方案
  • 102. 二叉树的层序遍历
  • 指令集架构ISA是什么?
  • toRefs 和 toRef 的区别和用法
  • 计算机实习经历包装/编写
  • 使用阿里云实现短信注册
  • 通过URI Scheme实现从Web网页上打开本地C++应用程序(以腾讯会议为例,附完整实现源码)
  • 从 “能对话” 到 “会思考”:通用人工智能离我们还有多远?
  • 【LeetCode 热题 100】416. 分割等和子集——(解法一)记忆化搜索
  • 函数指针与回调函数(c++)
  • 厚铜pcb的工艺流程与制造工艺
  • AI创业公司:Freya 金融语音AI Agent
  • 猴车安全新保障:AI摄像机智能监测人员乘坐合规性
  • 算法 --- 双指针
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(19):文法复习+单词第7回1
  • 【C++高并发内存池篇】ThreadCache 极速引擎:C++ 高并发内存池的纳秒级无锁革命!
  • 【51单片机固定按键占空比】2022-11-12
  • 曲面法向量的数学推导与 SymPy 实现
  • 基于MATLAB长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析;长时序NDVI/LAI/GPP产品预处理
  • 音视频学习(五十七):RTSP信令交互流程
  • 1424. 对角线遍历 II
  • “Datawhale AI夏令营--coze空间
  • Java多线程常见误区与最佳实践总结
  • Spring拦截器中@Resource注入为null的问题