diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt index 01457996090..4b943d3fabf 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTargetConfigurator.kt @@ -210,7 +210,7 @@ abstract class AbstractKotlinTargetConfigurator isCanBeResolved = false isCanBeConsumed = true configureSourcesPublicationAttributes(target) - project.whenEvaluated { isCanBeConsumed = target.internal.isSourcesPublishable } + project.launch { isCanBeConsumed = target.internal.isSourcesPublishableFuture.await() } } if (createTestCompilation) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/InternalKotlinTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/InternalKotlinTarget.kt index 29d035139bb..4c71695acda 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/InternalKotlinTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/InternalKotlinTarget.kt @@ -10,6 +10,8 @@ import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.plugin.KotlinTargetComponent +import org.jetbrains.kotlin.gradle.plugin.await +import org.jetbrains.kotlin.gradle.utils.futureExtension import org.jetbrains.kotlin.tooling.core.HasMutableExtras internal interface InternalKotlinTarget : KotlinTarget, HasMutableExtras { @@ -24,4 +26,10 @@ internal interface InternalKotlinTarget : KotlinTarget, HasMutableExtras { internal val KotlinTarget.internal: InternalKotlinTarget get() = (this as? InternalKotlinTarget) ?: throw IllegalArgumentException( "KotlinTarget($name) ${this::class} does not implement ${InternalKotlinTarget::class}" - ) \ No newline at end of file + ) + + +internal val InternalKotlinTarget.isSourcesPublishableFuture by futureExtension("isSourcesPublishableFuture") { + KotlinPluginLifecycle.Stage.AfterFinaliseDsl.await() + isSourcesPublishable +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetSoftwareComponent.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetSoftwareComponent.kt index 93942c6e193..f2e61638229 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetSoftwareComponent.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetSoftwareComponent.kt @@ -16,6 +16,8 @@ import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension import org.jetbrains.kotlin.gradle.plugin.launch import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinTargetSoftwareComponent import org.jetbrains.kotlin.tooling.core.UnsafeApi +import org.jetbrains.kotlin.gradle.plugin.mpp.isSourcesPublishableFuture + internal fun ExternalKotlinTargetSoftwareComponent( @@ -32,8 +34,12 @@ internal fun ExternalKotlinTargetSoftwareComponent( details.mapToMavenScope("runtime") } - if (target.isSourcesPublishable) { - adhocSoftwareComponent.addVariantsFromConfiguration(target.sourcesElementsPublishedConfiguration) { _ -> } + target.project.launch { + if (target.isSourcesPublishableFuture.await()) { + adhocSoftwareComponent.addVariantsFromConfiguration(target.sourcesElementsPublishedConfiguration) { details -> + details.mapToOptional() + } + } } @OptIn(UnsafeApi::class)