Do not suggest to load gradle.kts configurations after project reopening
For projects with distributionType=WRAPPED Workaround for KT-40394 The original problem is that GradleInstallationManager.resolveGradleVersion returns null is case of distributionType=WRAPPED ^KT-40394 Fixed
This commit is contained in:
+7
-1
@@ -11,6 +11,7 @@ import com.intellij.diff.util.DiffUtil
|
|||||||
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.actionSystem.CommonDataKeys
|
import com.intellij.openapi.actionSystem.CommonDataKeys
|
||||||
|
import com.intellij.openapi.components.ServiceManager
|
||||||
import com.intellij.openapi.editor.Editor
|
import com.intellij.openapi.editor.Editor
|
||||||
import com.intellij.openapi.externalSystem.importing.ImportSpecBuilder
|
import com.intellij.openapi.externalSystem.importing.ImportSpecBuilder
|
||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemUtil
|
import com.intellij.openapi.externalSystem.util.ExternalSystemUtil
|
||||||
@@ -19,6 +20,7 @@ import com.intellij.openapi.project.Project
|
|||||||
import com.intellij.openapi.util.registry.Registry
|
import com.intellij.openapi.util.registry.Registry
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import com.intellij.testFramework.LightVirtualFileBase
|
import com.intellij.testFramework.LightVirtualFileBase
|
||||||
|
import org.gradle.util.GradleVersion
|
||||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||||
import org.jetbrains.kotlin.idea.KotlinIcons
|
import org.jetbrains.kotlin.idea.KotlinIcons
|
||||||
import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle
|
import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle
|
||||||
@@ -28,6 +30,7 @@ import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRoot
|
|||||||
import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager
|
import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager
|
||||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionProvider
|
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionProvider
|
||||||
import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
|
||||||
|
import org.jetbrains.plugins.gradle.service.GradleInstallationManager
|
||||||
import org.jetbrains.plugins.gradle.service.project.GradlePartialResolverPolicy
|
import org.jetbrains.plugins.gradle.service.project.GradlePartialResolverPolicy
|
||||||
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
|
||||||
@@ -131,5 +134,8 @@ class LoadConfigurationAction : AnAction(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getGradleVersion(project: Project, settings: GradleProjectSettings): String {
|
fun getGradleVersion(project: Project, settings: GradleProjectSettings): String {
|
||||||
return settings.resolveGradleVersion().version
|
return GradleInstallationManager.getGradleVersion(
|
||||||
|
ServiceManager.getService(GradleInstallationManager::class.java)
|
||||||
|
.getGradleHome(project, settings.externalProjectPath)?.path
|
||||||
|
) ?: GradleVersion.current().version
|
||||||
}
|
}
|
||||||
+14
-17
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.idea.scripting.gradle
|
|||||||
import com.intellij.openapi.application.impl.LaterInvocator
|
import com.intellij.openapi.application.impl.LaterInvocator
|
||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||||
import com.intellij.openapi.vfs.LocalFileSystem
|
import com.intellij.openapi.vfs.LocalFileSystem
|
||||||
import com.intellij.openapi.vfs.VfsUtil
|
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import com.intellij.psi.PsiFile
|
import com.intellij.psi.PsiFile
|
||||||
import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager
|
import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager
|
||||||
@@ -42,21 +41,11 @@ open class GradleScriptListenerTest : AbstractScriptConfigurationLoadingTest() {
|
|||||||
override fun setUpTestProject() {
|
override fun setUpTestProject() {
|
||||||
val rootDir = "idea/testData/script/definition/loading/gradle/"
|
val rootDir = "idea/testData/script/definition/loading/gradle/"
|
||||||
|
|
||||||
val settings: KtFile = addFileToProject(rootDir + GradleConstants.KOTLIN_DSL_SETTINGS_FILE_NAME)
|
val settings: KtFile = copyFromTestdataToProject(rootDir + GradleConstants.KOTLIN_DSL_SETTINGS_FILE_NAME)
|
||||||
val prop: PsiFile = addFileToProject(rootDir + "gradle.properties")
|
val prop: PsiFile = copyFromTestdataToProject(rootDir + "gradle.properties")
|
||||||
|
|
||||||
val gradleWrapperProperties = VfsUtil.virtualToIoFile(settings.virtualFile.parent)
|
val gradleCoreJar = createFileInProject("gradle/lib/gradle-core-1.0.0.jar")
|
||||||
.resolve("gradle/wrapper/gradle-wrapper.properties")
|
val gradleWrapperProperties = createFileInProject("gradle/wrapper/gradle-wrapper.properties")
|
||||||
gradleWrapperProperties.parentFile.mkdirs()
|
|
||||||
gradleWrapperProperties.writeText(
|
|
||||||
"""
|
|
||||||
distributionBase=GRADLE_USER_HOME
|
|
||||||
distributionPath=wrapper/dists
|
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-1.0.0-bin.zip
|
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
|
||||||
zipStorePath=wrapper/dists
|
|
||||||
""".trimIndent()
|
|
||||||
)
|
|
||||||
|
|
||||||
val buildGradleKts = File(rootDir).walkTopDown().find { it.name == GradleConstants.KOTLIN_DSL_SCRIPT_NAME }
|
val buildGradleKts = File(rootDir).walkTopDown().find { it.name == GradleConstants.KOTLIN_DSL_SCRIPT_NAME }
|
||||||
?: error("Couldn't find main script")
|
?: error("Couldn't find main script")
|
||||||
@@ -64,7 +53,8 @@ open class GradleScriptListenerTest : AbstractScriptConfigurationLoadingTest() {
|
|||||||
val build = (myFile as? KtFile) ?: error("")
|
val build = (myFile as? KtFile) ?: error("")
|
||||||
|
|
||||||
val newProjectSettings = GradleProjectSettings()
|
val newProjectSettings = GradleProjectSettings()
|
||||||
newProjectSettings.distributionType = DistributionType.DEFAULT_WRAPPED
|
newProjectSettings.gradleHome = gradleCoreJar.parentFile.parent
|
||||||
|
newProjectSettings.distributionType = DistributionType.LOCAL
|
||||||
newProjectSettings.externalProjectPath = settings.virtualFile.parent.path
|
newProjectSettings.externalProjectPath = settings.virtualFile.parent.path
|
||||||
ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID).linkProject(newProjectSettings)
|
ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID).linkProject(newProjectSettings)
|
||||||
|
|
||||||
@@ -76,11 +66,18 @@ open class GradleScriptListenerTest : AbstractScriptConfigurationLoadingTest() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private inline fun <reified T : Any> addFileToProject(file: String): T {
|
private inline fun <reified T : Any> copyFromTestdataToProject(file: String): T {
|
||||||
createFileAndSyncDependencies(File(file))
|
createFileAndSyncDependencies(File(file))
|
||||||
return (myFile as? T) ?: error("Couldn't configure project by $file")
|
return (myFile as? T) ?: error("Couldn't configure project by $file")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun createFileInProject(path: String): File {
|
||||||
|
val file = File(project.basePath, path)
|
||||||
|
file.parentFile.mkdirs()
|
||||||
|
file.createNewFile()
|
||||||
|
return file
|
||||||
|
}
|
||||||
|
|
||||||
fun testSectionChange() {
|
fun testSectionChange() {
|
||||||
assertAndLoadInitialConfiguration(testFiles.buildKts)
|
assertAndLoadInitialConfiguration(testFiles.buildKts)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user