[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<*, *>) :
|
internal class JvmWithJavaCompilationDependencyConfigurationsFactory(private val target: KotlinWithJavaTarget<*, *>) :
|
||||||
KotlinCompilationImplFactory.KotlinCompilationDependencyConfigurationsFactory {
|
KotlinCompilationImplFactory.KotlinCompilationDependencyConfigurationsFactory {
|
||||||
override fun create(target: KotlinTarget, compilationName: String): KotlinCompilationConfigurationsContainer {
|
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(
|
return KotlinCompilationDependencyConfigurationsContainer(
|
||||||
target = target, compilationName = compilationName, withRuntime = true,
|
target = target, compilationName = compilationName, withRuntime = true,
|
||||||
apiConfigurationName = javaSourceSet.apiConfigurationName,
|
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.JvmWithJavaCompilationDependencyConfigurationsFactory
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.factory.JvmWithJavaCompilationTaskNamesContainerFactory
|
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.plugin.mpp.compilationImpl.factory.KotlinCompilationImplFactory
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.filesProvider
|
||||||
|
|
||||||
class KotlinWithJavaCompilationFactory<KotlinOptionsType : KotlinCommonOptions, CO : KotlinCommonCompilerOptions> internal constructor(
|
class KotlinWithJavaCompilationFactory<KotlinOptionsType : KotlinCommonOptions, CO : KotlinCommonCompilerOptions> internal constructor(
|
||||||
override val target: KotlinWithJavaTarget<KotlinOptionsType, CO>,
|
override val target: KotlinWithJavaTarget<KotlinOptionsType, CO>,
|
||||||
@@ -26,13 +27,13 @@ class KotlinWithJavaCompilationFactory<KotlinOptionsType : KotlinCommonOptions,
|
|||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
override fun create(name: String): KotlinWithJavaCompilation<KotlinOptionsType, CO> {
|
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:
|
Creating the java SourceSet first here:
|
||||||
After the javaSourceSet is created, another .all hook will call into this factory creating the KotlinCompilation.
|
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
|
This call will just return this instance instead eagerly
|
||||||
*/
|
*/
|
||||||
target.javaSourceSets.create(name)
|
project.javaSourceSets.create(name)
|
||||||
return target.compilations.getByName(name)
|
return target.compilations.getByName(name)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,10 +45,16 @@ class KotlinWithJavaCompilationFactory<KotlinOptionsType : KotlinCommonOptions,
|
|||||||
},
|
},
|
||||||
compilationAssociator = KotlinJvmCompilationAssociator,
|
compilationAssociator = KotlinJvmCompilationAssociator,
|
||||||
compilationOutputFactory = { _, compilationName ->
|
compilationOutputFactory = { _, compilationName ->
|
||||||
KotlinWithJavaCompilationOutput(target.javaSourceSets.maybeCreate(compilationName))
|
KotlinWithJavaCompilationOutput(project.javaSourceSets.maybeCreate(compilationName))
|
||||||
},
|
},
|
||||||
compilationDependencyConfigurationsFactory = JvmWithJavaCompilationDependencyConfigurationsFactory(target),
|
compilationDependencyConfigurationsFactory = JvmWithJavaCompilationDependencyConfigurationsFactory(target),
|
||||||
compilationTaskNamesContainerFactory = JvmWithJavaCompilationTaskNamesContainerFactory(javaSourceSet),
|
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(
|
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() }
|
private fun sanitizeFileName(candidate: String): String = candidate.filter { it.isLetterOrDigit() }
|
||||||
|
|
||||||
internal val KotlinWithJavaTarget<*, *>.javaSourceSets: SourceSetContainer
|
internal val Project.javaSourceSets: SourceSetContainer
|
||||||
get() = project.gradle
|
get() = gradle
|
||||||
.variantImplementationFactory<JavaSourceSetsAccessor.JavaSourceSetsAccessorVariantFactory>()
|
.variantImplementationFactory<JavaSourceSetsAccessor.JavaSourceSetsAccessorVariantFactory>()
|
||||||
.getInstance(project)
|
.getInstance(project)
|
||||||
.sourceSets
|
.sourceSets
|
||||||
Reference in New Issue
Block a user