Skip to main content

Gradle

南大源采用了阿里云(central + jcenter + gradle-plugin),腾讯云(central+jcenter+google)和 maven central 官方的混合形式。 gradle 和 maven 使用的是同一个仓库,不过配置方法略有区别。

注意,南大镜像同时提供 gradle 二进制文件下载,将项目文件下的 gradle\wapper\gradle-wrapper.propertiesdistributionUrl 修改为 http://mirror.nju.edu.cn/gradle/gradle-[version].zip 即可,详细版本请参考链接

全局配置

配置当前登录用户使用南大源,如果未修改过 gradle 的默认配置文件位置,请如下操作:

  • linux 用户在终端中输入以下命令:

    mkdir ~/.gradle
    vim ~/.gradle/init.gradle
    
  • windows 用户在 powershell (或者pwsh中) 输入以下命令:

    mkdir ~/.gradle
    cd ~/.gradle
    notepad init.gradle
    

覆盖写入以下内容:

allprojects {
    buildscript {
        repositories {
            def NJU_REPOSITORY_URL = 'https://repo.nju.edu.cn/repository/maven-public/'
            all { ArtifactRepository repo ->
                if (repo instanceof MavenArtifactRepository) {
                    def url = repo.url.toString()
                    if (url.startsWith('https://repo1.maven.org/maven2')) {
                        project.logger.lifecycle "Repository ${repo.url} replaced by $NJU_REPOSITORY_URL."
                        remove repo
                    }
                    if (url.startsWith('https://jcenter.bintray.com/')) {
                        project.logger.lifecycle "Repository ${repo.url} deleted."
                        remove repo
                    }
                    if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
                        project.logger.lifecycle "Repository ${repo.url} deleted."
                        remove repo
                    }
                    if (url.contains('plugins.gradle.org/m2')) {
                        project.logger.lifecycle "Repository ${repo.url} deleted."
                        remove repo
                    }
                }
            }
            maven { url NJU_REPOSITORY_URL }
            mavenLocal()
        }
    }

    repositories {
        def NJU_REPOSITORY_URL = 'https://repo.nju.edu.cn/repository/maven-public/'
        all { ArtifactRepository repo ->
            if (repo instanceof MavenArtifactRepository) {
                def url = repo.url.toString()
                if (url.startsWith('https://repo1.maven.org/maven2')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $NJU_REPOSITORY_URL."
                    remove repo
                }
                if (url.startsWith('https://jcenter.bintray.com/')) {
                    project.logger.lifecycle "Repository ${repo.url} deleted."
                    remove repo
                }
                if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
                    project.logger.lifecycle "Repository ${repo.url} deleted."
                    remove repo
                }
                if (url.contains('plugins.gradle.org/m2')) {
                    project.logger.lifecycle "Repository ${repo.url} deleted."
                    remove repo
                }
            }
        }
        maven { url NJU_REPOSITORY_URL }
        mavenLocal()
    }
}

如果已经运行过 gradle ,请先执行一次 gradle --stop 命令关闭所有 gradle 的 daemon, 然后重新运行即可。

项目配置

如果只在某个项目中使用,则在项目的 build.gradle 中配置:

buildscript {
    repositories {
        maven { url 'https://repo.nju.edu.cn/repository/maven-public/' }
    }
}


plugins {
    ...[你需要用的 gradle 插件]
}

allprojects {
    repositories {
        maven { url 'https://repo.nju.edu.cn/repository/maven-public/' }
    }
}

注意这样可能有时候无法通过镜像下载部分 gradle 插件。