From 1b3b83755ed2138f45b1e8e85bf6d5a789dd45e0 Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Wed, 8 Feb 2023 19:51:53 +0100 Subject: [PATCH] [Gradle] Add withSourcesJar to gradle dsl * Each target can be configured to either publish or not its sources. * For convenience withSourcesJar available also on kotlin multiplatform extension level. It then calls `withSourcesJar` for each target. ^KT-55881 In Progress --- .../org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt | 2 ++ .../kotlin/gradle/dsl/KotlinMultiplatformExtension.kt | 4 ++++ .../kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt | 5 +++++ .../gradle/plugin/mpp/external/ExternalKotlinTargetImpl.kt | 5 +++++ 4 files changed, 16 insertions(+) diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt index 295104c4fce..520939e1839 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt @@ -38,6 +38,8 @@ interface KotlinTarget : Named, HasAttributes { val publishable: Boolean + fun withSourcesJar(publish: Boolean = true) + val components: Set fun mavenPublication(action: MavenPublication.() -> Unit) = mavenPublication(Action { action(it) }) 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 d9cabae99b0..12096cffccd 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 @@ -65,6 +65,10 @@ abstract class KotlinMultiplatformExtension(project: Project) : fun metadata(configure: Action>>) = metadata { configure.execute(this) } + fun withSourcesJar(publish: Boolean = true) { + targets.all { withSourcesJar(publish) } + } + fun targetFromPreset( preset: KotlinTargetPreset, name: String = preset.name, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt index 1f86046d682..1c614c3fd86 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt @@ -67,6 +67,11 @@ abstract class AbstractKotlinTarget( override val publishable: Boolean get() = true + internal var publishSources: Boolean = true + override fun withSourcesJar(publish: Boolean) { + publishSources = publish + } + @InternalKotlinGradlePluginApi override val kotlinComponents: Set by lazy { val mainCompilation = compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetImpl.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetImpl.kt index e2f11f2ec29..1fe4c188f64 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetImpl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetImpl.kt @@ -58,6 +58,11 @@ internal class ExternalKotlinTargetImpl internal constructor( artifactsTaskLocator.locate(this) } + private var publishSources: Boolean = true + override fun withSourcesJar(publish: Boolean) { + publishSources = publish + } + override val artifactsTaskName: String get() = artifactsTask.name