版主注:这好像是服务中断了。 Stack Overflow 无法为此问题提供支持
> Failed to list versions for com.google.http-client:google-http-client-android.
> Unable to load Maven meta-data from https://jcenter.bintray.com/com/google/http-client/google-http-client-android/maven-metadata.xml.
> Could not HEAD 'https://jcenter.bintray.com/com/google/http-client/google-http-client-android/maven-metadata.xml'.
> Read timed out
我试图构建一个 Android 应用程序,但出现了上述错误。当我连接到“https://jcenter.bintray.com/com/google/http-client/google-http-client-android/maven-metadata.xml”时,出现 nginx 403 错误。 JCenter 关闭了吗?我应该怎么办?
原文由 Queen Ellery 发布,翻译遵循 CC BY-SA 4.0 许可协议
更新:2022 年 11 月 8 日
还有一件事。 在这里关注事件
tldr;
是的。
jcenter
正在关闭。但是有一种方法可以解决这个问题。jcenter
已落下,并以只读模式保持可用。到目前为止,还没有关于何时再次可用的更新。根据您的情况,您可以选择快速或 不那么快速的 选项。我在哪里可以查看状态?
更新:这里报告了新事件。 检查一下。
正如@Adrian 在评论中提到的,您可以在 Gradle 的事件状态页面 上检查当前事件的状态。更新:状态显示“已解决”,但我仍然无法完成该项目。所以我想知道该状态页面是否只显示
jcenter
对 Gradle 插件门户的影响,而不是jcenter
的一般状态。到目前为止,我再也找不到报告 bintray 状态的地方了。如果你找到一个,请在下面评论。
我现在能做什么?
推荐更新:
现在通过更新 gradlePluginPortal 以充当 jcenter 镜像(几乎)解决了该事件,很可能在
jcenter()
之前添加以下存储库应该可以解决该问题:临时解决方案:
切换 gradle 的离线模式,如下所示。这适用于本地机器,但不适用于 CI。
强大的解决方案:
远离已弃用的服务始终是个好主意。 大多数 活跃的库现在都托管在其他流行的存储库上,例如 google repo、Maven Central 或 gradle plugin repo。
要在您的项目中添加这些存储库,请在存储库块中添加以下内容(您可能已经有了)。订单很重要。确保将它们放在
jcenter()
之前,这告诉 gradle 在尝试从jcenter()
拉出之前查看其他回购协议。提示:全局搜索
jcenter()
并确保包含jcenter()
的每个存储库块都有这些其他存储库。执行 gradle sync 和 clean build,看看是否可行。
那没用?
别担心(还)。这很常见。上述解决方案在某些情况下无法单独使用:
当从
jcenter()
移动到其他 repo(如mavenCentral()
)时,作者决定更新版本号。这仅仅意味着您需要更新该依赖项的版本以从其他存储库中获取它。查找在失败的构建日志中显示为不可用的库。找到它的github或者开发文档查看最新版本。 Gradle Sync + 干净的构建。我们刚刚添加的存储库是流行的,但不是唯一的。当图书馆的作者不得不从
jcenter
切换到其他地方时,他们没有选择其中之一。在这种情况下,请查看 github 页面或开发人员文档。通常作者将所需的存储库放在这些页面上。如果您发现项目中不存在存储库,请添加它。 Gradle Sync + 干净的构建。jitpack.io
主要是因为它比其他选项更快更容易。但是您应该意识到对此的担忧。来自 gradle 的 Melix 总结了对 jitpack.io 的关注。由于潜在的安全问题,我建议在添加之前咨询团队和安全专家。好吧,现在是时候不用担心了。您很可能正在使用一些已弃用或不再维护的库。找到库的 github 页面,看看作者是否在自述文件中声明它已弃用或不再维护。您甚至可以检查它最后一次提交的时间。如果是前一段时间,这意味着它不再维护,作者不关心将库从
jcenter()
移动到任何其他 repo。jcenter
移动的问题。如果幸运的话,有人甚至可能已经创建了分叉并将该分叉托管在其他地方。例如,我在其中一个项目中使用spanny
并且作者没有移动它。 GustavoRoss 非常关心 分叉和移动。但是,嘿,我不记得我的代码库中有问题库?这意味着,它是一个传递依赖(直接依赖的依赖)。再次检查,你的直接依赖的最新版本,希望新版本已经解决了这个问题。
如何检查直接依赖和传递依赖?
希望到此为止,您的构建工作正常了。如果没有,那么希望
jcenter
很快回来并开始计划远离它。