[Gradle] Migrate warning about pre-1.3 MPP plugins

This commit is contained in:
Dmitry Savvinov
2023-03-27 16:40:32 +02:00
parent 4f309c0c8f
commit 84fb045d8a
4 changed files with 21 additions and 17 deletions
@@ -19,11 +19,13 @@ package org.jetbrains.kotlin.gradle
import com.intellij.testFramework.TestDataPath
import org.gradle.api.logging.LogLevel
import org.gradle.util.GradleVersion
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
import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics
import org.jetbrains.kotlin.gradle.testbase.TestVersions
import org.jetbrains.kotlin.gradle.testbase.assertHasDiagnostic
import org.jetbrains.kotlin.gradle.testbase.assertNoDiagnostic
import org.jetbrains.kotlin.gradle.util.AGPVersion
import org.jetbrains.kotlin.gradle.util.getFileByName
import org.jetbrains.kotlin.gradle.util.modify
@@ -43,7 +45,7 @@ class MultiplatformGradleIT : BaseGradleIT() {
project.build("build") {
assertSuccessful()
assertContains(KOTLIN_12X_MPP_DEPRECATION_WARNING)
assertHasDiagnostic(KotlinToolingDiagnostics.Kotlin12XMppDeprecation)
assertTasksExecuted(
":lib:compileKotlinCommon",
@@ -61,7 +63,7 @@ class MultiplatformGradleIT : BaseGradleIT() {
project.build {
assertSuccessful()
assertNotContains(KOTLIN_12X_MPP_DEPRECATION_WARNING)
assertNoDiagnostic(KotlinToolingDiagnostics.Kotlin12XMppDeprecation)
}
}
@@ -287,7 +289,7 @@ class MultiplatformGradleIT : BaseGradleIT() {
"actual fun foo(): String = \"jvm\"" to "libJvm/src/$sourceSetName/kotlin",
).forEach { (code, path) ->
File(projectDir, path).run {
mkdirs();
mkdirs()
File(this, "Foo.kt").writeText(code)
}
}
@@ -367,4 +369,4 @@ class MultiplatformGradleIT : BaseGradleIT() {
assertTasksExecuted(":lib1:compileDebugKotlin")
}
}
}
}
@@ -23,9 +23,10 @@ import org.gradle.api.file.SourceDirectorySet
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.plugin.diagnostics.KotlinToolingDiagnostics
import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnosticOncePerBuild
import org.jetbrains.kotlin.gradle.plugin.internal.JavaSourceSetsAccessor
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
import org.jetbrains.kotlin.gradle.utils.SingleWarningPerBuild
import org.jetbrains.kotlin.gradle.utils.androidPluginIds
import org.jetbrains.kotlin.gradle.utils.getOrPut
import java.util.concurrent.atomic.AtomicBoolean
@@ -241,16 +242,10 @@ internal fun <T> Project.whenEvaluated(fn: Project.() -> T) {
}
}
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"
internal fun warnAboutKotlin12xMppDeprecation(project: Project) {
if (project.findProperty(KOTLIN_12X_MPP_DEPRECATION_SUPPRESS_FLAG) != "true") {
SingleWarningPerBuild.show(project, KOTLIN_12X_MPP_DEPRECATION_WARNING)
project.reportDiagnosticOncePerBuild(KotlinToolingDiagnostics.Kotlin12XMppDeprecation())
}
}
@@ -210,4 +210,14 @@ object KotlinToolingDiagnostics {
"Available values: prebuilt, light"
)
}
object Kotlin12XMppDeprecation : ToolingDiagnosticFactory(WARNING) {
operator fun invoke() = build(
"""
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()
)
}
}
@@ -5,14 +5,13 @@
package org.jetbrains.kotlin.gradle.internals
import org.jetbrains.kotlin.gradle.plugin.KOTLIN_12X_MPP_DEPRECATION_WARNING
import org.jetbrains.kotlin.gradle.plugin.diagnostics.DIAGNOSTIC_SEPARATOR
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinProjectStructureMetadata
import org.jetbrains.kotlin.gradle.plugin.mpp.MULTIPLATFORM_PROJECT_METADATA_JSON_FILE_NAME
import org.jetbrains.kotlin.gradle.plugin.mpp.parseKotlinSourceSetMetadataFromJson
import org.jetbrains.kotlin.gradle.targets.native.DisabledNativeTargetsReporter
fun parseKotlinSourceSetMetadataFromJson(json: String): KotlinProjectStructureMetadata? = parseKotlinSourceSetMetadataFromJson(json)
fun parseKotlinSourceSetMetadataFromJson(json: String): KotlinProjectStructureMetadata = parseKotlinSourceSetMetadataFromJson(json)
const val MULTIPLATFORM_PROJECT_METADATA_JSON_FILE_NAME = MULTIPLATFORM_PROJECT_METADATA_JSON_FILE_NAME
@@ -20,6 +19,4 @@ const val DISABLED_NATIVE_TARGETS_REPORTER_DISABLE_WARNING_PROPERTY_NAME = Disab
const val DISABLED_NATIVE_TARGETS_REPORTER_WARNING_PREFIX: String = DisabledNativeTargetsReporter.WARNING_PREFIX
val KOTLIN_12X_MPP_DEPRECATION_WARNING = KOTLIN_12X_MPP_DEPRECATION_WARNING
const val VERBOSE_DIAGNOSTIC_SEPARATOR = DIAGNOSTIC_SEPARATOR