[Gradle] KotlinWithJavaCompilationFactory: Use compile&runtime classpath from javaSourceSet

^KT-54867 Verification Pending
This commit is contained in:
Sebastian Sellmair
2022-11-09 11:55:32 +01:00
committed by Space Team
parent cc004c75c2
commit 126c8eafa3
3 changed files with 13 additions and 6 deletions
@@ -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,
@@ -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<KotlinOptionsType : KotlinCommonOptions, CO : KotlinCommonCompilerOptions> internal constructor(
override val target: KotlinWithJavaTarget<KotlinOptionsType, CO>,
@@ -26,13 +27,13 @@ class KotlinWithJavaCompilationFactory<KotlinOptionsType : KotlinCommonOptions,
@Suppress("UNCHECKED_CAST")
override fun create(name: String): KotlinWithJavaCompilation<KotlinOptionsType, CO> {
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<KotlinOptionsType : KotlinCommonOptions,
},
compilationAssociator = KotlinJvmCompilationAssociator,
compilationOutputFactory = { _, compilationName ->
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(
@@ -65,8 +65,8 @@ abstract class KotlinWithJavaTarget<KotlinOptionsType : KotlinCommonOptions, CO
private fun sanitizeFileName(candidate: String): String = candidate.filter { it.isLetterOrDigit() }
internal val KotlinWithJavaTarget<*, *>.javaSourceSets: SourceSetContainer
get() = project.gradle
internal val Project.javaSourceSets: SourceSetContainer
get() = gradle
.variantImplementationFactory<JavaSourceSetsAccessor.JavaSourceSetsAccessorVariantFactory>()
.getInstance(project)
.sourceSets