[Gradle] KotlinJvmTarget: Apply java-base plugin instead of java plugin for withJava
^KT-59595 Verification Pending
This commit is contained in:
committed by
Space Team
parent
55a276705d
commit
e47f4137f4
+6
-5
@@ -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,
|
||||
|
||||
+3
-31
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user