diff --git a/plugins/kotlin/gradle/code-insight-common/kotlin.gradle.code-insight-common.iml b/plugins/kotlin/gradle/code-insight-common/kotlin.gradle.code-insight-common.iml
index 0cd5be5c9554..efd181b501ca 100644
--- a/plugins/kotlin/gradle/code-insight-common/kotlin.gradle.code-insight-common.iml
+++ b/plugins/kotlin/gradle/code-insight-common/kotlin.gradle.code-insight-common.iml
@@ -40,6 +40,5 @@
-
\ No newline at end of file
diff --git a/plugins/kotlin/gradle/code-insight-common/src/org/jetbrains/kotlin/idea/gradleCodeInsightCommon/KotlinWithGradleConfigurator.kt b/plugins/kotlin/gradle/code-insight-common/src/org/jetbrains/kotlin/idea/gradleCodeInsightCommon/KotlinWithGradleConfigurator.kt
index d4b2a2522886..9829a4aa83cf 100644
--- a/plugins/kotlin/gradle/code-insight-common/src/org/jetbrains/kotlin/idea/gradleCodeInsightCommon/KotlinWithGradleConfigurator.kt
+++ b/plugins/kotlin/gradle/code-insight-common/src/org/jetbrains/kotlin/idea/gradleCodeInsightCommon/KotlinWithGradleConfigurator.kt
@@ -28,9 +28,7 @@ import com.intellij.platform.ide.progress.withModalProgress
import com.intellij.platform.util.progress.reportSequentialProgress
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
-import com.intellij.psi.util.childrenOfType
import org.gradle.util.GradleVersion
-import org.jetbrains.annotations.ApiStatus
import org.jetbrains.annotations.Nls
import org.jetbrains.annotations.NonNls
import org.jetbrains.kotlin.config.ApiVersion
@@ -39,7 +37,6 @@ import org.jetbrains.kotlin.idea.base.projectStructure.ModuleSourceRootGroup
import org.jetbrains.kotlin.idea.base.projectStructure.toModuleGroup
import org.jetbrains.kotlin.idea.compiler.configuration.IdeKotlinVersion
import org.jetbrains.kotlin.idea.configuration.*
-import org.jetbrains.kotlin.idea.core.util.toPsiFile
import org.jetbrains.kotlin.idea.extensions.gradle.KotlinGradleConstants.GRADLE_PLUGIN_ID
import org.jetbrains.kotlin.idea.extensions.gradle.KotlinGradleConstants.GROUP_ID
import org.jetbrains.kotlin.idea.facet.getRuntimeLibraryVersion
@@ -55,9 +52,6 @@ import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.tools.projectWizard.compatibility.KotlinGradleCompatibilityStore
import org.jetbrains.plugins.gradle.settings.GradleSettings
-import org.toml.lang.psi.TomlFile
-import org.toml.lang.psi.TomlInlineTable
-import org.toml.lang.psi.TomlTable
abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
@@ -651,8 +645,6 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
@NonNls
const val CLASSPATH = "classpath \"$GROUP_ID:$GRADLE_PLUGIN_ID:\$kotlin_version\""
- private const val KOTLIN_GRADLE_PLUGIN_ID = "org.jetbrains.kotlin:kotlin-gradle-plugin"
-
private fun getAllConfigurableKotlinVersions(): List {
return KotlinGradleCompatibilityStore.allKotlinVersions()
}
@@ -688,31 +680,6 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
return remainingKotlinVersions.maxOrNull()
}
- /**
- * Returns if there is a Kotlin Gradle Plugin version defined in the Gradle version catalog
- * and that version is used in the build script of the buildSrc folder.
- */
- @ApiStatus.Internal
- fun usesVersionCatalogVersionInBuildSrc(project: Project): Boolean {
- val buildSrcModule = project.modules.firstOrNull { it.name.endsWith(".buildSrc") } ?: return false
- val buildSrcBuildFile = buildSrcModule.getBuildScriptPsiFile() ?: return false
-
- val gradleFolder = project.guessProjectDir()?.findChild("gradle") ?: return false
- val tomlFile = gradleFolder.findChild("libs.versions.toml")?.toPsiFile(project) as? TomlFile ?: return false
-
- val libraryTable = tomlFile.childrenOfType().firstOrNull {
- it.header.key?.text == "libraries"
- } ?: return false
-
- val gradlePluginKey = libraryTable.entries.firstOrNull { entry ->
- val entryValue = entry.value as? TomlInlineTable ?: return@firstOrNull false
- val moduleEntry = entryValue.entries.firstOrNull { it.key.text == "module" } ?: return@firstOrNull false
- moduleEntry.value?.text?.contains(KOTLIN_GRADLE_PLUGIN_ID) == true
- }?.key?.text ?: return false
-
- return buildSrcBuildFile.text.contains(gradlePluginKey)
- }
-
/**
* Returns the defined Kotlin version in the pluginManagement block in the settings.gradle file for the [module].
* Returns null if the version is not defined in the settings.gradle file.
diff --git a/plugins/kotlin/project-wizard/gradle/kotlin.project-wizard.gradle.iml b/plugins/kotlin/project-wizard/gradle/kotlin.project-wizard.gradle.iml
index f964a6c55249..ffc29ee257bd 100644
--- a/plugins/kotlin/project-wizard/gradle/kotlin.project-wizard.gradle.iml
+++ b/plugins/kotlin/project-wizard/gradle/kotlin.project-wizard.gradle.iml
@@ -26,5 +26,6 @@
+
\ No newline at end of file
diff --git a/plugins/kotlin/project-wizard/gradle/resources/kotlin.project-wizard.gradle.xml b/plugins/kotlin/project-wizard/gradle/resources/kotlin.project-wizard.gradle.xml
index 4e2a7e0fa2c2..d35836a606d3 100644
--- a/plugins/kotlin/project-wizard/gradle/resources/kotlin.project-wizard.gradle.xml
+++ b/plugins/kotlin/project-wizard/gradle/resources/kotlin.project-wizard.gradle.xml
@@ -2,6 +2,7 @@
+
diff --git a/plugins/kotlin/project-wizard/gradle/src/org/jetbrains/kotlin/tools/projectWizard/gradle/GradleKotlinNewProjectWizard.kt b/plugins/kotlin/project-wizard/gradle/src/org/jetbrains/kotlin/tools/projectWizard/gradle/GradleKotlinNewProjectWizard.kt
index 0b6a98ed7de9..dd207aedf499 100644
--- a/plugins/kotlin/project-wizard/gradle/src/org/jetbrains/kotlin/tools/projectWizard/gradle/GradleKotlinNewProjectWizard.kt
+++ b/plugins/kotlin/project-wizard/gradle/src/org/jetbrains/kotlin/tools/projectWizard/gradle/GradleKotlinNewProjectWizard.kt
@@ -22,6 +22,7 @@ import com.intellij.openapi.observable.util.and
import com.intellij.openapi.observable.util.bindBooleanStorage
import com.intellij.openapi.observable.util.equalsTo
import com.intellij.openapi.project.Project
+import com.intellij.openapi.project.guessProjectDir
import com.intellij.openapi.project.modules
import com.intellij.openapi.projectRoots.JavaSdk
import com.intellij.openapi.ui.ValidationInfo
@@ -29,6 +30,7 @@ import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.vfs.findDocument
import com.intellij.openapi.vfs.findPsiFile
import com.intellij.psi.PsiDocumentManager
+import com.intellij.psi.util.childrenOfType
import com.intellij.ui.UIBundle
import com.intellij.ui.dsl.builder.Panel
import com.intellij.ui.dsl.builder.bindSelected
@@ -38,8 +40,10 @@ import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.idea.base.projectStructure.ModuleSourceRootGroup
import org.jetbrains.kotlin.idea.base.projectStructure.ModuleSourceRootMap
import org.jetbrains.kotlin.idea.compiler.configuration.IdeKotlinVersion
+import org.jetbrains.kotlin.idea.core.util.toPsiFile
import org.jetbrains.kotlin.idea.gradleCodeInsightCommon.GradleBuildScriptSupport
import org.jetbrains.kotlin.idea.gradleCodeInsightCommon.KotlinWithGradleConfigurator
+import org.jetbrains.kotlin.idea.gradleCodeInsightCommon.getBuildScriptPsiFile
import org.jetbrains.kotlin.idea.gradleJava.kotlinGradlePluginVersion
import org.jetbrains.kotlin.tools.projectWizard.*
import org.jetbrains.kotlin.tools.projectWizard.BuildSystemKotlinNewProjectWizard.Companion.DEFAULT_KOTLIN_VERSION
@@ -64,9 +68,14 @@ import org.jetbrains.plugins.gradle.service.project.wizard.AbstractGradleModuleB
import org.jetbrains.plugins.gradle.service.project.wizard.GradleNewProjectWizardStep
import org.jetbrains.plugins.gradle.util.GradleConstants.KOTLIN_DSL_SCRIPT_NAME
import org.jetbrains.plugins.gradle.util.GradleConstants.KOTLIN_DSL_SETTINGS_FILE_NAME
+import org.toml.lang.psi.TomlFile
+import org.toml.lang.psi.TomlInlineTable
+import org.toml.lang.psi.TomlTable
private const val GENERATE_SINGLE_MODULE_PROPERTY_NAME: String = "NewProjectWizard.generateSingleModule"
+private const val KOTLIN_GRADLE_PLUGIN_ID = "org.jetbrains.kotlin:kotlin-gradle-plugin"
+
private val MIN_GRADLE_VERSION_BUILD_SRC = GradleVersion.version("8.2")
private class GradleKotlinModuleBuilder : AbstractGradleModuleBuilder()
@@ -295,9 +304,29 @@ internal class GradleKotlinNewProjectWizard : BuildSystemKotlinNewProjectWizard
return KotlinWithGradleConfigurator.getPluginManagementVersion(parentModule)?.parsedVersion
}
- private fun usesVersionCatalogVersion(project: Project): Boolean {
+ /**
+ * Returns if there is a Kotlin Gradle Plugin version defined in the Gradle version catalog
+ * and that version is used in the build script of the buildSrc folder.
+ */
+ private fun usesVersionCatalogVersionInBuildSrc(project: Project): Boolean {
if (isCreatingNewRootModule()) return false
- return KotlinWithGradleConfigurator.usesVersionCatalogVersionInBuildSrc(project)
+ val buildSrcModule = project.modules.firstOrNull { it.name.endsWith(".buildSrc") } ?: return false
+ val buildSrcBuildFile = buildSrcModule.getBuildScriptPsiFile() ?: return false
+
+ val gradleFolder = project.guessProjectDir()?.findChild("gradle") ?: return false
+ val tomlFile = gradleFolder.findChild("libs.versions.toml")?.toPsiFile(project) as? TomlFile ?: return false
+
+ val libraryTable = tomlFile.childrenOfType().firstOrNull {
+ it.header.key?.text == "libraries"
+ } ?: return false
+
+ val gradlePluginKey = libraryTable.entries.firstOrNull { entry ->
+ val entryValue = entry.value as? TomlInlineTable ?: return@firstOrNull false
+ val moduleEntry = entryValue.entries.firstOrNull { it.key.text == "module" } ?: return@firstOrNull false
+ moduleEntry.value?.text?.contains(KOTLIN_GRADLE_PLUGIN_ID) == true
+ }?.key?.text ?: return false
+
+ return buildSrcBuildFile.text.contains(gradlePluginKey)
}
override fun setupProject(project: Project) {
@@ -320,7 +349,7 @@ internal class GradleKotlinNewProjectWizard : BuildSystemKotlinNewProjectWizard
withKotlinJvmPlugin(kotlinVersionToUse.takeUnless {
pluginManagementVersion != null || // uses the version from pluginManagement
parentKotlinVersion != null || // uses the version from parent
- usesVersionCatalogVersion(project) // uses the version from the version catalog
+ usesVersionCatalogVersionInBuildSrc(project) // uses the version from the version catalog
})
withKotlinTest()