From ffa9478d0c92834e63406f310351ff6af0a0e37e Mon Sep 17 00:00:00 2001 From: Vyacheslav Gerasimov Date: Wed, 1 Nov 2017 17:41:42 +0300 Subject: [PATCH] Configure Kotlin: add mavenCentral() to repositories Since kotlin stdlib depends on artifacts from mavenCentral() we should add it #KT-18719 Fixed --- .../configuration/GroovyBuildScriptManipulator.kt | 5 +++++ .../configuration/KotlinBuildScriptManipulator.kt | 15 +++++++++++++-- ...sedRepositoriesInBuildscriptBlock_after.gradle | 3 ++- .../gradle/eapVersion/build_after.gradle | 1 + .../gradle/m04Version/build_after.gradle | 1 + .../gradle/rcVersion/build_after.gradle | 1 + .../gsk/eap11Version/build_after.gradle.kts | 1 + .../gsk/eapVersion/build_after.gradle.kts | 1 + 8 files changed, 25 insertions(+), 3 deletions(-) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GroovyBuildScriptManipulator.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GroovyBuildScriptManipulator.kt index 7ac4fb716da..317a744d42f 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GroovyBuildScriptManipulator.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GroovyBuildScriptManipulator.kt @@ -67,6 +67,7 @@ class GroovyBuildScriptManipulator(private val groovyScript: GroovyFile) : Gradl groovyScript.getRepositoriesBlock().apply { addRepository(version) + addMavenCentralIfMissing() } groovyScript.getDependenciesBlock().apply { @@ -90,6 +91,7 @@ class GroovyBuildScriptManipulator(private val groovyScript: GroovyFile) : Gradl getBuildScriptRepositoriesBlock().apply { addRepository(version) + addMavenCentralIfMissing() } getBuildScriptDependenciesBlock().apply { @@ -211,6 +213,9 @@ class GroovyBuildScriptManipulator(private val groovyScript: GroovyFile) : Gradl return addLastExpressionInBlockIfNeeded(snippet) } + private fun GrClosableBlock.addMavenCentralIfMissing(): Boolean = + if (!isRepositoryConfigured(text)) addLastExpressionInBlockIfNeeded(MAVEN_CENTRAL) else false + private fun GrStatementOwner.getRepositoriesBlock() = getBlockOrCreate("repositories") private fun GrStatementOwner.getDependenciesBlock(): GrClosableBlock = getBlockOrCreate("dependencies") diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinBuildScriptManipulator.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinBuildScriptManipulator.kt index 18ae067e60a..030cb002f4e 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinBuildScriptManipulator.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinBuildScriptManipulator.kt @@ -39,7 +39,11 @@ class KotlinBuildScriptManipulator(private val kotlinScript: KtFile) : GradleBui addExpressionAfterIfMissing("$GSK_KOTLIN_VERSION_PROPERTY_NAME = \"$version\"", it) } - getRepositoriesBlock()?.addRepositoryIfMissing(version) + getRepositoriesBlock()?.apply { + addRepositoryIfMissing(version) + addMavenCentralIfMissing() + } + getDependenciesBlock()?.addPluginToClassPathIfMissing() } @@ -57,7 +61,11 @@ class KotlinBuildScriptManipulator(private val kotlinScript: KtFile) : GradleBui script?.blockExpression?.addDeclarationIfMissing("val $GSK_KOTLIN_VERSION_PROPERTY_NAME: String by extra", true) getApplyBlock()?.createPluginIfMissing(kotlinPluginName) getDependenciesBlock()?.addCompileStdlibIfMissing(stdlibArtifactName) - getRepositoriesBlock()?.addRepositoryIfMissing(version) + getRepositoriesBlock()?.apply { + addRepositoryIfMissing(version) + addMavenCentralIfMissing() + } + jvmTarget?.let { changeKotlinTaskParameter("jvmTarget", it, forTests = false) changeKotlinTaskParameter("jvmTarget", it, forTests = true) @@ -223,6 +231,9 @@ class KotlinBuildScriptManipulator(private val kotlinScript: KtFile) : GradleBui return addExpressionIfMissing(snippet) as? KtCallExpression } + private fun KtBlockExpression.addMavenCentralIfMissing(): KtCallExpression? = + if (!isRepositoryConfigured(text)) addExpressionIfMissing(MAVEN_CENTRAL) as? KtCallExpression else null + private fun KtBlockExpression.addPluginToClassPathIfMissing(): KtCallExpression? = addExpressionIfMissing(getKotlinGradlePluginClassPathSnippet()) as? KtCallExpression diff --git a/idea/testData/configuration/android-gradle/missedRepositoriesInBuildscriptBlock_after.gradle b/idea/testData/configuration/android-gradle/missedRepositoriesInBuildscriptBlock_after.gradle index 39e40e44f32..56940da13de 100644 --- a/idea/testData/configuration/android-gradle/missedRepositoriesInBuildscriptBlock_after.gradle +++ b/idea/testData/configuration/android-gradle/missedRepositoriesInBuildscriptBlock_after.gradle @@ -8,6 +8,7 @@ buildscript { maven { url 'http://oss.sonatype.org/content/repositories/snapshots' } + mavenCentral() } } apply plugin: 'android' @@ -35,4 +36,4 @@ dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } -// VERSION: $VERSION$ \ No newline at end of file +// VERSION: $VERSION$ diff --git a/idea/testData/configuration/gradle/eapVersion/build_after.gradle b/idea/testData/configuration/gradle/eapVersion/build_after.gradle index ab5ae03cf00..a2a7f49cd23 100644 --- a/idea/testData/configuration/gradle/eapVersion/build_after.gradle +++ b/idea/testData/configuration/gradle/eapVersion/build_after.gradle @@ -21,6 +21,7 @@ buildscript { maven { url 'http://dl.bintray.com/kotlin/kotlin-eap' } + mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" diff --git a/idea/testData/configuration/gradle/m04Version/build_after.gradle b/idea/testData/configuration/gradle/m04Version/build_after.gradle index 91603b37ba5..0a19c9c1da7 100644 --- a/idea/testData/configuration/gradle/m04Version/build_after.gradle +++ b/idea/testData/configuration/gradle/m04Version/build_after.gradle @@ -21,6 +21,7 @@ buildscript { maven { url 'http://dl.bintray.com/kotlin/kotlin-eap-1.1' } + mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" diff --git a/idea/testData/configuration/gradle/rcVersion/build_after.gradle b/idea/testData/configuration/gradle/rcVersion/build_after.gradle index ab5ae03cf00..a2a7f49cd23 100644 --- a/idea/testData/configuration/gradle/rcVersion/build_after.gradle +++ b/idea/testData/configuration/gradle/rcVersion/build_after.gradle @@ -21,6 +21,7 @@ buildscript { maven { url 'http://dl.bintray.com/kotlin/kotlin-eap' } + mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" diff --git a/idea/testData/configuration/gsk/eap11Version/build_after.gradle.kts b/idea/testData/configuration/gsk/eap11Version/build_after.gradle.kts index 29fe530f934..dd1ae4e4de4 100644 --- a/idea/testData/configuration/gsk/eap11Version/build_after.gradle.kts +++ b/idea/testData/configuration/gsk/eap11Version/build_after.gradle.kts @@ -9,6 +9,7 @@ buildscript { maven { setUrl("http://dl.bintray.com/kotlin/kotlin-eap-1.1") } + mavenCentral() } dependencies { classpath(kotlinModule("gradle-plugin", kotlin_version)) diff --git a/idea/testData/configuration/gsk/eapVersion/build_after.gradle.kts b/idea/testData/configuration/gsk/eapVersion/build_after.gradle.kts index 64a00af5cd8..ae541e4d683 100644 --- a/idea/testData/configuration/gsk/eapVersion/build_after.gradle.kts +++ b/idea/testData/configuration/gsk/eapVersion/build_after.gradle.kts @@ -8,6 +8,7 @@ buildscript { maven { setUrl("http://dl.bintray.com/kotlin/kotlin-eap") } + mavenCentral() } dependencies { classpath(kotlinModule("gradle-plugin", kotlin_version))