Workaround for bug in GradleInstallationManager.resolveGradleVersion()

Wrong gradle version when wrapper is used
fixed in 201
This commit is contained in:
Natalia Selezneva
2020-06-15 19:24:25 +03:00
parent 7a47994498
commit 5fe47ffbec
3 changed files with 16 additions and 2 deletions
@@ -11,6 +11,7 @@ import com.intellij.notification.*
import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.externalSystem.importing.ImportSpecBuilder import com.intellij.openapi.externalSystem.importing.ImportSpecBuilder
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
import com.intellij.openapi.externalSystem.util.ExternalSystemUtil 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.scripting.gradle.roots.GradleBuildRootsManager
import org.jetbrains.kotlin.idea.util.application.getServiceSafe import org.jetbrains.kotlin.idea.util.application.getServiceSafe
import org.jetbrains.kotlin.psi.UserDataProperty 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.settings.GradleProjectSettings
import org.jetbrains.plugins.gradle.util.GradleConstants import org.jetbrains.plugins.gradle.util.GradleConstants
@@ -121,3 +123,11 @@ private class ScriptConfigurationChangedNotification(val project: 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
}
@@ -105,3 +105,7 @@ class LoadConfigurationAction : AnAction(
} }
} }
} }
fun getGradleVersion(project: Project, settings: GradleProjectSettings): String {
return settings.resolveGradleVersion().version
}
@@ -273,7 +273,7 @@ class GradleBuildRootsManager(val project: Project) : GradleBuildRootsLocator(),
val actualSettings = getGradleProjectSettings(workingDir) val actualSettings = getGradleProjectSettings(workingDir)
val buildRoot = getBuildRootByWorkingDir(workingDir) val buildRoot = getBuildRootByWorkingDir(workingDir)
val version = gradleVersion ?: actualSettings?.resolveGradleVersion()?.version val version = gradleVersion ?: actualSettings?.let { getGradleVersion(project, it) }
return when { return when {
buildRoot != null -> { buildRoot != null -> {
when { when {
@@ -302,7 +302,7 @@ class GradleBuildRootsManager(val project: Project) : GradleBuildRootsLocator(),
remove(rootPath) remove(rootPath)
return null return null
} else { } else {
val gradleVersion = version ?: settings.resolveGradleVersion().version val gradleVersion = version ?: getGradleVersion(project, settings)
val newRoot = loadLinkedRoot(settings, gradleVersion) val newRoot = loadLinkedRoot(settings, gradleVersion)
add(newRoot) add(newRoot)
return newRoot return newRoot