From 5f00bfecffd0f6433c6720734e52f8fea3c54533 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Thu, 13 Jul 2023 12:12:25 +0200 Subject: [PATCH] [Gradle] KotlinJvmTarget.withJava(): Disable java *Elements configurations and tasks ... as it was done before commit: [Gradle] KotlinJvmTarget: Apply java-base plugin instead of java plugin for `withJava` Sebastian Sellmair* 22.06.23, 15:19 e47f4137f4804f6b585528d446ad0d793c38f261 ^KT-60388 Verification Pending --- .../gradle/targets/jvm/KotlinJvmTarget.kt | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt index 61d15055706..3614822f96c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt @@ -11,8 +11,12 @@ import org.gradle.api.Project import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.DuplicatesStrategy import org.gradle.api.plugins.JavaBasePlugin +import org.gradle.api.plugins.JavaPlugin import org.gradle.api.tasks.SourceSet +import org.gradle.api.tasks.SourceSetContainer import org.gradle.api.tasks.compile.AbstractCompile +import org.gradle.api.tasks.testing.Test +import org.gradle.jvm.tasks.Jar import org.gradle.language.jvm.tasks.ProcessResources import org.gradle.util.GradleVersion import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi @@ -172,9 +176,35 @@ abstract class KotlinJvmTarget @Inject constructor( } } + project.plugins.withType(JavaPlugin::class.java) { + // Eliminate the Java output configurations from dependency resolution to avoid ambiguity between them and + // the equivalent configurations created for the target: + project.configurations.findByName(JavaPlugin.API_ELEMENTS_CONFIGURATION_NAME)?.isCanBeConsumed = false + project.configurations.findByName(JavaPlugin.RUNTIME_ELEMENTS_CONFIGURATION_NAME)?.isCanBeConsumed = false + disableJavaPluginTasks(javaSourceSets) + } + withJavaEnabledFutureImpl.complete(Unit) } + private fun disableJavaPluginTasks(javaSourceSet: SourceSetContainer) { + // A 'normal' build should not do redundant job like running the tests twice or building two JARs, + // so disable some tasks and just make them depend on the others: + val targetJar = project.tasks.withType(Jar::class.java).named(artifactsTaskName) + + project.tasks.withType(Jar::class.java).named(javaSourceSet.getByName("main").jarTaskName) { javaJar -> + (javaJar.source as? ConfigurableFileCollection)?.setFrom(targetJar.map { it.source }) + javaJar.archiveFileName.set(targetJar.flatMap { it.archiveFileName }) + javaJar.dependsOn(targetJar) + javaJar.enabled = false + } + + project.tasks.withType(Test::class.java).named(JavaPlugin.TEST_TASK_NAME) { javaTestTask -> + javaTestTask.dependsOn(project.tasks.named(testTaskName)) + javaTestTask.enabled = false + } + } + private fun setupJavaSourceSetSourcesAndResources( javaSourceSet: SourceSet, compilation: KotlinJvmCompilation,