Skip to content

Instantly share code, notes, and snippets.

@CaiJingLong
Forked from AlexV525/init.gradle.kts
Last active July 31, 2023 02:08
Show Gist options
  • Save CaiJingLong/d7d71d3fdebf6ef358374dc74d305b00 to your computer and use it in GitHub Desktop.
Save CaiJingLong/d7d71d3fdebf6ef358374dc74d305b00 to your computer and use it in GitHub Desktop.
Mirroring Gradle repositories
// Thanks to: https://gist.github.com/bennyhuo/af7c43cc4831661193605e124f539942
val localMavenUrl = "http://localhost:8081/repository/maven-public/"
val urlMappings = mapOf(
"https://dl.google.com/dl/android/maven2" to localMavenUrl,
"https://repo.maven.apache.org/maven2" to localMavenUrl,
"https://plugins.gradle.org/m2" to localMavenUrl,
)
fun RepositoryHandler.mirroring() {
all {
if (this is MavenArtifactRepository) {
val originalUrl = this.url.toString().removeSuffix("/")
urlMappings[originalUrl]?.let {
logger.lifecycle("Mirroring [$url] to [$it]")
this.setUrl(it)
this.setAllowInsecureProtocol(true)
}
}
}
}
gradle.allprojects {
buildscript {
repositories.mirroring()
}
repositories.mirroring()
}
gradle.beforeSettings {
pluginManagement.repositories.mirroring()
if (gradle.gradleVersion >= "6.8") {
val getDrm = settings.javaClass.getDeclaredMethod("getDependencyResolutionManagement")
val drm = getDrm.invoke(settings)
val getRepos = drm.javaClass.getDeclaredMethod("getRepositories")
val repos = getRepos.invoke(drm) as RepositoryHandler
repos.mirroring()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment