网上看到不少在init.gradle中的allprojects配置全局maven的代码。

但是在新版AndroidStudio的gradle.kts模板中(或高版本gradle),想要不修改直接使用是不行的,会抛出如下错误。

Build was configured to prefer settings repositories over project repositories but repository 'maven' was added by build file 'init.gradle'

原因出在项目的settings.gradle中默认设置了:

repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)

改成以下代码就行了:

repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)

但是这样每个新项目都要修改就很麻烦。

此处提供init.gradle.kts,能够做到无感配置全局maven,放置在<用户目录>/.gradle/下即可生效。

@file:Suppress("UnstableApiUsage")

object AliYunMaven {
    const val CENTRAL = "https://maven.aliyun.com/repository/central/"
    const val CENTRAL_JCENTER = "https://maven.aliyun.com/repository/public/"
    const val GOOGLE = "https://maven.aliyun.com/repository/google/"
    const val GRADLE_PLUGIN = "https://maven.aliyun.com/repository/gradle-plugin/"
    const val APACHE_SNAPSHOTS = "https://maven.aliyun.com/repository/apache-snapshots/"
}

settingsEvaluated {
    pluginManagement {
        repositories {
            clear()
            maven { url = uri(AliYunMaven.CENTRAL) }
            maven { url = uri(AliYunMaven.CENTRAL_JCENTER) }
            maven { url = uri(AliYunMaven.GOOGLE) }
            maven { url = uri(AliYunMaven.GRADLE_PLUGIN) }
            maven { url = uri(AliYunMaven.APACHE_SNAPSHOTS) }
            google()
            mavenCentral()
            gradlePluginPortal()
        }
    }
    dependencyResolutionManagement {
        repositories {
            clear()
            maven { url = uri(AliYunMaven.CENTRAL) }
            maven { url = uri(AliYunMaven.CENTRAL_JCENTER) }
            maven { url = uri(AliYunMaven.GOOGLE) }
            maven { url = uri(AliYunMaven.APACHE_SNAPSHOTS) }
            google()
            mavenCentral()
        }
    }
}