当 HEAD 请求失败时,Gradle 无法下载依赖项

Posted

技术标签:

【中文标题】当 HEAD 请求失败时,Gradle 无法下载依赖项【英文标题】:Gradle failing to download dependency when HEAD request fails 【发布时间】:2018-06-23 12:55:58 【问题描述】:

我在我的 Gradle 构建脚本中设置了一个依赖项,该脚本托管在 Bitbucket 上。

Gradle 下载失败,出现错误提示

无法 HEAD 'https://bitbucket.org/....zip'。从服务器收到状态码 403:禁止

我查了一下,好像是因为:

Bitbucket 重定向到亚马逊网址 亚马逊网址不接受 HEAD 请求,只接受 GET 请求

我可以通过使用 curl 测试该 URL 来检查这一点,并且在使用 curl 发送 HEAD 请求时我也得到了 403 Forbidden。

否则,可能是因为亚马逊不接受 HEAD 请求中的签名,这应该不同于 GET 请求,如 here 所述。

有没有办法解决这个问题?我可以告诉 Gradle 跳过 HEAD 请求,直接转到 GET 请求吗?

【问题讨论】:

【参考方案1】:

我通过使用gradle-download-task 插件解决了这个问题,并按照here 的说明手动编写缓存

【讨论】:

以上是关于当 HEAD 请求失败时,Gradle 无法下载依赖项的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio:Gradle 同步失败:无法 HEAD '...'。从服务器收到状态码 502:Bad Gateway [关闭]

Gradle 在从网络下载工件时抛出错误.. 异常:Gradle 任务 assembleDebug 失败,退出代码为 1

当 HEAD 请求未报告 ContentLength 时,如何获取下载大小?

Android Studio gradle sync失败无法从服务器获取状态为405的gradle pom

使用 USB 电缆调试时 Gradle 任务 assembleDebug 失败

若依报错401,请求访问:认证失败,无法访问系统资源