JAVA 六月 19, 2020

Gradle HTTP 超时设置

文章字数 3.1k 阅读约需 3 mins. 阅读次数

在使用 Nexus 时,很罕见的遇到了超时问题:

> Unable to load Maven meta-data from http://localhost:8081/repository/test/io/github/alphahinex/example/0.1.2-SNAPSHOT/maven-metadata.xml.
   > Could not HEAD 'http://localhost:8081/repository/test/io/github/alphahinex/example/0.1.2-SNAPSHOT/maven-metadata.xml'.
      > Read timed out

经确认,http://localhost:8081/repository/test/io/github/alphahinex/example/0.1.2-SNAPSHOT/maven-metadata.xml 是可以得到正确的响应的,但是响应时间比较长。

类似问题,在使用 JitPack 真香 中提到的,需要 JitPack 先进行构建才能下载的依赖时,也可能会遇到。

增加超时时间就可以解决这个问题了,但现在 Gradle 的 文档 实在有点无力吐槽,啥也找不着。

下面就是缺失的 ——

Gradle HTTP 超时设置文档

Gradle v6.0.1 为例:

超时属性及默认超时时间在 JavaSystemPropertiesHttpTimeoutSettings.java#L26-L29 中:

public static final String CONNECTION_TIMEOUT_SYSTEM_PROPERTY = "org.gradle.internal.http.connectionTimeout";
public static final String SOCKET_TIMEOUT_SYSTEM_PROPERTY = "org.gradle.internal.http.socketTimeout";
public static final int DEFAULT_CONNECTION_TIMEOUT = 30000;
public static final int DEFAULT_SOCKET_TIMEOUT = 30000;

设置方式为:

命令行

$ ./gradlew build -Dorg.gradle.internal.http.socketTimeout=200000 -Dorg.gradle.internal.http.connectionTimeout=200000

配置文件

可在 gradle.properties 文件中,通过如下属性进行配置:

systemProp.org.gradle.internal.http.socketTimeout=200000
systemProp.org.gradle.internal.http.connectionTimeout=200000

参考资料

0%