把 Grape 的代理属性放到 Groovy 的启动命令上:

groovy -Dhttp.proxyHost=proxy.example.net -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy.example.net -Dhttps.proxyPort=8080 app.groovy

这些取值是主机名和数字端口,而不是代理 URL。来自HTTP 代理列表的 HTTP 候选为公共仓库路由提供这两个值。同一个 HTTP 中间方可以承载 HTTP 和 HTTPS 两种目标的下载。

在这里设置的原因是时机。Grab 注解可能在编译期间、普通脚本语句执行之前解析依赖。之后再调用 System.setProperty 无法配置一个已经失败的下载。

用失败的仓库 URL 判断哪个目标协议需要路由。使用 GrapeIvy 时,groovy.grape.report.downloads=true 会报告下载活动;GrapeMaven 使用自己的调试选项。即使代理选择正确,缺少构件版本或仓库不可用仍然是仓库问题。

相关文章