如何配置gradlew使其全部请求均指向本地Nexus仓库?
离线环境下将Gradle所有请求重定向到Nexus的解决方案
1. 全局Gradle仓库代理配置
先在构建机器的全局Gradle配置文件中锁死仓库源,避免项目零散配置的干扰:
- 配置路径:
~/.gradle/gradle.properties(Windows用户路径为C:\Users\<你的用户名>\.gradle\gradle.properties)
添加以下配置:
# 禁用Gradle默认的远程仓库请求 systemProp.gradle.repo.http.enabled=false systemProp.gradle.repo.https.enabled=false
然后在项目根目录的settings.gradle(Kotlin项目用settings.gradle.kts)中统一指定Nexus仓库,替换所有默认仓库:
dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { maven { url 'http://你的Nexus地址/repository/maven-public/' } maven { url 'http://你的Nexus地址/repository/google/' } maven { url 'http://你的Nexus地址/repository/gradle-plugins/' } } }
2. 解决Android SDK的addons_list-5.xml请求问题
该请求属于Android SDK Manager范畴,需单独配置SDK镜像:
- 方法一:修改SDK目录下的
repositories.cfg(无文件则新建):
[google] name=Google Repository url=http://你的Nexus地址/repository/google/ [android] name=Android Repository url=http://你的Nexus地址/repository/android/
- 方法二:在项目的
local.properties中添加:
sdk.dir=你的本地SDK路径 sdk.repo=http://你的Nexus地址/repository/android/
注意:需确保Nexus已创建android代理仓库,指向https://dl.google.com/android/repository/,且完成资源同步。
3. 确保Nexus代理仓库配置完整
要覆盖所有Gradle和Android请求,Nexus需至少创建以下代理仓库,并加入到maven-public组仓库中:
maven-central:代理Maven中央仓库google:代理https://maven.google.com/android-repository:代理https://dl.google.com/android/repository/gradle-distributions:代理Gradle官方发行版仓库(支持你之前配置的distributionUrl)
4. 验证配置
执行./gradlew clean build,查看日志中的请求地址,确认所有资源均从Nexus拉取,无外部地址请求。
内容的提问来源于stack exchange,提问作者RusArtM
相关产品推荐
相关产品推荐

