[mpp] Migrate jvmWithJava preset deprecation to the new infra

This commit is contained in:
Dmitry Savvinov
2023-03-15 16:54:53 +01:00
committed by Space Team
parent 05662eae7a
commit ee9a952da2
3 changed files with 30 additions and 23 deletions
@@ -16,14 +16,15 @@ import org.jetbrains.kotlin.gradle.native.transformNativeTestProject
import org.jetbrains.kotlin.gradle.native.transformNativeTestProjectWithPluginDsl import org.jetbrains.kotlin.gradle.native.transformNativeTestProjectWithPluginDsl
import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType
import org.jetbrains.kotlin.gradle.plugin.ProjectLocalConfigurations 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.lowerName
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmWithJavaTargetPreset
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin 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.METADATA_CONFIGURATION_NAME_SUFFIX
import org.jetbrains.kotlin.gradle.plugin.sources.UnsatisfiedSourceSetVisibilityException import org.jetbrains.kotlin.gradle.plugin.sources.UnsatisfiedSourceSetVisibilityException
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
import org.jetbrains.kotlin.gradle.testbase.TestVersions 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.gradle.util.*
import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.library.KLIB_PROPERTY_SHORT_NAME import org.jetbrains.kotlin.library.KLIB_PROPERTY_SHORT_NAME
@@ -668,9 +669,9 @@ open class NewMultiplatformIT : BaseGradleIT() {
} }
if (testJavaSupportInJvmTargets) { if (testJavaSupportInJvmTargets) {
assertNotContains(KotlinJvmWithJavaTargetPreset.DEPRECATION_WARNING) assertNoDiagnostic(KotlinToolingDiagnostics.DeprecatedJvmWithJavaPresetDiagnostic)
} else { } else {
assertContains(KotlinJvmWithJavaTargetPreset.DEPRECATION_WARNING) assertHasDiagnostic(KotlinToolingDiagnostics.DeprecatedJvmWithJavaPresetDiagnostic)
} }
assertTasksExecuted(":run") assertTasksExecuted(":run")
@@ -35,4 +35,23 @@ object KotlinToolingDiagnostics {
.onlyIf(changedKotlinNativeHomeProperty != null) .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()
)
}
} }
@@ -8,11 +8,13 @@ package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.plugins.JavaPlugin 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.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.tasks.KotlinTasksProvider
import org.jetbrains.kotlin.gradle.utils.SingleWarningPerBuild
import org.jetbrains.kotlin.gradle.utils.configureExperimentalTryK2 import org.jetbrains.kotlin.gradle.utils.configureExperimentalTryK2
class KotlinJvmWithJavaTargetPreset( class KotlinJvmWithJavaTargetPreset(
@@ -22,10 +24,7 @@ class KotlinJvmWithJavaTargetPreset(
override fun getName(): String = PRESET_NAME override fun getName(): String = PRESET_NAME
override fun createTarget(name: String): KotlinWithJavaTarget<KotlinJvmOptions, KotlinJvmCompilerOptions> { override fun createTarget(name: String): KotlinWithJavaTarget<KotlinJvmOptions, KotlinJvmCompilerOptions> {
SingleWarningPerBuild.show( project.reportDiagnostic(KotlinToolingDiagnostics.DeprecatedJvmWithJavaPresetDiagnostic())
project,
DEPRECATION_WARNING
)
project.plugins.apply(JavaPlugin::class.java) project.plugins.apply(JavaPlugin::class.java)
@@ -83,17 +82,5 @@ class KotlinJvmWithJavaTargetPreset(
companion object { companion object {
const val PRESET_NAME = "jvmWithJava" 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"
} }
} }