From ca4547c40a0d7d06b228f1cd878857543c0ebaef Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 27 Sep 2018 17:21:55 +0300 Subject: [PATCH] Add Maven Publish to MPP library wizards (in progress) #KT-27201 Fixed --- ...GradleAbstractMultiplatformModuleBuilder.kt | 18 ++++++++++++++++++ ...leMobileSharedMultiplatformModuleBuilder.kt | 7 +++++++ ...inGradleSharedMultiplatformModuleBuilder.kt | 7 +++++++ 3 files changed, 32 insertions(+) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleAbstractMultiplatformModuleBuilder.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleAbstractMultiplatformModuleBuilder.kt index aa175f87887..337e3421721 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleAbstractMultiplatformModuleBuilder.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleAbstractMultiplatformModuleBuilder.kt @@ -46,6 +46,19 @@ abstract class KotlinGradleAbstractMultiplatformModuleBuilder( return moduleDir } + private fun enableGradleMetadataPreview(rootDir: VirtualFile) { + val settingsGradle = rootDir.findOrCreateChildData(null, "settings.gradle") + val previousText = settingsGradle.inputStream.bufferedReader().use { it.readText() } + settingsGradle.bufferedWriter().use { + it.write(previousText) + if (previousText.isNotEmpty()) { + it.newLine() + } + it.write("enableFeaturePreview('GRADLE_METADATA')") + it.newLine() + } + } + override fun setupModule(module: Module) { try { module.gradleModuleBuilder = this @@ -58,6 +71,9 @@ abstract class KotlinGradleAbstractMultiplatformModuleBuilder( } val builder = BuildScriptDataBuilder(buildGradle) builder.setupAdditionalDependencies() + if (shouldEnableGradleMetadataPreview) { + enableGradleMetadataPreview(rootDir) + } val buildGradleText = if (!mppInApplication) { GradleKotlinMPPFrameworkSupportProvider().addSupport(builder, module, sdk = null, specifyPluginVersionIfNeeded = true) builder.buildConfigurationPart() + builder.buildMainPart() + buildMultiPlatformPart() @@ -119,6 +135,8 @@ abstract class KotlinGradleAbstractMultiplatformModuleBuilder( protected open val notImportedCommonSourceSets = false + protected open val shouldEnableGradleMetadataPreview = false + protected val defaultNativeTarget by lazy { try { HostManager.host diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleMobileSharedMultiplatformModuleBuilder.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleMobileSharedMultiplatformModuleBuilder.kt index 04230fac941..3c9bbf378e1 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleMobileSharedMultiplatformModuleBuilder.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleMobileSharedMultiplatformModuleBuilder.kt @@ -22,6 +22,8 @@ class KotlinGradleMobileSharedMultiplatformModuleBuilder : KotlinGradleAbstractM private val nativeSourceName get() = "$nativeTargetName$productionSuffix" private val nativeTestName get() = "$nativeTargetName$testSuffix" + override val shouldEnableGradleMetadataPreview: Boolean = true + override fun getBuilderId() = "kotlin.gradle.multiplatform.mobileshared" override fun getPresentableName() = "Kotlin (Mobile Shared Library)" @@ -138,6 +140,11 @@ class KotlinGradleMobileSharedMultiplatformModuleBuilder : KotlinGradleAbstractM override fun buildMultiPlatformPart(): String { return """ + group 'com.example' + version '0.0.1' + + apply plugin: 'maven-publish' + kotlin { targets { fromPreset(presets.jvm, '$jvmTargetName') diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleSharedMultiplatformModuleBuilder.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleSharedMultiplatformModuleBuilder.kt index 7b3a0784c90..2ee5be4b7a3 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleSharedMultiplatformModuleBuilder.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleSharedMultiplatformModuleBuilder.kt @@ -26,6 +26,8 @@ class KotlinGradleSharedMultiplatformModuleBuilder : KotlinGradleAbstractMultipl private val nativeSourceName get() = "$nativeTargetName$productionSuffix" private val nativeTestName get() = "$nativeTargetName$testSuffix" + override val shouldEnableGradleMetadataPreview: Boolean = true + override fun getBuilderId() = "kotlin.gradle.multiplatform.shared" override fun getPresentableName() = "Kotlin (Multiplatform Library)" @@ -174,6 +176,11 @@ class KotlinGradleSharedMultiplatformModuleBuilder : KotlinGradleAbstractMultipl override fun buildMultiPlatformPart(): String { return """ + group 'com.example' + version '0.0.1' + + apply plugin: 'maven-publish' + kotlin { targets { fromPreset(presets.jvm, '$jvmTargetName')