修复 Gradle 依赖解析问题,当 TLS v1.1 和 v1.0 支持被停止时
Maven Central 和 Bintray 已宣布将停止对 TLS v1.1 及以下版本的支持。以下是你需要了解的,以便在受影响的情况下更正你的 Gradle 构建。
如果你使用的是 Java 6 或 7 以及 Gradle 版本 2.1 到 4.8,则需要采取措施。
如何检查你是否受到影响
在出现“无法解析 [坐标]”的错误消息后,你可能已经收到以下错误之一。
收到致命警报:protocol_version
或
对等方未经身份验证
如果不是,您可以通过运行以下命令检查是否会受到影响
gradle --version # Without Gradle Wrapper
./gradlew --version # Using Gradle Wrapper on *nix
gradlew.bat --version # Using Gradle Wrapper on Windows
它将打印类似以下内容
------------------------------------------------------------
Gradle 3.5
------------------------------------------------------------
Build time: 2017-04-10 13:37:25 UTC
Revision: b762622a185d59ce0cfc9cbc6ab5dd22469e18a6
Groovy: 2.4.10
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.7.0_80 (Oracle Corporation 24.80-b11)
OS: Mac OS X 10.13.5 x86_64
如果以下所有条件都为真,则您必须采取措施
- JVM 版本为 Java 7u130 或更低版本
- **并且** Gradle 版本介于 2.1 和 4.8 之间(含)
- **并且** 您已声明
repository {}
的mavenCentral()
或jcenter()
如何使用 TLS 1.2 进行依赖项解析
您可以采取以下任一措施来使用 TLS v1.2+
- 使用 Java 1.7.0_131-b31 或更高版本运行 Gradle
- **或** 升级到 Gradle 4.8.1 或更高版本
- **或** 将
mavenCentral()
替换为maven { url = "http://repo.maven.apache.org/maven2" }
,并将jcenter()
替换为maven { url = "http://jcenter.bintray.com" }
建议使用前两种解决方案,因为第三种解决方案会打开可能的攻击途径。
其他资源
有关停止支持旧版 TLS 的文章,请参阅 Maven Central 和 Bintray 知识库,了解这些更改的必要性。
您也可以在 GitHub 上的 gradle/gradle#5740 中找到 Gradle 特定的详细信息。