From 8cec50e6e2b2fb268160144bac1bd9ca40bfafb5 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Thu, 29 Nov 2018 20:00:56 +0300 Subject: [PATCH] Reorder MPP plugin logic to fix eager publishing configuration In Gradle 5.0, the `publishing` extension is configured eagerly, so we need to make sure everything we use in publishing setup is already available at the point when it's triggered: * the `metadata` target * the source JARs Issue #KT-28520 Fixed --- .../jetbrains/kotlin/gradle/NewMultiplatformIT.kt | 12 ++++++++++++ .../gradle/plugin/mpp/KotlinMultiplatformPlugin.kt | 5 +++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt index 2b63713cc40..ed5e296e65e 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt @@ -188,6 +188,18 @@ class NewMultiplatformIT : BaseGradleIT() { } } + @Test + fun testMavenPublishAppliedBeforeMultiplatformPlugin() = + with(Project("sample-lib", GradleVersionRequired.AtLeast("5.0"), "new-mpp-lib-and-app")) { + setupWorkingDir() + + gradleBuildScript().modify { "apply plugin: 'maven-publish'\n$it" } + + build { + assertSuccessful() + } + } + @Test fun testResourceProcessing() = with(Project("sample-lib", gradleVersion, "new-mpp-lib-and-app")) { val targetsWithResources = listOf("jvm6", "nodeJs", "wasm32", nativeHostTargetName) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt index cafb731558a..6d012474152 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt @@ -80,14 +80,15 @@ class KotlinMultiplatformPlugin( configureSourceSets(project) setUpConfigurationAttributes(project) - configurePublishingWithMavenPublish(project) - configureSourceJars(project) // set up metadata publishing targetsFromPreset.fromPreset( KotlinMetadataTargetPreset(project, instantiator, fileResolver, kotlinPluginVersion), METADATA_TARGET_NAME ) + configureSourceJars(project) + + configurePublishingWithMavenPublish(project) // propagate compiler plugin options to the source set language settings setupCompilerPluginOptions(project)