diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index 20b24b42f2f..bda5ba1537b 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -30,9 +30,8 @@ import org.gradle.api.tasks.compile.AbstractCompile import org.gradle.api.tasks.compile.JavaCompile import org.gradle.jvm.tasks.Jar import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry -import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions +import org.jetbrains.kotlin.gradle.dsl.* import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptionsImpl -import org.jetbrains.kotlin.gradle.dsl.KotlinSingleJavaTargetExtension import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.internal.Kapt3KotlinGradleSubplugin import org.jetbrains.kotlin.gradle.internal.KaptVariantData @@ -43,6 +42,7 @@ import org.jetbrains.kotlin.gradle.model.builder.KotlinModelBuilder import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin import org.jetbrains.kotlin.gradle.tasks.* +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.utils.* import java.io.File import java.net.URL @@ -394,6 +394,8 @@ internal abstract class AbstractKotlinPlugin( } companion object { + const val KOTLIN_TARGET_NAME = "kotlin" + fun configureProjectGlobalSettings(project: Project, kotlinPluginVersion: String) { configureDefaultVersionsResolutionStrategy(project, kotlinPluginVersion) configureClassInspectionForIC(project) @@ -552,18 +554,19 @@ internal fun configureDefaultVersionsResolutionStrategy(project: Project, kotlin internal open class KotlinPlugin( kotlinPluginVersion: String, registry: ToolingModelBuilderRegistry -) : AbstractKotlinPlugin(KotlinTasksProvider(targetName), kotlinPluginVersion, registry) { +) : AbstractKotlinPlugin(KotlinTasksProvider(targetDisambiguationClassifier), kotlinPluginVersion, registry) { companion object { - private const val targetName = "" // use empty suffix for the task names + // Don't add anything to the task names + private const val targetDisambiguationClassifier: String = "" } override fun buildSourceSetProcessor(project: Project, compilation: KotlinCompilation<*>, kotlinPluginVersion: String) = Kotlin2JvmSourceSetProcessor(project, tasksProvider, compilation, kotlinPluginVersion) override fun apply(project: Project) { - val target = KotlinWithJavaTarget(project, KotlinPlatformType.jvm, targetName).apply { - disambiguationClassifier = null // don't add anything to the task names + val target = KotlinWithJavaTarget(project, KotlinPlatformType.jvm, KOTLIN_TARGET_NAME).apply { + disambiguationClassifier = targetDisambiguationClassifier } (project.kotlinExtension as KotlinJvmProjectExtension).target = target @@ -576,10 +579,10 @@ internal open class KotlinPlugin( internal open class KotlinCommonPlugin( kotlinPluginVersion: String, registry: ToolingModelBuilderRegistry -) : AbstractKotlinPlugin(KotlinTasksProvider(targetName), kotlinPluginVersion, registry) { +) : AbstractKotlinPlugin(KotlinTasksProvider(targetDisambiguationClassifier), kotlinPluginVersion, registry) { companion object { - private const val targetName = "common" + private const val targetDisambiguationClassifier = "common" } override fun buildSourceSetProcessor( @@ -590,7 +593,9 @@ internal open class KotlinCommonPlugin( KotlinCommonSourceSetProcessor(project, compilation, tasksProvider, kotlinPluginVersion) override fun apply(project: Project) { - val target = KotlinWithJavaTarget(project, KotlinPlatformType.common, targetName) + val target = KotlinWithJavaTarget(project, KotlinPlatformType.common, KOTLIN_TARGET_NAME).apply { + disambiguationClassifier = targetDisambiguationClassifier + } (project.kotlinExtension as KotlinCommonProjectExtension).target = target super.apply(project) @@ -600,10 +605,10 @@ internal open class KotlinCommonPlugin( internal open class Kotlin2JsPlugin( kotlinPluginVersion: String, registry: ToolingModelBuilderRegistry -) : AbstractKotlinPlugin(KotlinTasksProvider(targetName), kotlinPluginVersion, registry) { +) : AbstractKotlinPlugin(KotlinTasksProvider(targetDisambiguationClassifier), kotlinPluginVersion, registry) { companion object { - private const val targetName = "2Js" + private const val targetDisambiguationClassifier = "2Js" } override fun buildSourceSetProcessor( @@ -616,7 +621,9 @@ internal open class Kotlin2JsPlugin( ) override fun apply(project: Project) { - val target = KotlinWithJavaTarget(project, KotlinPlatformType.js, targetName) + val target = KotlinWithJavaTarget(project, KotlinPlatformType.js, KOTLIN_TARGET_NAME).apply { + disambiguationClassifier = targetDisambiguationClassifier + } (project.kotlinExtension as Kotlin2JsProjectExtension).target = target super.apply(project) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt index 1c0ba8e4efc..c8a348873b5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt @@ -359,7 +359,7 @@ open class KotlinTargetConfigurator val testCompilation = target.compilations.findByName(KotlinCompilation.TEST_COMPILATION_NAME) as? KotlinCompilationToRunnableFiles<*> ?: return // Otherwise, there is no runtime classpath - target.project.tasks.create(lowerCamelCaseName(target.targetName, testTaskNameSuffix), Test::class.java).apply { + target.project.tasks.create(lowerCamelCaseName(target.disambiguationClassifier, testTaskNameSuffix), Test::class.java).apply { project.afterEvaluate { // use afterEvaluate to override the JavaPlugin defaults for Test tasks conventionMapping.map("testClassesDirs") { testCompilation.output.classesDirs } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/TaskToFriendTaskMapper.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/TaskToFriendTaskMapper.kt index c105b4bcfdc..7a171a81c5d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/TaskToFriendTaskMapper.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/TaskToFriendTaskMapper.kt @@ -33,17 +33,17 @@ internal abstract class TaskToFriendTaskMapper { sealed internal class RegexTaskToFriendTaskMapper( private val prefix: String, suffix: String, - private val targetName: String, + private val targetDisambiguationClasssifier: String, private val postfixReplacement: String ) : TaskToFriendTaskMapper() { class Default(targetName: String) : RegexTaskToFriendTaskMapper("compile", "TestKotlin", targetName, "Kotlin") class Android(targetName: String) : RegexTaskToFriendTaskMapper("compile", "(Unit|Android)TestKotlin", targetName, "Kotlin") - private val regex = "$prefix(.*)$suffix${targetName.capitalize()}".toRegex() + private val regex = "$prefix(.*)$suffix${targetDisambiguationClasssifier.capitalize()}".toRegex() override fun getFriendByName(name: String): String? { val match = regex.matchEntire(name) ?: return null val variant = match.groups[1]?.value ?: "" - return prefix + variant + postfixReplacement + targetName.capitalize() + return prefix + variant + postfixReplacement + targetDisambiguationClasssifier.capitalize() } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt index 4d6ab2b9e8f..3befe92004a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt @@ -23,13 +23,19 @@ import java.util.concurrent.Callable internal fun KotlinCompilation<*>.composeName(prefix: String? = null, suffix: String? = null): String { val compilationNamePart = compilationName.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME } - val targetNamePart = target.disambiguationClassifier + val targetNamePart = + if (target is KotlinWithJavaTarget<*>) + "" // no name disambiguation is needed for single-platform projects + else target.disambiguationClassifier return lowerCamelCaseName(prefix, targetNamePart, compilationNamePart, suffix) } internal val KotlinCompilation<*>.defaultSourceSetName: String - get() = lowerCamelCaseName(target.disambiguationClassifier, compilationName) + get() = when (this) { + is KotlinWithJavaCompilation<*> -> compilationName // no name disambiguation is needed for single-platform projects + else -> lowerCamelCaseName(target.disambiguationClassifier, compilationName) + } abstract class AbstractKotlinCompilation( target: KotlinTarget, @@ -145,7 +151,7 @@ abstract class AbstractKotlinCompilation( "compile", compilationName.takeIf { it != KotlinCompilation.MAIN_COMPILATION_NAME }, "Kotlin", - target.targetName + target.disambiguationClassifier ) override val compileAllTaskName: String diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargets.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargets.kt index 2e93a6ecc2b..bd4a0b5d0c6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargets.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinTargets.kt @@ -240,7 +240,7 @@ abstract class AbstractKotlinTarget( } internal fun KotlinTarget.disambiguateName(simpleName: String) = - lowerCamelCaseName(targetName, simpleName) + lowerCamelCaseName(disambiguationClassifier, simpleName) internal fun javaApiUsageForMavenScoping() = if (isGradleVersionAtLeast(5, 3)) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt index 66ddc4fcee5..aa59efc5480 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt @@ -39,7 +39,7 @@ internal fun registerTask(project: Project, name: String, type: Class } } -internal open class KotlinTasksProvider(val targetName: String) { +internal open class KotlinTasksProvider(targetDisambiguationClassifier: String) { open fun registerKotlinJVMTask( project: Project, name: String, @@ -109,7 +109,7 @@ internal open class KotlinTasksProvider(val targetName: String) { } protected open val taskToFriendTaskMapper: TaskToFriendTaskMapper = - RegexTaskToFriendTaskMapper.Default(targetName) + RegexTaskToFriendTaskMapper.Default(targetDisambiguationClassifier) private inline fun taskOrWorkersTask(properties: PropertiesProvider): Class = if (properties.parallelTasksInProject != true) Task::class.java else WorkersTask::class.java