[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.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")
@@ -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()
)
}
}
@@ -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<KotlinJvmOptions, KotlinJvmCompilerOptions> {
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"
}
}