diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt index f6015efe7df..450e958fe8c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinMultiplatformExtension.kt @@ -9,16 +9,16 @@ import org.gradle.api.Action import org.gradle.api.InvalidUserCodeException import org.gradle.api.NamedDomainObjectCollection import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.PRESETS_API_IS_DEPRECATED_MESSAGE -import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi import org.jetbrains.kotlin.gradle.internal.syncCommonOptions import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage.AfterFinaliseDsl +import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics import org.jetbrains.kotlin.gradle.plugin.diagnostics.reportDiagnostic -import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider import org.jetbrains.kotlin.gradle.plugin.hierarchy.KotlinHierarchyDslImpl import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.targets.android.internal.InternalKotlinTargetPreset @@ -363,3 +363,5 @@ internal fun KotlinTargetsContainerWithPresets.configureOrCre } } } + +internal val KotlinMultiplatformExtension.metadataTarget get() = metadata() as KotlinMetadataTarget \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinSoftwareComponent.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinSoftwareComponent.kt index cfdb4cc56cc..43047cc9681 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinSoftwareComponent.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinSoftwareComponent.kt @@ -7,7 +7,9 @@ package org.jetbrains.kotlin.gradle.plugin.mpp import org.gradle.api.Project import org.gradle.api.artifacts.* -import org.gradle.api.attributes.* +import org.gradle.api.attributes.Attribute +import org.gradle.api.attributes.AttributeContainer +import org.gradle.api.attributes.Usage import org.gradle.api.capabilities.Capability import org.gradle.api.component.ComponentWithCoordinates import org.gradle.api.component.ComponentWithVariants @@ -18,18 +20,20 @@ import org.gradle.api.provider.SetProperty import org.gradle.api.publish.maven.MavenPublication import org.gradle.api.tasks.TaskProvider import org.gradle.jvm.tasks.Jar +import org.jetbrains.kotlin.gradle.dsl.metadataTarget import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension -import org.jetbrains.kotlin.gradle.plugin.* +import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.MAIN_COMPILATION_NAME import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage.AfterFinaliseCompilations +import org.jetbrains.kotlin.gradle.plugin.KotlinTarget +import org.jetbrains.kotlin.gradle.plugin.ProjectLocalConfigurations import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider -import org.jetbrains.kotlin.gradle.utils.markResolvable +import org.jetbrains.kotlin.gradle.plugin.await +import org.jetbrains.kotlin.gradle.plugin.mpp.DefaultKotlinUsageContext.PublishOnlyIf import org.jetbrains.kotlin.gradle.targets.metadata.* -import org.jetbrains.kotlin.gradle.targets.metadata.COMMON_MAIN_ELEMENTS_CONFIGURATION_NAME -import org.jetbrains.kotlin.gradle.targets.metadata.isCompatibilityMetadataVariantEnabled -import org.jetbrains.kotlin.gradle.targets.metadata.isKotlinGranularMetadataEnabled import org.jetbrains.kotlin.gradle.utils.Future import org.jetbrains.kotlin.gradle.utils.future +import org.jetbrains.kotlin.gradle.utils.markResolvable import org.jetbrains.kotlin.gradle.utils.setProperty import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly @@ -41,7 +45,7 @@ abstract class KotlinSoftwareComponent( override fun getName(): String = name - private val metadataTarget get() = project.multiplatformExtension.metadata() as KotlinMetadataTarget + private val metadataTarget get() = project.multiplatformExtension.metadataTarget private val _variants = project.future { AfterFinaliseCompilations.await() diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/ProjectMetadataProviderImpl.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/ProjectMetadataProviderImpl.kt index b3d38c513f8..7e9de44d0f7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/ProjectMetadataProviderImpl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/ProjectMetadataProviderImpl.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp import org.gradle.api.Project import org.gradle.api.file.FileCollection import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import org.jetbrains.kotlin.gradle.dsl.metadataTarget import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle.Stage.AfterEvaluateBuildscript import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet @@ -62,7 +63,6 @@ internal suspend fun Project.collectSourceSetMetadataOutputs(): Map { - val metadataTarget = metadata() as KotlinMetadataTarget return metadataTarget .awaitMetadataCompilationsCreated() // TODO: KT-62332/Stop-Creating-legacy-metadata-compilation-with-name-main diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt index 5737a50610e..9b89318bcd5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/metadata/KotlinMetadataTargetConfigurator.kt @@ -19,6 +19,7 @@ import org.gradle.api.tasks.bundling.Zip import org.jetbrains.kotlin.commonizer.SharedCommonizerTarget import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions import org.jetbrains.kotlin.gradle.dsl.kotlinExtension +import org.jetbrains.kotlin.gradle.dsl.metadataTarget import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.mpp.* @@ -482,7 +483,7 @@ internal suspend fun KotlinMetadataTarget.awaitMetadataCompilationsCreated(): Na } internal suspend fun Project.findMetadataCompilation(sourceSet: KotlinSourceSet): KotlinMetadataCompilation<*>? { - val metadataTarget = multiplatformExtension.metadata() as KotlinMetadataTarget + val metadataTarget = multiplatformExtension.metadataTarget metadataTarget.awaitMetadataCompilationsCreated() return metadataTarget.compilations.findByName(sourceSet.name) as KotlinMetadataCompilation<*>? } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerConfigurations.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerConfigurations.kt index 171a2a5a1af..c76d1da285f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerConfigurations.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CInteropCommonizerConfigurations.kt @@ -3,26 +3,23 @@ package org.jetbrains.kotlin.gradle.targets.native.internal import org.gradle.api.Project import org.gradle.api.artifacts.Configuration import org.gradle.api.attributes.Category -import org.gradle.api.attributes.LibraryElements import org.gradle.api.attributes.Usage import org.gradle.api.file.FileCollection import org.jetbrains.kotlin.commonizer.CommonizerOutputFileLayout import org.jetbrains.kotlin.commonizer.SharedCommonizerTarget import org.jetbrains.kotlin.commonizer.identityString +import org.jetbrains.kotlin.gradle.dsl.metadataTarget import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull -import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.categoryByName import org.jetbrains.kotlin.gradle.plugin.launch -import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages import org.jetbrains.kotlin.gradle.plugin.mpp.internal import org.jetbrains.kotlin.gradle.plugin.mpp.resolvableMetadataConfiguration import org.jetbrains.kotlin.gradle.plugin.sources.internal import org.jetbrains.kotlin.gradle.targets.metadata.awaitMetadataCompilationsCreated import org.jetbrains.kotlin.gradle.targets.metadata.findMetadataCompilation -import org.jetbrains.kotlin.gradle.targets.native.internal.CInteropKlibLibraryElements.cinteropKlibLibraryElements import org.jetbrains.kotlin.gradle.utils.markConsumable import org.jetbrains.kotlin.gradle.utils.markResolvable import org.jetbrains.kotlin.tooling.core.UnsafeApi @@ -71,7 +68,7 @@ internal fun Project.locateOrCreateCommonizedCInteropApiElementsConfiguration(co setupBasicCommonizedCInteropConfigurationAttributes(configuration, commonizerTarget) launch { - val metadataTarget = multiplatformExtension.metadata() as KotlinMetadataTarget + val metadataTarget = multiplatformExtension.metadataTarget metadataTarget.awaitMetadataCompilationsCreated() .filter { compilation -> compilation.commonizerTarget.await() == commonizerTarget } .forEach { compilation -> configuration.extendsFrom(compilation.internal.configurations.apiConfiguration) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinMetadataTargetCompilationsTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinMetadataTargetCompilationsTest.kt index 7fa547b2d22..bf286f3c9a3 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinMetadataTargetCompilationsTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/KotlinMetadataTargetCompilationsTest.kt @@ -8,9 +8,9 @@ package org.jetbrains.kotlin.gradle.unitTests import org.gradle.api.NamedDomainObjectContainer +import org.jetbrains.kotlin.gradle.dsl.metadataTarget import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation -import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMetadataTarget import org.jetbrains.kotlin.gradle.targets.metadata.awaitMetadataCompilationsCreated import org.jetbrains.kotlin.gradle.util.buildProjectWithMPP import org.jetbrains.kotlin.gradle.util.runLifecycleAwareTest @@ -29,7 +29,7 @@ class KotlinMetadataTargetCompilationsTest { kotlin.applyDefaultHierarchyTemplate() project.runLifecycleAwareTest { - val target = kotlin.metadata() as KotlinMetadataTarget + val target = kotlin.metadataTarget val metadataCompilations = target.awaitMetadataCompilationsCreated() metadataCompilations.assertExists("commonMain") metadataCompilations.assertExists("nativeMain") @@ -49,7 +49,7 @@ class KotlinMetadataTargetCompilationsTest { kotlin.applyDefaultHierarchyTemplate() project.runLifecycleAwareTest { - val target = kotlin.metadata() as KotlinMetadataTarget + val target = kotlin.metadataTarget val compilations = target.awaitMetadataCompilationsCreated() compilations.assertExistsNot("commonMain") }