Anxin 不乱于心,不困于情,不畏将来,不念过往,如此,安好.

全局修改Gradle Maven 仓库地址

2018-01-25

全局修改Gradle Maven 仓库地址(使用自己的仓库和云仓库)

来一张图吧

全局修改Gradle Maven 仓库地址

最近想自己公司写些demo,上传到GitHub上但是在公司有自己的maven,而且回家之后clone下来还要修改,如果不小心把修改的提交 上去,到公司pull下来还要再次修改url。


    repositories {
        maven{ url 'http://***.****.****'}
    }

来回修改这个可谓是相当的麻烦,现在终于找到可以不去修改保持build.gradle不动


buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
    
}


保持原来的不变,只需新建个init.gradle脚本在USER_HOME/.gradle/


apply plugin:EnterpriseRepositoryPlugin

class EnterpriseRepositoryPlugin implements Plugin<Gradle> {

    private static String ENTERPRISE_REPOSITORY_URL = "https://repo.gradle.org/gradle/repo"

    void apply(Gradle gradle) {
        // ONLY USE ENTERPRISE REPO FOR DEPENDENCIES
        gradle.allprojects{ project ->
            project.repositories {

                // Remove all repositories not pointing to the enterprise repository url
                all { ArtifactRepository repo ->
                
                    if (repo instanceof MavenArtifactRepository && repo.url != null) {
                        def url = repo.url.toString()
                        if (!url.startsWith(ENTERPRISE_REPOSITORY_URL)) {
                            project.logger.lifecycle "Repository ${repo.url} removed. Only $ENTERPRISE_REPOSITORY_URL is allowed"
                            remove repo
                        }
                    }
                }

                // add the enterprise repository
                maven {
                    name "STANDARD_ENTERPRISE_REPO"
                    url ENTERPRISE_REPOSITORY_URL
                }
            }
        }
    }
    
    
}

上面ENTERPRISE_REPOSITORY_URL 这个就是maven url的具体的URL, if (!url.startsWith(ENTERPRISE_REPOSITORY_URL))可以根据自己项目的maven url增加判断逻辑

init.gradle文件其实是Gradle的初始化脚本(Initialization Scripts),也是运行时的全局配置。
更详细的介绍请参阅 gradle init scripts


Similar Posts

上一篇 markdown grammar

Share

Comments