fun RepositoryHandler.enableMirror() {
all {
if (this is MavenArtifactRepository) {
val originalUrl = this.url.toString().removeSuffix("/")
urlMappings[originalUrl]?.let {
logger.lifecycle("Repository[$url] is mirrored to $it")
this.setUrl(it)
}
}
}
}
val urlMappings = mapOf(
"https://repo.maven.apache.org/maven2" to "https://mirrors.tencent.com/nexus/repository/maven-public/",
"https://dl.google.com/dl/android/maven2" to "https://mirrors.tencent.com/nexus/repository/maven-public/",
"https://plugins.gradle.org/m2" to "https://mirrors.tencent.com/nexus/repository/gradle-plugins/"
)
gradle.allprojects {
buildscript {
repositories.enableMirror()
}
repositories.enableMirror()
}
gradle.beforeSettings {
pluginManagement.repositories.enableMirror()
dependencyResolutionManagement.repositories.enableMirror()
}
3条答案
按热度按时间xbp102n01#
您可以定义自定义存储库,例如:
字符串
如果要跨项目共享此定义,请将其移动到init script
wfsdck302#
我们有一个内部Artifactory仓库,它配置了库和插件、发布版本和快照版本的单独路径。作为
~/.m2/settings.xml
的等价物,我使用了下面的~/.gradle/init.gradle
文件:字符串
buildscript
块指的是你构建中使用的gradle插件的搜索位置。repositories
块指的是你项目的依赖项的搜索位置。mavenLocal()
是指本地文件系统存储库~/.m2/repository
。更多信息:
egmofgnx3#
Gradle为maven仓库设置镜像的最佳方法是修改init.gradle或init. gradle. kts中的url。
例如,我想把mavenCentral()镜像到'https://mirrors.tencent.com/nexus/repository/maven-public/',把gradlePluginPortal()镜像到'https://mirrors.tencent.com/nexus/repository/gradle-plugins/',只要把代码放在
<UserDir>/.gradle/init.gradle.kts
中即可:字符串
它将由您设备上的每个本地项目加载。不再修改项目的源代码。