如果 mvnw 在下载 Maven 时失败,settings.xml 中可用的代理条目可能已经太迟:Maven 还没有启动。

检查受影响 checkout 中生成的 wrapper 文件,确认它们运行的是哪个下载器。Maven Wrapper 3.3.4 记录了以下形式:

生成的类型在哪里查找代理输入
only-scriptUnix 上的 curl 或 wget;Windows 上的 PowerShell
scriptwrapper JAR 下载,随后是 Java wrapper 路径
bin随附的 wrapper JAR 及其 Java 下载路径
source用于引导时随附的 Java 下载器源码

only-script 是新生成 wrapper 的文档默认值。较旧的 checkout 会保留其生成的文件,即使你更新了机器上的 Maven 安装。

让设置与该过程匹配

对于使用 curl 或 wget 的 Unix only-script wrapper,请配置该下载器支持的代理接口;HTTPS 下载可以使用 https_proxy。如果该发行包下载可能使用公共 HTTP 代理,请从这个下载器所处环境对应的HTTP 代理列表中取一个候选地址。如果该值指向 SOCKS 服务器,下载器也必须支持该协议。

MAVEN_OPTS 提供 JVM 选项。它无法配置 shell 的 curl 进程,但在 Java 下载器路径上,JVM 代理属性可能很重要。在比较旧的 Takari 变通做法与另一个项目的 wrapper 时,这是有用的区别。

发行包下载完成且 Maven 启动后,它的仓库下载就成为针对Maven 自身的代理配置的另一项检查。发行包、wrapper JAR 和仓库可能由不同的主机提供。

相关文章