From 126c8eafa33f50d8db1be6bad3e766fabbc6c5b5 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Wed, 9 Nov 2022 11:55:32 +0100 Subject: [PATCH] [Gradle] KotlinWithJavaCompilationFactory: Use compile&runtime classpath from javaSourceSet ^KT-54867 Verification Pending --- ...nCompilationDependencyConfigurationsFactories.kt | 2 +- .../targets/jvm/KotlinWithJavaCompilationFactory.kt | 13 ++++++++++--- .../gradle/targets/jvm/KotlinWithJavaTarget.kt | 4 ++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/KotlinCompilationDependencyConfigurationsFactories.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/KotlinCompilationDependencyConfigurationsFactories.kt index c9d8aed2ed4..15ff6313af5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/KotlinCompilationDependencyConfigurationsFactories.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/KotlinCompilationDependencyConfigurationsFactories.kt @@ -66,7 +66,7 @@ internal object JsKotlinCompilationDependencyConfigurationsFactory : internal class JvmWithJavaCompilationDependencyConfigurationsFactory(private val target: KotlinWithJavaTarget<*, *>) : KotlinCompilationImplFactory.KotlinCompilationDependencyConfigurationsFactory { override fun create(target: KotlinTarget, compilationName: String): KotlinCompilationConfigurationsContainer { - val javaSourceSet = this.target.javaSourceSets.maybeCreate(compilationName) + val javaSourceSet = this.target.project.javaSourceSets.maybeCreate(compilationName) return KotlinCompilationDependencyConfigurationsContainer( target = target, compilationName = compilationName, withRuntime = true, apiConfigurationName = javaSourceSet.apiConfigurationName, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinWithJavaCompilationFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinWithJavaCompilationFactory.kt index f80063134e7..5de31b226eb 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinWithJavaCompilationFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinWithJavaCompilationFactory.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.KotlinJvmCompilati import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JvmWithJavaCompilationDependencyConfigurationsFactory import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JvmWithJavaCompilationTaskNamesContainerFactory import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory +import org.jetbrains.kotlin.gradle.utils.filesProvider class KotlinWithJavaCompilationFactory internal constructor( override val target: KotlinWithJavaTarget, @@ -26,13 +27,13 @@ class KotlinWithJavaCompilationFactory { - val javaSourceSet = target.javaSourceSets.findByName(name) ?: run { + val javaSourceSet = project.javaSourceSets.findByName(name) ?: run { /* Creating the java SourceSet first here: After the javaSourceSet is created, another .all hook will call into this factory creating the KotlinCompilation. This call will just return this instance instead eagerly */ - target.javaSourceSets.create(name) + project.javaSourceSets.create(name) return target.compilations.getByName(name) } @@ -44,10 +45,16 @@ class KotlinWithJavaCompilationFactory - KotlinWithJavaCompilationOutput(target.javaSourceSets.maybeCreate(compilationName)) + KotlinWithJavaCompilationOutput(project.javaSourceSets.maybeCreate(compilationName)) }, compilationDependencyConfigurationsFactory = JvmWithJavaCompilationDependencyConfigurationsFactory(target), compilationTaskNamesContainerFactory = JvmWithJavaCompilationTaskNamesContainerFactory(javaSourceSet), + + /* Use compile & runtime classpath from javaSourceSet by default */ + preConfigureAction = { compilation -> + compilation.compileDependencyFiles = project.filesProvider { javaSourceSet.compileClasspath } + compilation.runtimeDependencyFiles = project.filesProvider { javaSourceSet.runtimeClasspath } + } ) return project.objects.newInstance( diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinWithJavaTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinWithJavaTarget.kt index 05f037a6575..b854dcc4bd5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinWithJavaTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinWithJavaTarget.kt @@ -65,8 +65,8 @@ abstract class KotlinWithJavaTarget.javaSourceSets: SourceSetContainer - get() = project.gradle +internal val Project.javaSourceSets: SourceSetContainer + get() = gradle .variantImplementationFactory() .getInstance(project) .sourceSets \ No newline at end of file