From 5fe47ffbecb04f377a5133975240611e3b16051f Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Mon, 15 Jun 2020 19:24:25 +0300 Subject: [PATCH] Workaround for bug in GradleInstallationManager.resolveGradleVersion() Wrong gradle version when wrapper is used fixed in 201 --- .../kotlin/idea/scripting/gradle/GradleImportHelper.kt | 10 ++++++++++ .../idea/scripting/gradle/GradleImportHelper.kt.201 | 4 ++++ .../scripting/gradle/roots/GradleBuildRootsManager.kt | 4 ++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt index b31caa5f9a3..8fbda589549 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt @@ -11,6 +11,7 @@ import com.intellij.notification.* import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.application.ApplicationManager +import com.intellij.openapi.components.ServiceManager import com.intellij.openapi.externalSystem.importing.ImportSpecBuilder import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil import com.intellij.openapi.externalSystem.util.ExternalSystemUtil @@ -24,6 +25,7 @@ import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager import org.jetbrains.kotlin.idea.util.application.getServiceSafe import org.jetbrains.kotlin.psi.UserDataProperty +import org.jetbrains.plugins.gradle.service.GradleInstallationManager import org.jetbrains.plugins.gradle.settings.GradleProjectSettings import org.jetbrains.plugins.gradle.util.GradleConstants @@ -120,4 +122,12 @@ private class ScriptConfigurationChangedNotification(val project: Project) : runPartialGradleImport(project) } } +} + +fun getGradleVersion(project: Project, settings: GradleProjectSettings): String { + // workaround for bug in settings.resolveGradleVersion().version (fixed in 201) + return GradleInstallationManager.getGradleVersion( + ServiceManager.getService(GradleInstallationManager::class.java) + .getGradleHome(project, settings.externalProjectPath)?.path + ) ?: GradleVersion.current().version } \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt.201 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt.201 index 48ee9f21ae6..d4c8d257505 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt.201 +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt.201 @@ -104,4 +104,8 @@ class LoadConfigurationAction : AnAction( && isGradleKotlinScript(it) } } +} + +fun getGradleVersion(project: Project, settings: GradleProjectSettings): String { + return settings.resolveGradleVersion().version } \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt index 7254dd72d31..903fe87eefa 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/roots/GradleBuildRootsManager.kt @@ -273,7 +273,7 @@ class GradleBuildRootsManager(val project: Project) : GradleBuildRootsLocator(), val actualSettings = getGradleProjectSettings(workingDir) val buildRoot = getBuildRootByWorkingDir(workingDir) - val version = gradleVersion ?: actualSettings?.resolveGradleVersion()?.version + val version = gradleVersion ?: actualSettings?.let { getGradleVersion(project, it) } return when { buildRoot != null -> { when { @@ -302,7 +302,7 @@ class GradleBuildRootsManager(val project: Project) : GradleBuildRootsLocator(), remove(rootPath) return null } else { - val gradleVersion = version ?: settings.resolveGradleVersion().version + val gradleVersion = version ?: getGradleVersion(project, settings) val newRoot = loadLinkedRoot(settings, gradleVersion) add(newRoot) return newRoot