diff --git a/samples/settings.gradle b/samples/settings.gradle index 33c0b60c5e8..d2bbeb5e1c7 100644 --- a/samples/settings.gradle +++ b/samples/settings.gradle @@ -1,5 +1,6 @@ // NOTE: If a new sample uses only platform libs, // please add it into the 'buildSamplesWithPlatfromLibs' task in build.gradle. +enableFeaturePreview('GRADLE_METADATA') include ':csvparser' include ':gitchurn' include ':globalState' diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt index d833437ce82..5576a5c9017 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KonanPlugin.kt @@ -280,7 +280,8 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR // TODO: Remove them when an API for env vars is provided. KONAN_CONFIGURATION_BUILD_DIR ("konan.configuration.build.dir"), KONAN_DEBUGGING_SYMBOLS ("konan.debugging.symbols"), - KONAN_OPTIMIZATIONS_ENABLE ("konan.optimizations.enable") + KONAN_OPTIMIZATIONS_ENABLE ("konan.optimizations.enable"), + KONAN_PUBLICATION_ENABLED ("konan.publication.enabled") } companion object { @@ -310,6 +311,11 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR project.tasks.create(KONAN_GENERATE_CMAKE_TASK_NAME, KonanGenerateCMakeTask::class.java) project.extensions.create(KONAN_EXTENSION_NAME, KonanExtension::class.java) val container = project.extensions.create(KonanArtifactContainer::class.java, ARTIFACTS_CONTAINER_NAME, KonanArtifactContainer::class.java, project) + val isPublicationEnabled = project.gradle.services.get(FeaturePreviews::class.java).isFeatureEnabled(FeaturePreviews.Feature.GRADLE_METADATA) + project.setProperty(ProjectProperty.KONAN_PUBLICATION_ENABLED, isPublicationEnabled) + if (!isPublicationEnabled) { + project.logger.warn("feature GRADLE_METADATA is not enabled: publication is disabled") + } // Set additional project properties like konan.home, konan.build.targets etc. if (!project.hasProperty(ProjectProperty.KONAN_HOME)) { @@ -348,10 +354,12 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR } } //project.gradle.experimentalFeatures.enable() - project.gradle.services.get(FeaturePreviews::class.java).enableFeature(FeaturePreviews.Feature.GRADLE_METADATA) + // Enable multiplatform support project.pluginManager.apply(KotlinNativePlatformPlugin::class.java) project.afterEvaluate { + if (!isPublicationEnabled) + return@afterEvaluate project.pluginManager.withPlugin("maven-publish") { container.all { val buildingConfig = it diff --git a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBaseTasks.kt b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBaseTasks.kt index c89e0f214a7..7f0a18179a1 100644 --- a/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBaseTasks.kt +++ b/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/tasks/KonanBaseTasks.kt @@ -98,6 +98,8 @@ abstract class KonanArtifactTask: KonanTargetableTask(), KonanArtifactSpec { } project.pluginManager.withPlugin("maven-publish") { + if (!(project.getProperty(KonanPlugin.ProjectProperty.KONAN_PUBLICATION_ENABLED) as Boolean)) + return@withPlugin platformConfiguration.artifacts.add(object: PublishArtifact { override fun getName() = "${artifact.name.removeSuffix("$artifactSuffix")}/${target.name}" override fun getExtension() = if (artifactSuffix.startsWith('.')) artifactSuffix.substring(1) else artifactSuffix