diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 3ffbf5d92ca..97a4b4b3aa9 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -1522,6 +1522,12 @@ + + + + + + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt index 3dc2b082f23..b90bcdfb238 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/SimpleKotlinGradleIT.kt @@ -205,6 +205,7 @@ class SimpleKotlinGradleIT : KGPBaseTest() { @DisplayName("Proper Gradle plugin variant is used") @GradleTestVersions( + maxVersion = TestVersions.Gradle.G_8_2, additionalVersions = [ TestVersions.Gradle.G_7_0, TestVersions.Gradle.G_7_1, @@ -213,6 +214,8 @@ class SimpleKotlinGradleIT : KGPBaseTest() { TestVersions.Gradle.G_7_5, TestVersions.Gradle.G_7_6, TestVersions.Gradle.G_8_0, + TestVersions.Gradle.G_8_1, + TestVersions.Gradle.G_8_2, ], ) @GradleTest @@ -220,7 +223,8 @@ class SimpleKotlinGradleIT : KGPBaseTest() { project("kotlinProject", gradleVersion) { build("help") { val expectedVariant = when (gradleVersion) { - in GradleVersion.version(TestVersions.Gradle.G_8_1)..GradleVersion.version(TestVersions.Gradle.G_8_2) -> "gradle81" + GradleVersion.version(TestVersions.Gradle.G_8_2) -> "gradle82" + GradleVersion.version(TestVersions.Gradle.G_8_1) -> "gradle81" GradleVersion.version(TestVersions.Gradle.G_8_0) -> "gradle80" GradleVersion.version(TestVersions.Gradle.G_7_6) -> "gradle76" GradleVersion.version(TestVersions.Gradle.G_7_5) -> "gradle75" @@ -322,7 +326,6 @@ class SimpleKotlinGradleIT : KGPBaseTest() { } } - @Disabled @DisplayName("KT-63499: source sets conventions are not registered since Gradle 8.2") @GradleTestVersions(minVersion = TestVersions.Gradle.G_8_2) @GradleTest diff --git a/libraries/tools/kotlin-gradle-plugin/src/gradle82/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt b/libraries/tools/kotlin-gradle-plugin/src/gradle82/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt new file mode 100644 index 00000000000..febf83fa7e3 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/gradle82/kotlin/org/jetbrains/kotlin/gradle/plugin/PluginWrappers.kt @@ -0,0 +1,138 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle.plugin + +import com.android.build.gradle.BaseExtension +import org.gradle.api.Named +import org.gradle.api.NamedDomainObjectContainer +import org.gradle.api.Project +import org.gradle.api.file.SourceDirectorySet +import org.gradle.api.model.ObjectFactory +import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry +import javax.inject.Inject + +private const val PLUGIN_VARIANT_NAME = "gradle82" + +open class KotlinPluginWrapper @Inject constructor( + registry: ToolingModelBuilderRegistry +) : AbstractKotlinPluginWrapper(registry) { + + override val pluginVariant: String = PLUGIN_VARIANT_NAME + + override fun apply(project: Project) { + project.registerVariantImplementations() + super.apply(project) + } +} + +open class KotlinCommonPluginWrapper @Inject constructor( + registry: ToolingModelBuilderRegistry +) : AbstractKotlinCommonPluginWrapper(registry) { + + override val pluginVariant: String = PLUGIN_VARIANT_NAME + + override fun apply(project: Project) { + project.registerVariantImplementations() + super.apply(project) + } +} + +open class KotlinAndroidPluginWrapper @Inject constructor( + registry: ToolingModelBuilderRegistry +) : AbstractKotlinAndroidPluginWrapper(registry) { + + override val pluginVariant: String = PLUGIN_VARIANT_NAME + + override fun apply(project: Project) { + project.registerVariantImplementations() + super.apply(project) + } +} + +@Suppress("DEPRECATION_ERROR") +open class Kotlin2JsPluginWrapper @Inject constructor( + registry: ToolingModelBuilderRegistry +) : AbstractKotlin2JsPluginWrapper(registry) { + + override val pluginVariant: String = PLUGIN_VARIANT_NAME + + override fun apply(project: Project) { + project.registerVariantImplementations() + super.apply(project) + } +} + +open class KotlinMultiplatformPluginWrapper : AbstractKotlinMultiplatformPluginWrapper() { + + override val pluginVariant: String = PLUGIN_VARIANT_NAME + + override fun apply(project: Project) { + project.registerVariantImplementations() + super.apply(project) + } +} + +open class KotlinJsPluginWrapper : AbstractKotlinJsPluginWrapper() { + + override val pluginVariant: String = PLUGIN_VARIANT_NAME + + override fun apply(project: Project) { + project.registerVariantImplementations() + super.apply(project) + } +} + +open class KotlinPlatformJvmPlugin : KotlinPlatformImplementationPluginBase("jvm") { + override fun apply(project: Project) { + project.applyPlugin() + super.apply(project) + } +} + +open class KotlinPlatformJsPlugin : KotlinPlatformImplementationPluginBase("js") { + override fun apply(project: Project) { + @Suppress("DEPRECATION_ERROR") + project.applyPlugin() + super.apply(project) + } +} + +open class KotlinPlatformAndroidPlugin : KotlinPlatformImplementationPluginBase("android") { + override fun apply(project: Project) { + project.applyPlugin() + super.apply(project) + } + + override fun namedSourceSetsContainer(project: Project): NamedDomainObjectContainer<*> = + (project.extensions.getByName("android") as BaseExtension).sourceSets + + override fun addCommonSourceSetToPlatformSourceSet(commonSourceSet: Named, platformProject: Project) { + val androidExtension = platformProject.extensions.getByName("android") as BaseExtension + val androidSourceSet = androidExtension.sourceSets.findByName(commonSourceSet.name) ?: return + val kotlinSourceSet = androidSourceSet.getExtension(KOTLIN_DSL_NAME) + ?: return + kotlinSourceSet.source(getKotlinSourceDirectorySetSafe(commonSourceSet)!!) + } +} + +open class KotlinPlatformCommonPlugin : KotlinPlatformPluginBase("common") { + override fun apply(project: Project) { + project.applyPlugin() + warnAboutKotlin12xMppDeprecation(project) + } +} + +open class KotlinApiPlugin : KotlinBaseApiPlugin() { + override fun apply(project: Project) { + project.registerVariantImplementations() + super.apply(project) + } +} + +@Suppress("UnusedReceiverParameter") +private fun Project.registerVariantImplementations() { + +} diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/atomicfu/atomicfu.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/atomicfu/atomicfu.pom index 0aa5d102a15..c6aa6f58706 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/atomicfu/atomicfu.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/atomicfu/atomicfu.pom @@ -305,5 +305,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + kotlin-reflect + org.jetbrains.kotlin + + + kotlin-stdlib-jdk8 + org.jetbrains.kotlin + + + kotlin-stdlib-jdk7 + org.jetbrains.kotlin + + + kotlin-stdlib + org.jetbrains.kotlin + + + kotlin-script-runtime + org.jetbrains.kotlin + + + kotlin-stdlib-common + org.jetbrains.kotlin + + + true + diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-allopen/kotlin-allopen.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-allopen/kotlin-allopen.pom index 168913a21ad..9e90a171182 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-allopen/kotlin-allopen.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-allopen/kotlin-allopen.pom @@ -337,5 +337,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + kotlin-reflect + org.jetbrains.kotlin + + + kotlin-stdlib-jdk8 + org.jetbrains.kotlin + + + kotlin-stdlib-jdk7 + org.jetbrains.kotlin + + + kotlin-stdlib + org.jetbrains.kotlin + + + kotlin-script-runtime + org.jetbrains.kotlin + + + kotlin-stdlib-common + org.jetbrains.kotlin + + + true + diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-assignment/kotlin-assignment.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-assignment/kotlin-assignment.pom index 3f0b11c2992..ea88c118b4a 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-assignment/kotlin-assignment.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-assignment/kotlin-assignment.pom @@ -337,5 +337,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + kotlin-reflect + org.jetbrains.kotlin + + + kotlin-stdlib-jdk8 + org.jetbrains.kotlin + + + kotlin-stdlib-jdk7 + org.jetbrains.kotlin + + + kotlin-stdlib + org.jetbrains.kotlin + + + kotlin-script-runtime + org.jetbrains.kotlin + + + kotlin-stdlib-common + org.jetbrains.kotlin + + + true + diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-gradle-plugin-model/kotlin-gradle-plugin-model.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-gradle-plugin-model/kotlin-gradle-plugin-model.pom index 2b1f2f8e7e3..6eba149ecaa 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-gradle-plugin-model/kotlin-gradle-plugin-model.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-gradle-plugin-model/kotlin-gradle-plugin-model.pom @@ -305,5 +305,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + kotlin-reflect + org.jetbrains.kotlin + + + kotlin-stdlib-jdk8 + org.jetbrains.kotlin + + + kotlin-stdlib-jdk7 + org.jetbrains.kotlin + + + kotlin-stdlib + org.jetbrains.kotlin + + + kotlin-script-runtime + org.jetbrains.kotlin + + + kotlin-stdlib-common + org.jetbrains.kotlin + + + true + diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-lombok/kotlin-lombok.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-lombok/kotlin-lombok.pom index 6699b40f8bc..b6f80f8f768 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-lombok/kotlin-lombok.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-lombok/kotlin-lombok.pom @@ -337,5 +337,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + kotlin-reflect + org.jetbrains.kotlin + + + kotlin-stdlib-jdk8 + org.jetbrains.kotlin + + + kotlin-stdlib-jdk7 + org.jetbrains.kotlin + + + kotlin-stdlib + org.jetbrains.kotlin + + + kotlin-script-runtime + org.jetbrains.kotlin + + + kotlin-stdlib-common + org.jetbrains.kotlin + + + true + diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-noarg/kotlin-noarg.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-noarg/kotlin-noarg.pom index 293fa1e505b..f4d4ed44642 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-noarg/kotlin-noarg.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-noarg/kotlin-noarg.pom @@ -337,5 +337,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + kotlin-reflect + org.jetbrains.kotlin + + + kotlin-stdlib-jdk8 + org.jetbrains.kotlin + + + kotlin-stdlib-jdk7 + org.jetbrains.kotlin + + + kotlin-stdlib + org.jetbrains.kotlin + + + kotlin-script-runtime + org.jetbrains.kotlin + + + kotlin-stdlib-common + org.jetbrains.kotlin + + + true + diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-sam-with-receiver/kotlin-sam-with-receiver.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-sam-with-receiver/kotlin-sam-with-receiver.pom index 40fbdfc77a8..232b49a041b 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-sam-with-receiver/kotlin-sam-with-receiver.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-sam-with-receiver/kotlin-sam-with-receiver.pom @@ -337,5 +337,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + kotlin-reflect + org.jetbrains.kotlin + + + kotlin-stdlib-jdk8 + org.jetbrains.kotlin + + + kotlin-stdlib-jdk7 + org.jetbrains.kotlin + + + kotlin-stdlib + org.jetbrains.kotlin + + + kotlin-script-runtime + org.jetbrains.kotlin + + + kotlin-stdlib-common + org.jetbrains.kotlin + + + true + diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-serialization/kotlin-serialization.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-serialization/kotlin-serialization.pom index ce9d0ea6ebe..363debfab11 100644 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-serialization/kotlin-serialization.pom +++ b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-serialization/kotlin-serialization.pom @@ -305,5 +305,38 @@ true + + org.jetbrains.kotlin + kotlin-gradle-plugin-api + ArtifactsTest.version + compile + + + kotlin-reflect + org.jetbrains.kotlin + + + kotlin-stdlib-jdk8 + org.jetbrains.kotlin + + + kotlin-stdlib-jdk7 + org.jetbrains.kotlin + + + kotlin-stdlib + org.jetbrains.kotlin + + + kotlin-script-runtime + org.jetbrains.kotlin + + + kotlin-stdlib-common + org.jetbrains.kotlin + + + true + diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/GradleCommon.kt b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/GradleCommon.kt index 0e466ae3f1c..96460d9339e 100644 --- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/GradleCommon.kt +++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/GradleCommon.kt @@ -61,6 +61,7 @@ enum class GradlePluginVariant( GRADLE_76("gradle76", "7.6", "7.6", "https://docs.gradle.org/7.6.1/javadoc/"), GRADLE_80("gradle80", "8.0", "8.0", "https://docs.gradle.org/8.0.2/javadoc/"), GRADLE_81("gradle81", "8.1", "8.1", "https://docs.gradle.org/8.1.1/javadoc/"), + GRADLE_82("gradle82", "8.2", "8.2", "https://docs.gradle.org/8.2.1/javadoc/"), } val commonSourceSetName = "common" @@ -774,7 +775,8 @@ fun Project.configureDokkaPublication( private fun GradleExternalDocumentationLinkBuilder.addWorkaroundForElementList(pluginVariant: GradlePluginVariant) { if (pluginVariant == GradlePluginVariant.GRADLE_76 || pluginVariant == GradlePluginVariant.GRADLE_80 || - pluginVariant == GradlePluginVariant.GRADLE_81 + pluginVariant == GradlePluginVariant.GRADLE_81 || + pluginVariant == GradlePluginVariant.GRADLE_82 ) { packageListUrl.set(URL("${pluginVariant.gradleApiJavadocUrl}element-list")) } diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/gradle-plugin-common-configuration.gradle.kts b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/gradle-plugin-common-configuration.gradle.kts index 0437d06d190..acfac1ba660 100644 --- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/gradle-plugin-common-configuration.gradle.kts +++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/gradle-plugin-common-configuration.gradle.kts @@ -110,4 +110,11 @@ if (!kotlinBuildProperties.isInJpsBuildIdeaSync) { commonSourceSet = commonSourceSet ) publishShadowedJar(gradle81SourceSet, commonSourceSet) + + // Used for Gradle 8.2+ versions + val gradle82SourceSet = createGradlePluginVariant( + GradlePluginVariant.GRADLE_82, + commonSourceSet = commonSourceSet + ) + publishShadowedJar(gradle82SourceSet, commonSourceSet) } diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/gradle-plugin-dependency-configuration.gradle.kts b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/gradle-plugin-dependency-configuration.gradle.kts index 8104f84a8b6..751a83d66a2 100644 --- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/gradle-plugin-dependency-configuration.gradle.kts +++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/gradle-plugin-dependency-configuration.gradle.kts @@ -69,6 +69,13 @@ createGradlePluginVariant( isGradlePlugin = false ) +// Used for Gradle 8.2+ versions +createGradlePluginVariant( + GradlePluginVariant.GRADLE_82, + commonSourceSet = commonSourceSet, + isGradlePlugin = false +) + publishing { publications { register(DEFAULT_MAIN_PUBLICATION_NAME) {