全局修改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