diff --git a/.idea/dictionaries/4u7.xml b/.idea/dictionaries/4u7.xml index 90f35a2b9cb..6daf4ae8e61 100644 --- a/.idea/dictionaries/4u7.xml +++ b/.idea/dictionaries/4u7.xml @@ -3,6 +3,7 @@ cidr foldable + redirector \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 340fcc0f444..5ebd527d5c7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,10 +15,10 @@ buildscript { kotlinBootstrapFrom(BootstrapOption.TeamCity("1.3.20-dev-564", onlySuccessBootstrap = false)) - repositories { + repositories.withRedirector(project) { bootstrapKotlinRepo?.let(::maven) maven("https://plugins.gradle.org/m2") - } + } // a workaround for kotlin compiler classpath in kotlin project: sometimes gradle substitutes // kotlin-stdlib external dependency with local project :kotlin-stdlib in kotlinCompilerClasspath configuration. @@ -261,13 +261,13 @@ allprojects { val mirrorRepo: String? = findProperty("maven.repository.mirror")?.toString() - repositories { + repositories.withRedirector(project) { intellijSdkRepo(project) androidDxJarRepo(project) mirrorRepo?.let(::maven) bootstrapKotlinRepo?.let(::maven) jcenter() - } + } configureJvmProject(javaHome!!, jvmTarget!!) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index ea4bfc3802a..c5c6d6bbcc2 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -1,11 +1,17 @@ buildscript { + val cacheRedirectorEnabled = findProperty("cacheRedirectorEnabled")?.toString()?.toBoolean() == true + val buildSrcKotlinVersion: String by extra(findProperty("buildSrc.kotlin.version")?.toString() ?: embeddedKotlinVersion) val buildSrcKotlinRepo: String? by extra(findProperty("buildSrc.kotlin.repo") as String?) extra["versions.shadow"] = "2.0.2" extra["versions.native-platform"] = "0.14" repositories { + if (cacheRedirectorEnabled) { + maven("https://cache-redirector.jetbrains.com/jcenter.bintray.com") + } + buildSrcKotlinRepo?.let { maven(url = it) } @@ -17,6 +23,8 @@ buildscript { } } +val cacheRedirectorEnabled = findProperty("cacheRedirectorEnabled")?.toString()?.toBoolean() == true + logger.info("buildSrcKotlinVersion: " + extra["buildSrcKotlinVersion"]) logger.info("buildSrc kotlin compiler version: " + org.jetbrains.kotlin.config.KotlinCompilerVersion.VERSION) logger.info("buildSrc stdlib version: " + KotlinVersion.CURRENT) @@ -58,8 +66,6 @@ val isTeamcityBuild = project.hasProperty("teamcity") || System.getenv("TEAMCITY val intellijUltimateEnabled by extra(project.getBooleanProperty("intellijUltimateEnabled") ?: isTeamcityBuild) val intellijSeparateSdks by extra(project.getBooleanProperty("intellijSeparateSdks") ?: false) -extra["intellijRepo"] = "https://www.jetbrains.com/intellij-repository" - extra["intellijReleaseType"] = if (extra["versions.intellijSdk"]?.toString()?.endsWith("SNAPSHOT") == true) "snapshots" else @@ -70,9 +76,14 @@ extra["versions.androidDxSources"] = "5.0.0_r2" extra["customDepsOrg"] = "kotlin.build.custom.deps" repositories { + if (cacheRedirectorEnabled) { + maven("https://cache-redirector.jetbrains.com/jcenter.bintray.com") + } + extra["buildSrcKotlinRepo"]?.let { maven(url = it) } + jcenter() } @@ -81,9 +92,7 @@ dependencies { compile("net.rubygrapefruit:native-platform-windows-amd64:${property("versions.native-platform")}") compile("net.rubygrapefruit:native-platform-windows-i386:${property("versions.native-platform")}") compile("com.jakewharton.dex:dex-method-list:3.0.0") - // TODO: adding the dep to the plugin breaks the build unexpectedly, resolve and uncomment -// compile("org.jetbrains.kotlin:kotlin-gradle-plugin:${rootProject.extra["bootstrap_kotlin_version"]}") - // Shadow plugin is used in many projects of the main build. Once it's no longer used in buildSrc, please move this dependency to the root project + compile("com.github.jengelman.gradle.plugins:shadow:${property("versions.shadow")}") compile("org.ow2.asm:asm-all:6.0_BETA") } diff --git a/buildSrc/gradle.properties b/buildSrc/gradle.properties index 0c115f51383..ff8b8f0996b 100644 --- a/buildSrc/gradle.properties +++ b/buildSrc/gradle.properties @@ -3,5 +3,7 @@ org.gradle.parallel=false org.gradle.configureondemand=false org.gradle.jvmargs=-Duser.country=US -Dkotlin.daemon.jvm.options=-Xmx1600m +cacheRedirectorEnabled=true + #buildSrc.kotlin.repo=https://jcenter.bintray.com #buildSrc.kotlin.version=1.1.50 diff --git a/buildSrc/gradle.properties.as31 b/buildSrc/gradle.properties.as31 index 5f8abd5de3c..7f980c78d78 100644 --- a/buildSrc/gradle.properties.as31 +++ b/buildSrc/gradle.properties.as31 @@ -3,6 +3,8 @@ org.gradle.parallel=false org.gradle.configureondemand=false org.gradle.jvmargs=-Duser.country=US -Dkotlin.daemon.jvm.options=-Xmx1600m +cacheRedirectorEnabled=true + #buildSrc.kotlin.repo=https://jcenter.bintray.com #buildSrc.kotlin.version=1.1.50 diff --git a/buildSrc/gradle.properties.as32 b/buildSrc/gradle.properties.as32 index 5f8abd5de3c..7f980c78d78 100644 --- a/buildSrc/gradle.properties.as32 +++ b/buildSrc/gradle.properties.as32 @@ -3,6 +3,8 @@ org.gradle.parallel=false org.gradle.configureondemand=false org.gradle.jvmargs=-Duser.country=US -Dkotlin.daemon.jvm.options=-Xmx1600m +cacheRedirectorEnabled=true + #buildSrc.kotlin.repo=https://jcenter.bintray.com #buildSrc.kotlin.version=1.1.50 diff --git a/buildSrc/gradle.properties.as33 b/buildSrc/gradle.properties.as33 index 5f8abd5de3c..7f980c78d78 100644 --- a/buildSrc/gradle.properties.as33 +++ b/buildSrc/gradle.properties.as33 @@ -3,6 +3,8 @@ org.gradle.parallel=false org.gradle.configureondemand=false org.gradle.jvmargs=-Duser.country=US -Dkotlin.daemon.jvm.options=-Xmx1600m +cacheRedirectorEnabled=true + #buildSrc.kotlin.repo=https://jcenter.bintray.com #buildSrc.kotlin.version=1.1.50 diff --git a/buildSrc/prepare-deps/intellij-sdk/build.gradle.kts b/buildSrc/prepare-deps/intellij-sdk/build.gradle.kts index 42672b5b9d6..37c6c68b2a8 100644 --- a/buildSrc/prepare-deps/intellij-sdk/build.gradle.kts +++ b/buildSrc/prepare-deps/intellij-sdk/build.gradle.kts @@ -7,9 +7,9 @@ import org.gradle.api.publish.ivy.internal.publisher.IvyDescriptorFileGenerator import java.io.File import org.gradle.internal.os.OperatingSystem +val cacheRedirectorEnabled = findProperty("cacheRedirectorEnabled")?.toString()?.toBoolean() == true val intellijUltimateEnabled: Boolean by rootProject.extra -val intellijRepo: String by rootProject.extra val intellijReleaseType: String by rootProject.extra val intellijVersion = rootProject.extra["versions.intellijSdk"] as String val androidStudioRelease = rootProject.findProperty("versions.androidStudioRelease") as String? @@ -56,8 +56,14 @@ repositories { } } } - maven { setUrl("$intellijRepo/$intellijReleaseType") } - maven { setUrl("https://plugins.jetbrains.com/maven") } + + if (cacheRedirectorEnabled) { + maven("https://cache-redirector.jetbrains.com/www.jetbrains.com/intellij-repository/$intellijReleaseType") + maven("https://cache-redirector.jetbrains.com/plugins.jetbrains.com/maven") + } + + maven("https://www.jetbrains.com/intellij-repository/$intellijReleaseType") + maven("https://plugins.jetbrains.com/maven") } val intellij by configurations.creating diff --git a/buildSrc/settings.gradle b/buildSrc/settings.gradle index 8b34b71f2e5..8321ef8ceb4 100644 --- a/buildSrc/settings.gradle +++ b/buildSrc/settings.gradle @@ -1,3 +1,15 @@ +pluginManagement { + repositories { + if (cacheRedirectorEnabled == 'true') { + maven { + url "https://cache-redirector.jetbrains.com/plugins.gradle.org/m2" + } + } + + gradlePluginPortal() + } +} + include "prepare-deps:android-dx", "prepare-deps:intellij-sdk" diff --git a/buildSrc/src/main/kotlin/jbCacheRedirector.kt b/buildSrc/src/main/kotlin/jbCacheRedirector.kt new file mode 100644 index 00000000000..7d8b934bb81 --- /dev/null +++ b/buildSrc/src/main/kotlin/jbCacheRedirector.kt @@ -0,0 +1,57 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +import org.gradle.api.Project +import org.gradle.api.artifacts.dsl.RepositoryHandler +import org.gradle.api.artifacts.repositories.MavenArtifactRepository +import java.net.URI + +// https://youtrack.jetbrains.com/issue/ADM-23180 +val mirroredUrls = listOf( + "https://dl.bintray.com/groovy/maven", + "https://dl.bintray.com/kotlin/kotlin-dev", + "https://dl.bintray.com/kotlin/kotlin-eap", + "https://dl.google.com/dl/android/maven2", + "https://dl.google.com/go", + "https://download.jetbrains.com", + "https://jcenter.bintray.com", + "https://jetbrains.bintray.com/dekaf", + "https://jetbrains.bintray.com/intellij-jdk", + "https://jetbrains.bintray.com/intellij-plugin-service", + "https://jetbrains.bintray.com/intellij-third-party-dependencies", + "https://jetbrains.bintray.com/markdown", + "https://jetbrains.bintray.com/teamcity-rest-client", + "https://jetbrains.bintray.com/test-discovery", + "https://jitpack.io", + "https://maven.exasol.com/artifactory/exasol-releases", + "https://plugins.gradle.org/m2", + "https://plugins.jetbrains.com/maven", + "https://repo.grails.org/grails/core", + "https://repo.jenkins-ci.org/releases", + "https://repo.spring.io/milestone", + "https://repo1.maven.org/maven2", + "https://services.gradle.org", + "https://www.jetbrains.com/intellij-repository", + "https://www.myget.org/F/intellij-go-snapshots/maven", + "https://www.myget.org/F/rd-snapshots/maven" +) + +fun URI.toCacheRedirectorUri() = URI("https://cache-redirector.jetbrains.com/$host/$path") + +fun RepositoryHandler.redirect() = filterIsInstance().forEach { repository -> + val uri = repository.url + if (uri.toString().trimEnd('/') in mirroredUrls) { + repository.url = uri.toCacheRedirectorUri() + } +} + +fun Project.cacheRedirectorEnabled(): Boolean = findProperty("cacheRedirectorEnabled")?.toString()?.toBoolean() == true + +fun RepositoryHandler.withRedirector(project: Project, configuration: RepositoryHandler.() -> Unit) { + configuration() + if (project.cacheRedirectorEnabled()) { + redirect() + } +} \ No newline at end of file diff --git a/compiler/psi/build.gradle.kts b/compiler/psi/build.gradle.kts index 568a29bc83c..93f95ebf3ee 100644 --- a/compiler/psi/build.gradle.kts +++ b/compiler/psi/build.gradle.kts @@ -9,7 +9,7 @@ plugins { id("jps-compatible") } -repositories { +repositories.withRedirector(project) { maven("https://jetbrains.bintray.com/intellij-third-party-dependencies") } diff --git a/gradle.properties b/gradle.properties index 6d3cf38c9e4..2b2390c96af 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,6 +3,8 @@ org.gradle.parallel=false org.gradle.configureondemand=false org.gradle.jvmargs=-Duser.country=US -Dkotlin.daemon.jvm.options=-Xmx1600m +cacheRedirectorEnabled=true + kotlin.compiler.effectSystemEnabled=true kotlin.compiler.newInferenceEnabled=true #maven.repository.mirror=http://repository.jetbrains.com/remote-repos/ diff --git a/gradle.properties.as31 b/gradle.properties.as31 index 3b6606a9c61..bfe4cbcb49e 100644 --- a/gradle.properties.as31 +++ b/gradle.properties.as31 @@ -3,6 +3,8 @@ org.gradle.parallel=false org.gradle.configureondemand=false org.gradle.jvmargs=-Duser.country=US -Dkotlin.daemon.jvm.options=-Xmx1600m +cacheRedirectorEnabled=true + kotlin.compiler.effectSystemEnabled=true kotlin.compiler.newInferenceEnabled=true #maven.repository.mirror=http://repository.jetbrains.com/remote-repos/ diff --git a/gradle.properties.as32 b/gradle.properties.as32 index 3a5f9a11ea4..79f347b5f28 100644 --- a/gradle.properties.as32 +++ b/gradle.properties.as32 @@ -3,6 +3,8 @@ org.gradle.parallel=false org.gradle.configureondemand=false org.gradle.jvmargs=-Duser.country=US -Dkotlin.daemon.jvm.options=-Xmx1600m +cacheRedirectorEnabled=true + kotlin.compiler.effectSystemEnabled=true kotlin.compiler.newInferenceEnabled=true #maven.repository.mirror=http://repository.jetbrains.com/remote-repos/ diff --git a/gradle.properties.as33 b/gradle.properties.as33 index 3a5f9a11ea4..79f347b5f28 100644 --- a/gradle.properties.as33 +++ b/gradle.properties.as33 @@ -3,6 +3,8 @@ org.gradle.parallel=false org.gradle.configureondemand=false org.gradle.jvmargs=-Duser.country=US -Dkotlin.daemon.jvm.options=-Xmx1600m +cacheRedirectorEnabled=true + kotlin.compiler.effectSystemEnabled=true kotlin.compiler.newInferenceEnabled=true #maven.repository.mirror=http://repository.jetbrains.com/remote-repos/ diff --git a/idea/build.gradle.kts b/idea/build.gradle.kts index 11c9e4f1b87..a6e03876ba3 100644 --- a/idea/build.gradle.kts +++ b/idea/build.gradle.kts @@ -5,8 +5,8 @@ plugins { id("jps-compatible") } -repositories { - maven("https://dl.bintray.com/jetbrains/markdown") +repositories.withRedirector(project) { + maven("https://jetbrains.bintray.com/markdown") } dependencies { diff --git a/idea/build.gradle.kts.173 b/idea/build.gradle.kts.173 index a9b7fb3b2c9..c36ffc32100 100644 --- a/idea/build.gradle.kts.173 +++ b/idea/build.gradle.kts.173 @@ -5,8 +5,8 @@ plugins { id("jps-compatible") } -repositories { - maven("https://dl.bintray.com/jetbrains/markdown") +repositories.withRedirector(project) { + maven("https://jetbrains.bintray.com/markdown") } dependencies { diff --git a/idea/build.gradle.kts.as31 b/idea/build.gradle.kts.as31 index a24bce838f9..519ba238a8f 100644 --- a/idea/build.gradle.kts.as31 +++ b/idea/build.gradle.kts.as31 @@ -5,8 +5,8 @@ plugins { id("jps-compatible") } -repositories { - maven("https://dl.bintray.com/jetbrains/markdown") +repositories.withRedirector(project) { + maven("https://jetbrains.bintray.com/markdown") } dependencies { diff --git a/idea/build.gradle.kts.as32 b/idea/build.gradle.kts.as32 index ee518842a9b..14d84220a30 100644 --- a/idea/build.gradle.kts.as32 +++ b/idea/build.gradle.kts.as32 @@ -5,8 +5,8 @@ plugins { id("jps-compatible") } -repositories { - maven("https://dl.bintray.com/jetbrains/markdown") +repositories.withRedirector(project) { + maven("https://jetbrains.bintray.com/markdown") } dependencies { diff --git a/idea/build.gradle.kts.as33 b/idea/build.gradle.kts.as33 index f76ba8edd1c..e7f3bc5e079 100644 --- a/idea/build.gradle.kts.as33 +++ b/idea/build.gradle.kts.as33 @@ -5,8 +5,8 @@ plugins { id("jps-compatible") } -repositories { - maven("https://dl.bintray.com/jetbrains/markdown") +repositories.withRedirector(project) { + maven("https://jetbrains.bintray.com/markdown") } dependencies { diff --git a/plugins/imports-dumper/build.gradle.kts b/plugins/imports-dumper/build.gradle.kts index 33878fa1979..0ff6436f4dc 100644 --- a/plugins/imports-dumper/build.gradle.kts +++ b/plugins/imports-dumper/build.gradle.kts @@ -6,8 +6,8 @@ plugins { id("jps-compatible") } -repositories { - maven("http://dl.bintray.com/kotlin/kotlinx") +repositories.withRedirector(project) { + maven("https://dl.bintray.com/kotlin/kotlinx") } val kotlinxSerializationVersion = "0.4.2" diff --git a/prepare/idea-plugin/build.gradle.kts b/prepare/idea-plugin/build.gradle.kts index 09ee5e0afd6..1563181a92d 100644 --- a/prepare/idea-plugin/build.gradle.kts +++ b/prepare/idea-plugin/build.gradle.kts @@ -8,7 +8,7 @@ plugins { } repositories { - maven("https://dl.bintray.com/jetbrains/markdown") + maven("https://jetbrains.bintray.com/markdown") } // Do not rename, used in JPS importer diff --git a/settings.gradle b/settings.gradle index 516728a3d72..6e67e0c3942 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,6 +8,11 @@ pluginManagement { } gradlePluginPortal() } + + if (cacheRedirectorEnabled == 'true') { + println("cache-redirector is enabled for pluginManagement") + JbCacheRedirectorKt.redirect(repositories) + } } // modules