From ffa2f97d2c27a5721dd601a764d23e798ee24eda Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Tue, 14 Jan 2020 20:57:39 +0300 Subject: [PATCH] Deprecate 1.2.x MPP Gradle plugins Issue #KT-31570 Fixed --- .../kotlin/gradle/MultiplatformGradleIT.kt | 11 +++++++++++ .../gradle/plugin/KotlinMultiplatformPlugin.kt | 18 ++++++++++++++++++ .../internals/ExposedForIntegrationTests.kt | 4 +++- 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MultiplatformGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MultiplatformGradleIT.kt index b880b8e9c0c..3fcfad9e16c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MultiplatformGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MultiplatformGradleIT.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.gradle import com.intellij.testFramework.TestDataPath +import org.jetbrains.kotlin.gradle.internals.KOTLIN_12X_MPP_DEPRECATION_WARNING import org.jetbrains.kotlin.gradle.plugin.EXPECTED_BY_CONFIG_NAME import org.jetbrains.kotlin.gradle.plugin.IMPLEMENT_CONFIG_NAME import org.jetbrains.kotlin.gradle.plugin.IMPLEMENT_DEPRECATION_WARNING @@ -35,6 +36,9 @@ class MultiplatformGradleIT : BaseGradleIT() { project.build("build") { assertSuccessful() + + assertContains(KOTLIN_12X_MPP_DEPRECATION_WARNING) + assertTasksExecuted( ":lib:compileKotlinCommon", ":lib:compileTestKotlinCommon", @@ -50,6 +54,13 @@ class MultiplatformGradleIT : BaseGradleIT() { assertFileExists("libJs/build/classes/kotlin/main/libJs.js") assertFileExists("libJs/build/classes/kotlin/test/libJs_test.js") } + + project.projectDir.resolve("gradle.properties").appendText("\nkotlin.internal.mpp12x.deprecation.suppress=true") + project.build { + assertSuccessful() + + assertNotContains(KOTLIN_12X_MPP_DEPRECATION_WARNING) + } } @Test diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt index 40ca8109574..f076614d565 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinMultiplatformPlugin.kt @@ -26,6 +26,7 @@ import org.gradle.api.tasks.SourceSet import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.logging.kotlinWarn import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile +import org.jetbrains.kotlin.gradle.utils.SingleWarningPerBuild abstract class KotlinPlatformPluginBase(protected val platformName: String) : Plugin { companion object { @@ -38,6 +39,7 @@ abstract class KotlinPlatformPluginBase(protected val platformName: String) : Pl open class KotlinPlatformCommonPlugin : KotlinPlatformPluginBase("common") { override fun apply(project: Project) { + warnAboutKotlin12xMppDeprecation(project) project.applyPlugin() } } @@ -55,6 +57,8 @@ open class KotlinPlatformImplementationPluginBase(platformName: String) : Kotlin listOf(project.configurations.getByName("compile")) override fun apply(project: Project) { + warnAboutKotlin12xMppDeprecation(project) + val implementConfig = project.configurations.create(IMPLEMENT_CONFIG_NAME) val expectedByConfig = project.configurations.create(EXPECTED_BY_CONFIG_NAME) @@ -245,3 +249,17 @@ open class KotlinPlatformJsPlugin : KotlinPlatformImplementationPluginBase("js") super.apply(project) } } + +internal val KOTLIN_12X_MPP_DEPRECATION_WARNING = "\n" + """ + The 'org.jetbrains.kotlin.platform.*' plugins are deprecated and will no longer be available in Kotlin 1.4. + Please migrate the project to the 'org.jetbrains.kotlin.multiplatform' plugin. + See: https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html + """.trimIndent() + +private const val KOTLIN_12X_MPP_DEPRECATION_SUPPRESS_FLAG = "kotlin.internal.mpp12x.deprecation.suppress" + +private fun warnAboutKotlin12xMppDeprecation(project: Project) { + if (project.findProperty(KOTLIN_12X_MPP_DEPRECATION_SUPPRESS_FLAG) != "true") { + SingleWarningPerBuild.show(project, KOTLIN_12X_MPP_DEPRECATION_WARNING) + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/internals/ExposedForIntegrationTests.kt b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/internals/ExposedForIntegrationTests.kt index 8fb40228223..55ee38b873e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/internals/ExposedForIntegrationTests.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/internals/ExposedForIntegrationTests.kt @@ -27,4 +27,6 @@ const val DISABLED_NATIVE_TARGETS_REPORTER_WARNING_PREFIX: String = DisabledNativeTargetsReporter.WARNING_PREFIX const val NO_NATIVE_STDLIB_WARNING = NO_NATIVE_STDLIB_WARNING -const val NO_NATIVE_STDLIB_PROPERTY_WARNING = NO_NATIVE_STDLIB_PROPERTY_WARNING \ No newline at end of file +const val NO_NATIVE_STDLIB_PROPERTY_WARNING = NO_NATIVE_STDLIB_PROPERTY_WARNING + +val KOTLIN_12X_MPP_DEPRECATION_WARNING = org.jetbrains.kotlin.gradle.plugin.KOTLIN_12X_MPP_DEPRECATION_WARNING \ No newline at end of file