从 shell 的 NO_PROXY 变量复制来的排除项,在 Maven 中不一定有效。Maven 的 nonProxyHosts 列表用竖线分隔条目,而不是环境变量中常见的逗号分隔形式。

目标用户设置中的代理条目可以这样写:

<settings>
  <proxies>
    <proxy>
      <id>outbound-proxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>203.0.113.10</host>
      <port>8080</port>
      <nonProxyHosts>localhost|*.example.internal</nonProxyHosts>
    </proxy>
  </proxies>
</settings>

这是围绕 proxies 部分展示的设置片段。应将其合并到现有设置文件,不要覆盖无关的 mirrors、servers 和 profiles。使用实际代理地址。如果仓库请求获准使用公共 HTTP 代理,可在HTTP 代理列表中寻找候选主机和端口组合。

匹配仓库主机

应针对 Maven 实际联系的主机名设置排除项。内部仓库 URL 与公共下载主机可能需要不同路由。不要把包含路径的完整仓库 URL 填进用于主机模式的字段。

支持通配符,但不要只为消除一个错误就使用过宽的模式。修改后,应分别检查目标内部主机名和一个公共仓库。

找到实际使用的设置

Maven 可以合并全局和用户设置,单次调用也可以选择其他设置文件。IDE 使用的 Maven 安装或配置可能与终端不同。编辑失败调用根本不读取的文件,不会改变其路由。

代理的启用标记也很重要。未启用条目中的主机和端口即使写对,也不能证明 Maven 会选用它。

区分两个服务器的凭据

代理服务要求凭据时,应把它们放在代理条目中。私有制品仓库的凭据属于相应的 server 配置。提供仓库令牌无法回应代理认证质询。

如果请求仍失败,记录所选仓库 URL、响应或连接错误,以及生效设置的来源。先确定请求原本应该走代理还是直连;同时修改列表语法和端点,会让结果更难判断。

相关文章