先确认失败的是哪一次 Maven 执行

适用于已经安装 Maven、在可信 Java 项目里遇到依赖或插件下载失败的人。命令参数按 Maven 3.9.11 官方参考核对;其他版本先查看自身帮助。本文是资料核对教程,未在你的项目、公司仓库或代理上实测。

  1. 在运行失败构建的同一个终端执行 mvn -v,记录 Maven、Java 和系统版本。若项目使用 Wrapper 或 IDE,记录它实际选用的 Maven、JDK 与用户设置文件,不能用另一个终端的成功代替。
  2. 保存首次失败附近的仓库地址、构件坐标及错误类型。先遮掉 URL 中的凭据和私有路径;不上传完整 settings.xml。
  3. 确认本次命令没有 -o,用户设置里也没有意外启用 offline。离线模式不会通过修改代理恢复下载。
Windows PowerShell / macOS / Linux;普通用户,只显示版本
mvn -v

把代理、镜像和仓库账号分开

设置位置解决的问题不应填入的内容
proxies / proxy请求通过哪个网络代理发出仓库下载地址不是代理 host
mirrors / mirror哪些仓库请求改用指定镜像本地 HTTP 代理端口不是 Maven 仓库
servers / server访问仓库或镜像时使用的认证不能用订阅 token 代替仓库账号

Maven 会合并安装目录 conf/settings.xml 与用户目录 .m2/settings.xml,冲突时用户设置优先。镜像的 id 用于匹配 servers 中对应的认证项;只改镜像地址而忽略身份配置,可能把连通问题变成认证问题。具体仓库授权仍由仓库管理员确认。

用独立设置文件验证 HTTP 代理

  1. 先记下客户端实际启用的 HTTP 或 mixed 监听地址和端口。下例 7890 只是端口占位示例,必须替换;纯 SOCKS 端口不适用这份 HTTP 配置。
  2. 在用户控制的私有目录新建 settings-roxi-test.xml。若原项目依赖公司镜像、仓库授权或配置 profile,应以原用户设置的本地副本为基础,仅合并 proxies,不覆盖整个文件。已有活动代理时先记录,再只保留一个需要测试的活动项。
  3. 下面是没有其他用户配置时的完整最小示例;host 只写主机,不能写成 http://127.0.0.1:7890。nonProxyHosts 用竖线分隔,内网域名是否需要绕过由实际网络决定。
本地文件 settings-roxi-test.xml;仅供同机 HTTP 代理示例
<settings>
  <proxies>
    <proxy>
      <id>local-test</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>127.0.0.1</host>
      <port>7890</port>
      <nonProxyHosts>localhost|127.0.0.1</nonProxyHosts>
    </proxy>
  </proxies>
</settings>
  1. 在可信项目中,把 -s 与临时文件路径加到原来失败的命令。下例 compile 会运行项目构建并写入 target、下载文件到本地 Maven 缓存;无需管理员权限。请勿在不明项目上运行构建插件。
  2. 网络或设置修好后仍提示先前的下载失败被缓存,可做一次 -U 重查;它会检查缺失的 release 和更新的 snapshot,并不是清空所有缓存或修复认证。保持原有项目参数,避免同时升级依赖。
示例:临时文件位于当前项目目录;Windows PowerShell / macOS / Linux
mvn -s "./settings-roxi-test.xml" -U compile

根据新的错误决定下一步

实际现象下一步
连接代理地址被拒绝或超时核对监听进程、地址、端口和运行环境
镜像或仓库返回认证失败核对实际目标及 servers 的 id;请求管理员核实权限
出现证书链错误记录 Maven 使用的 JDK;按组织要求检查信任链,不关闭校验
下载成功,随后编译失败联网阶段已前进,继续处理代码或构建错误
只有 IDE 失败核对 IDE 的 Maven、设置文件和离线模式是否与成功命令一致

验收原任务,再撤回临时配置

  1. 确认原来失败的那个构件确实下载成功,并重跑原任务。全部命中缓存的一次成功不能证明代理路线;需要时对照本次真实下载日志与代理连接记录。
  2. 临时验证结束,后续命令去掉 -s 和仅为本次加入的 -U,恢复原入口。临时 XML 如果包含账号,按本地敏感文件处理,完成后移除;不要删除整个 .m2 缓存。
  3. 仍失败时提交 Maven/JDK 版本、脱敏构件信息、实际仓库主机、错误阶段、是否仅 IDE 失败和一次对照结果。保留用户原配置作为恢复依据。