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