全局修改gradle依赖,适配新老gradle配置方式

115 阅读1分钟

创建或更新 $USER_HOME/.gradle/init.gradle 的内容,代码如下

def repoConfig = {
    all { ArtifactRepository repo ->
        if (repo instanceof MavenArtifactRepository) {
            def url = repo.url.toString()
            if (url.contains('jcenter.bintray.com')) {
                // println "gradle init: (${repo.name}: ${repo.url}) removed"
                //不删是由于有些古老的工件只有jcenter才有,其他镜像没有
                // remove repo
                //替换
                add mavenCentral()
                //保底
                add maven { url 'https://maven.aliyun.com/repository/jcenter' }
            }
        }
    }

    //阿里
    // maven { url 'https://maven.aliyun.com/repository/public' }
    // maven { url 'https://maven.aliyun.com/repository/central' }
    // maven { url 'https://maven.aliyun.com/repository/jcenter' }
    // maven { url 'https://maven.aliyun.com/repository/google' }
    // maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }

    //腾讯
    // maven { url 'https://mirrors.cloud.tencent.com/nexus/repository/maven-public/' }
}

gradle.settingsEvaluated { settings ->
    // 添加内容到settings.gradle
    try {
        if(!settings.pluginManagement.repositories.isEmpty()) {
            settings.pluginManagement {
                repositories repoConfig
            }
        }
    }catch (Throwable ignored){
    }
    
    try {
        if(!settings.dependencyResolutionManagement.repositories.isEmpty()) {
            settings.dependencyResolutionManagement {
                repositories repoConfig
            }
        }
    }catch (Throwable ignored){
    }
}


allprojects {
    try {
        if(!buildscript.repositories.isEmpty()) {
            buildscript {
                repositories repoConfig
            }
        }
    }catch (Throwable ignored){
    }

    try {
        if(!repositories.isEmpty()) {
            repositories repoConfig
        }
    }catch (Throwable ignored){
    }
}

杀掉gradle进程重新sync或者直接编译,OK