[Gradle] KotlinJvmTarget: Apply java-base plugin instead of java plugin for withJava

^KT-59595 Verification Pending
This commit is contained in:
Sebastian Sellmair
2023-06-22 15:19:13 +02:00
committed by Space Team
parent 55a276705d
commit e47f4137f4
2 changed files with 9 additions and 36 deletions
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.gradle.testbase.*
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.io.TempDir
import java.nio.file.Path
import kotlin.test.assertNotNull
@DisplayName("Configuration cache")
class ConfigurationCacheIT : AbstractConfigurationCacheIT() {
@@ -72,7 +73,8 @@ class ConfigurationCacheIT : AbstractConfigurationCacheIT() {
project("new-mpp-lib-and-app/sample-lib", gradleVersion) {
val publishedTargets = listOf("kotlinMultiplatform", "jvm6", "nodeJs", "linux64", "mingw64")
testConfigurationCacheOf(
*(publishedTargets.map { ":publish${it.replaceFirstChar { it.uppercaseChar() }}PublicationToMavenRepository" }.toTypedArray()),
*(publishedTargets.map { ":publish${it.replaceFirstChar { it.uppercaseChar() }}PublicationToMavenRepository" }
.toTypedArray()),
checkUpToDateOnRebuild = false
)
}
@@ -171,9 +173,8 @@ class ConfigurationCacheIT : AbstractConfigurationCacheIT() {
@GradleTest
fun testJvmWithJavaConfigurationCache(gradleVersion: GradleVersion) {
project("mppJvmWithJava", gradleVersion) {
build("jar")
build("jar") {
build("jvmWithJavaJar")
build("jvmWithJavaJar") {
assertOutputContains("Reusing configuration cache.")
}
}
@@ -233,7 +234,7 @@ abstract class AbstractConfigurationCacheIT : KGPBaseTest() {
vararg taskNames: String,
executedTaskNames: List<String>? = null,
checkUpToDateOnRebuild: Boolean = true,
buildOptions: BuildOptions = this.buildOptions
buildOptions: BuildOptions = this.buildOptions,
) {
assertSimpleConfigurationCacheScenarioWorks(
*taskNames,
@@ -10,12 +10,11 @@ import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.Project
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.DuplicatesStrategy
import org.gradle.api.internal.tasks.JvmConstants
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
@@ -107,7 +106,7 @@ abstract class KotlinJvmTarget @Inject constructor(
withJavaEnabled = true
project.plugins.apply(JavaPlugin::class.java)
project.plugins.apply(JavaBasePlugin::class.java)
val javaSourceSets = project.variantImplementationFactory<JavaSourceSetsAccessor.JavaSourceSetsAccessorVariantFactory>()
.getInstance(project)
.sourceSets
@@ -143,15 +142,6 @@ abstract class KotlinJvmTarget @Inject constructor(
copyUserDefinedAttributesToJavaConfigurations(javaSourceSet)
}
}
// Eliminate the Java output configurations from dependency resolution to avoid ambiguity between them and
// the equivalent configurations created for the target:
listOf(JavaPlugin.API_ELEMENTS_CONFIGURATION_NAME, JavaPlugin.RUNTIME_ELEMENTS_CONFIGURATION_NAME)
.forEach { outputConfigurationName ->
project.configurations.findByName(outputConfigurationName)?.isCanBeConsumed = false
}
disableJavaPluginTasks(javaSourceSets)
}
private fun setupJavaSourceSetSourcesAndResources(
@@ -183,24 +173,6 @@ abstract class KotlinJvmTarget @Inject constructor(
}
}
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 setupDependenciesCrossInclusionForJava(
compilation: KotlinJvmCompilation,
javaSourceSet: SourceSet,