[Gradle] KotlinWithJavaCompilationFactory: Use compile&runtime classpath from javaSourceSet
^KT-54867 Verification Pending
This commit is contained in:
committed by
Space Team
parent
cc004c75c2
commit
126c8eafa3
+1
-1
@@ -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,
|
||||
|
||||
+10
-3
@@ -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(
|
||||
|
||||
+2
-2
@@ -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
|
||||
Reference in New Issue
Block a user