Gradle 配置阿里云代理
1. 问题描述
在使用Gradle更新项目依赖时,发生如下错误:
Using insecure protocols with repositories, without explicit opt-in, is unsupported. Switch Maven repository ‘maven(http://maven.aliyun.com/repository/central)’ to redirect to a secure protocol (like HTTPS) or allow insecure protocols. See https://docs.gradle.org/7.3.3/dsl/org.gradle.api.artifacts.repositories.UrlArtifactRepository.html#org.gradle.api.artifacts.repositories.UrlArtifactRepository:allowInsecureProtocol for more details.
翻译:
不支持对存储库使用不安全的协议,而没有显式的选择加入。切换Maven库’ Maven (http://maven.aliyun.com/repository/central)'以重定向到安全协议(如HTTPS)或允许不安全协议。详见xxx
2. 解决方法
在安装gralde的目录下找到init.d文件夹,在其中创建init.gradle
最终文件路径为 %GRADLE_HOME%\init.d\init.gradle
,添加如下内容
gradle.projectsLoaded {
rootProject.allprojects {
buildscript {
repositories {
def CENTRAL_URL = 'https://maven.aliyun.com/repository/central'
def GRADLE_PLUGIN_URL = 'https://maven.aliyun.com/repository/gradle-plugin'
def GOOGLE_URL = 'https://maven.aliyun.com/repository/google'
def JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter'
all { ArtifactRepository repo ->
if (repo instanceof MavenArtifactRepository) {
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2')) {
project.logger.lifecycle "maven中央仓库 ${repo.url} 已被替换为 $CENTRAL_URL."
remove repo
}
if (url.startsWith('https://plugins.gradle.org/m2/')) {
project.logger.lifecycle "gradle插件仓库 ${repo.url} 已被替换为 $GRADLE_PLUGIN_URL."
remove repo
}
if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
project.logger.lifecycle "谷歌仓库 ${repo.url} 已被替换为 $GOOGLE_URL."
remove repo
}
if (url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "jcenter仓库 ${repo.url} 已被替换为 $JCENTER_URL."
remove repo
}
}
}
maven {
url CENTRAL_URL
}
maven {
url GRADLE_PLUGIN_URL
}
google {
url GOOGLE_URL
}
jcenter {
url JCENTER_URL
}
}
}
repositories {
def CENTRAL_URL = 'https://maven.aliyun.com/repository/central'
def GRADLE_PLUGIN_URL = 'https://maven.aliyun.com/repository/gradle-plugin'
def GOOGLE_URL = 'https://maven.aliyun.com/repository/google'
def JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter'
all { ArtifactRepository repo ->
if (repo instanceof MavenArtifactRepository) {
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2')) {
project.logger.lifecycle "maven中央仓库 ${repo.url} 已被替换为 $CENTRAL_URL."
remove repo
}
if (url.startsWith('https://plugins.gradle.org/m2/')) {
project.logger.lifecycle "gradle插件仓库 ${repo.url} 已被替换为 $GRADLE_PLUGIN_URL."
remove repo
}
if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
project.logger.lifecycle "谷歌仓库 ${repo.url} 已被替换为 $GOOGLE_URL."
remove repo
}
if (url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "jcenter仓库 ${repo.url} 已被替换为 $JCENTER_URL."
remove repo
}
}
}
maven {
url CENTRAL_URL
}
maven {
url GRADLE_PLUGIN_URL
}
google {
url GOOGLE_URL
}
jcenter {
url JCENTER_URL
}
}
}
}
或者直接在init.d文件夹中放入init.gradle文件
init.gradle文件链接