Gradle构建从Maven仓库下载依赖失败,但直接下载成功
Gradle依赖下载超时但wget可正常下载的解决方案
问题描述
使用Gradle从Maven中央仓库下载依赖时频繁触发超时,报错示例如下:
Could not download log4j-core-2.17.1.jar (org.apache.logging.log4j:log4j-core:2.17.1) > Could not get resource 'https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j-core/2.17.1/log4j-core-2.17.1.jar'. > Could not GET 'https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j-core/2.17.1/log4j-core-2.17.1.jar'. > Connect to repo.maven.apache.org:443 [repo.maven.apache.org/151.101.40.215] failed: Read timed out Could not download log4j-api-2.17.1.jar (org.apache.logging.log4j:log4j-api:2.17.1) > Could not get resource 'https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j-api/2.17.1/log4j-api-2.17.1.jar'. > Could not GET 'https://repo.maven.apache.org/maven2/org/apache/logging/log4j/log4j-api/2.17.1/log4j-api-2.17.1.jar'. > Connect to repo.maven.apache.org:443 [repo.maven.apache.org/151.101.40.215] failed: Read timed out Could not download commons-configuration2-2.2.jar (org.apache.commons:commons-configuration2:2.2) > Could not get resource 'https://repo.maven.apache.org/maven2/org/apache/commons/commons-configuration2/2.2/commons-configuration2-2.2.jar'. > Could not GET 'https://repo.maven.apache.org/maven2/org/apache/commons/commons-configuration2/2.2/commons-configuration2-2.2.jar'. > Connect to repo.maven.apache.org:443 [repo.maven.apache.org/151.101.40.215] failed: Read timed out Could not download jersey-apache-connector-2.26.jar (org.glassfish.jersey.connectors:jersey-apache-connector:2.26) > Could not get resource 'https://repo.maven.apache.org/maven2/org/glassfish/jersey/connectors/jersey-apache-connector/2.26/jersey-apache-connector-2.26.jar'. > Could not HEAD 'https://repo.maven.apache.org/maven2/org/glassfish/jersey/connectors/jersey-apache-connector/2.26/jersey-apache-connector-2.26.jar'. > Connect to repo.maven.apache.org:443 [repo.maven.apache.org/151.101.40.215] failed: Read timed out
但使用wget直接下载这些包可成功,以下是可行的解决方法:
解决方法
1. 延长Gradle网络超时时间
Gradle默认的网络超时阈值较短,国内网络环境下易触发超时。在项目根目录的gradle.properties中添加以下配置(设置为5分钟):
org.gradle.internal.http.connectionTimeout=300000 org.gradle.internal.http.socketTimeout=300000
2. 切换至国内Maven镜像
替换中央仓库为国内镜像(如阿里云),大幅提升下载速度。修改项目的build.gradle文件:
repositories { maven { url 'https://maven.aliyun.com/repository/public' } mavenCentral() }
若需全局配置所有项目,修改settings.gradle文件:
pluginManagement { repositories { maven { url 'https://maven.aliyun.com/repository/public' } gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { maven { url 'https://maven.aliyun.com/repository/public' } } }
3. 检查并禁用不必要的代理
如果Gradle配置了代理但实际不需要,会导致连接异常。打开gradle.properties,注释掉代理相关配置:
# systemProp.http.proxyHost=proxy.example.com # systemProp.http.proxyPort=8080 # systemProp.https.proxyHost=proxy.example.com # systemProp.https.proxyPort=8080
4. 手动下载依赖至本地仓库
利用wget下载对应jar包后,放置到本地Maven仓库的对应路径。例如log4j-core-2.17.1.jar的路径为:
~/.m2/repository/org/apache/logging/log4j/log4j-core/2.17.1/
Gradle会优先读取本地仓库中的依赖。
5. 清理Gradle缓存并刷新依赖
缓存损坏可能导致下载异常,执行以下命令清理缓存并重新下载:
./gradlew clean build --refresh-dependencies
也可手动删除Gradle缓存目录(需注意备份):
rm -rf ~/.gradle/caches
内容的提问来源于stack exchange,提问作者Queenie Wong
相关产品推荐
相关产品推荐

