From ee9a952da2950bc00456144334ef09b0efb5c43b Mon Sep 17 00:00:00 2001 From: Dmitry Savvinov Date: Wed, 15 Mar 2023 16:54:53 +0100 Subject: [PATCH] [mpp] Migrate jvmWithJava preset deprecation to the new infra --- .../kotlin/gradle/NewMultiplatformIT.kt | 9 ++++--- .../diagnostics/KotlinToolingDiagnostics.kt | 19 ++++++++++++++ .../jvm/KotlinJvmWithJavaTargetPreset.kt | 25 +++++-------------- 3 files changed, 30 insertions(+), 23 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt index 8e07eb1fd1b..be8274b7d83 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt @@ -16,14 +16,15 @@ import org.jetbrains.kotlin.gradle.native.transformNativeTestProject import org.jetbrains.kotlin.gradle.native.transformNativeTestProjectWithPluginDsl import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType import org.jetbrains.kotlin.gradle.plugin.ProjectLocalConfigurations +import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics import org.jetbrains.kotlin.gradle.plugin.lowerName -import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmWithJavaTargetPreset import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin -import org.jetbrains.kotlin.gradle.plugin.mpp.UnusedSourceSetsChecker import org.jetbrains.kotlin.gradle.plugin.sources.METADATA_CONFIGURATION_NAME_SUFFIX import org.jetbrains.kotlin.gradle.plugin.sources.UnsatisfiedSourceSetVisibilityException import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget 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.* import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.library.KLIB_PROPERTY_SHORT_NAME @@ -668,9 +669,9 @@ open class NewMultiplatformIT : BaseGradleIT() { } if (testJavaSupportInJvmTargets) { - assertNotContains(KotlinJvmWithJavaTargetPreset.DEPRECATION_WARNING) + assertNoDiagnostic(KotlinToolingDiagnostics.DeprecatedJvmWithJavaPresetDiagnostic) } else { - assertContains(KotlinJvmWithJavaTargetPreset.DEPRECATION_WARNING) + assertHasDiagnostic(KotlinToolingDiagnostics.DeprecatedJvmWithJavaPresetDiagnostic) } assertTasksExecuted(":run") diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt index d390d9f46a9..2acc45802c2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt @@ -35,4 +35,23 @@ object KotlinToolingDiagnostics { .onlyIf(changedKotlinNativeHomeProperty != null) ) } + + object DeprecatedJvmWithJavaPresetDiagnostic : ToolingDiagnosticFactory(WARNING) { + operator fun invoke() = build( + """ + The 'jvmWithJava' preset is deprecated and will be removed soon. Please use an ordinary JVM target with Java support: + + kotlin { + jvm { + withJava() + } + } + + After this change, please move the Java sources to the Kotlin source set directories. + For example, if the JVM target is given the default name 'jvm': + * instead of 'src/main/java', use 'src/jvmMain/java' + * instead of 'src/test/java', use 'src/jvmTest/java' + """.trimIndent() + ) + } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmWithJavaTargetPreset.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmWithJavaTargetPreset.kt index a75036cba06..180523c2dd7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmWithJavaTargetPreset.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmWithJavaTargetPreset.kt @@ -8,11 +8,13 @@ package org.jetbrains.kotlin.gradle.plugin.mpp import org.gradle.api.Project import org.gradle.api.plugins.JavaPlugin -import org.jetbrains.kotlin.gradle.dsl.* +import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptions +import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptionsDefault +import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions import org.jetbrains.kotlin.gradle.plugin.* -import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget +import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics +import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider -import org.jetbrains.kotlin.gradle.utils.SingleWarningPerBuild import org.jetbrains.kotlin.gradle.utils.configureExperimentalTryK2 class KotlinJvmWithJavaTargetPreset( @@ -22,10 +24,7 @@ class KotlinJvmWithJavaTargetPreset( override fun getName(): String = PRESET_NAME override fun createTarget(name: String): KotlinWithJavaTarget { - SingleWarningPerBuild.show( - project, - DEPRECATION_WARNING - ) + project.reportDiagnostic(KotlinToolingDiagnostics.DeprecatedJvmWithJavaPresetDiagnostic()) project.plugins.apply(JavaPlugin::class.java) @@ -83,17 +82,5 @@ class KotlinJvmWithJavaTargetPreset( companion object { const val PRESET_NAME = "jvmWithJava" - - val DEPRECATION_WARNING = "\nThe 'jvmWithJava' preset is deprecated and will be removed soon. " + - "Please use an ordinary JVM target with Java support: \n\n" + - " kotlin { \n" + - " jvm { \n" + - " ${KotlinJvmTarget::withJava.name}() \n" + - " } \n" + - " }\n\n" + - "After this change, please move the Java sources to the Kotlin source set directories. " + - "For example, if the JVM target is given the default name 'jvm':\n" + - " * instead of 'src/main/java', use 'src/jvmMain/java'\n" + - " * instead of 'src/test/java', use 'src/jvmTest/java'\n" } }