From a58d6fd13abbca1d1ba0df79e87547001a8c1012 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Wed, 5 Apr 2023 12:09:45 +0200 Subject: [PATCH] Publish 'kotlinx-serialization-compiler-plugin' separately - Also publish 'kotlinx-serialization-compiler-plugin-embeddable' to be used with 'kotlin-compiler-embeddable'. - Now Serialization Maven and Gradle plugins do not embed plugin into itself, but declare on published one normal dependency. - 'kotlin-serialization-unshaded' publication is deprecated. ^KT-52811 In Progress --- .../kotlin-main-kts-test/build.gradle.kts | 4 +- .../kotlin/mainKts/test/mainKtsTest.kt | 2 - .../tools/kotlin-maven-serialization/pom.xml | 43 +++---------------- .../kotlin-serialization/build.gradle.kts | 2 - .../gradle/SerializationSubplugin.kt | 4 +- .../kotlinx-serialization/build.gradle.kts | 2 + .../build.gradle.kts | 19 ++++++++ settings.gradle | 2 + 8 files changed, 34 insertions(+), 44 deletions(-) create mode 100644 plugins/kotlinx-serialization/kotlinx-serialization.embeddable/build.gradle.kts diff --git a/libraries/tools/kotlin-main-kts-test/build.gradle.kts b/libraries/tools/kotlin-main-kts-test/build.gradle.kts index 23834f608d2..710b9dedde5 100644 --- a/libraries/tools/kotlin-main-kts-test/build.gradle.kts +++ b/libraries/tools/kotlin-main-kts-test/build.gradle.kts @@ -15,7 +15,7 @@ dependencies { testApi(commonDependency("junit")) testApi(projectTests(":kotlin-scripting-compiler")) { isTransitive = false } testImplementation(project(":kotlin-compiler-embeddable")) - kotlinxSerializationGradlePluginClasspath(project(":kotlin-serialization")) { isTransitive = false } + kotlinxSerializationGradlePluginClasspath(project(":kotlinx-serialization-compiler-plugin.embeddable")) { isTransitive = false } } sourceSets { @@ -24,7 +24,7 @@ sourceSets { } projectTest(parallel = true) { - dependsOn(":dist", ":kotlin-serialization:jar") + dependsOn(":dist", ":kotlinx-serialization-compiler-plugin.embeddable:embeddable") val localKotlinxSerializationPluginClasspath: FileCollection = kotlinxSerializationGradlePluginClasspath doFirst { systemProperty("kotlin.script.test.kotlinx.serialization.plugin.classpath", localKotlinxSerializationPluginClasspath.asPath) diff --git a/libraries/tools/kotlin-main-kts-test/test/org/jetbrains/kotlin/mainKts/test/mainKtsTest.kt b/libraries/tools/kotlin-main-kts-test/test/org/jetbrains/kotlin/mainKts/test/mainKtsTest.kt index bb222518a2e..76a3bf3b70e 100644 --- a/libraries/tools/kotlin-main-kts-test/test/org/jetbrains/kotlin/mainKts/test/mainKtsTest.kt +++ b/libraries/tools/kotlin-main-kts-test/test/org/jetbrains/kotlin/mainKts/test/mainKtsTest.kt @@ -246,8 +246,6 @@ class MainKtsTest { @Test fun testHelloSerialization() { // the embeddable plugin is needed for this test, because embeddable compiler is used. - // furtunately appropriate gradle plugin can serve as an embeddable compiler plugin now - // so, the path to it is prepared in the build file val serializationPluginClasspath = System.getProperty("kotlin.script.test.kotlinx.serialization.plugin.classpath")!! val out = captureOut { val res = evalFileWithConfigurations( diff --git a/libraries/tools/kotlin-maven-serialization/pom.xml b/libraries/tools/kotlin-maven-serialization/pom.xml index 792d4820f82..5223e7e0282 100755 --- a/libraries/tools/kotlin-maven-serialization/pom.xml +++ b/libraries/tools/kotlin-maven-serialization/pom.xml @@ -5,12 +5,6 @@ 4.0.0 - ${basedir}/../../../plugins/kotlinx-serialization/kotlinx-serialization.common/src - ${basedir}/../../../plugins/kotlinx-serialization/kotlinx-serialization.k1/src - ${basedir}/../../../plugins/kotlinx-serialization/kotlinx-serialization.k2/src - ${basedir}/../../../plugins/kotlinx-serialization/kotlinx-serialization.backend/src - ${basedir}/../../../plugins/kotlinx-serialization/kotlinx-serialization.cli/src - ${basedir}/../../../plugins/kotlinx-serialization/kotlinx-serialization.cli/resources ${basedir}/src/main/kotlin @@ -45,13 +39,15 @@ ${maven.version} provided + + org.jetbrains.kotlin + kotlinx-serialization-compiler-plugin + ${project.version} + provided + - - ${serialization.resources} - - org.codehaus.mojo @@ -62,11 +58,6 @@ add-source - ${serialization.common.src} - ${serialization.k1.src} - ${serialization.k2.src} - ${serialization.backend.src} - ${serialization.cli.src} ${serialization.maven.plugin.src} @@ -88,30 +79,10 @@ 1.8 - -Xjvm-default=enable - -opt-in=org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI - -opt-in=org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi - -opt-in=org.jetbrains.kotlin.utils.addToStdlib.UnsafeCastFunction - -Xcontext-receivers + -Xjvm-default=all - - org.apache.maven.plugins - maven-compiler-plugin - 3.5.1 - - - default-compile - none - - - java-compile - compile - compile - - - org.codehaus.plexus plexus-component-metadata diff --git a/libraries/tools/kotlin-serialization/build.gradle.kts b/libraries/tools/kotlin-serialization/build.gradle.kts index 7269a524859..25cefdad232 100644 --- a/libraries/tools/kotlin-serialization/build.gradle.kts +++ b/libraries/tools/kotlin-serialization/build.gradle.kts @@ -14,8 +14,6 @@ dependencies { commonCompileOnly(project(":kotlin-gradle-plugin")) commonCompileOnly(project(":kotlin-compiler-embeddable")) - - embedded(project(":kotlinx-serialization-compiler-plugin")) { isTransitive = false } } gradlePlugin { diff --git a/libraries/tools/kotlin-serialization/src/common/kotlin/org/jetbrains/kotlinx/serialization/gradle/SerializationSubplugin.kt b/libraries/tools/kotlin-serialization/src/common/kotlin/org/jetbrains/kotlinx/serialization/gradle/SerializationSubplugin.kt index fd1288c5e22..575b49fa0b3 100644 --- a/libraries/tools/kotlin-serialization/src/common/kotlin/org/jetbrains/kotlinx/serialization/gradle/SerializationSubplugin.kt +++ b/libraries/tools/kotlin-serialization/src/common/kotlin/org/jetbrains/kotlinx/serialization/gradle/SerializationSubplugin.kt @@ -24,8 +24,8 @@ class SerializationGradleSubplugin : companion object { const val SERIALIZATION_GROUP_NAME = "org.jetbrains.kotlin" - const val SERIALIZATION_ARTIFACT_NAME = "kotlin-serialization" - const val SERIALIZATION_ARTIFACT_UNSHADED_NAME = "kotlin-serialization-unshaded" + const val SERIALIZATION_ARTIFACT_NAME = "kotlinx-serialization-compiler-plugin-embeddable" + const val SERIALIZATION_ARTIFACT_UNSHADED_NAME = "kotlinx-serialization-compiler-plugin" } override fun isApplicable(kotlinCompilation: KotlinCompilation<*>): Boolean = true diff --git a/plugins/kotlinx-serialization/build.gradle.kts b/plugins/kotlinx-serialization/build.gradle.kts index 83c7756c828..1843e74589c 100644 --- a/plugins/kotlinx-serialization/build.gradle.kts +++ b/plugins/kotlinx-serialization/build.gradle.kts @@ -72,6 +72,8 @@ sourceSets { optInToExperimentalCompilerApi() +publish() + runtimeJar() sourcesJar() javadocJar() diff --git a/plugins/kotlinx-serialization/kotlinx-serialization.embeddable/build.gradle.kts b/plugins/kotlinx-serialization/kotlinx-serialization.embeddable/build.gradle.kts new file mode 100644 index 00000000000..300a251ceb7 --- /dev/null +++ b/plugins/kotlinx-serialization/kotlinx-serialization.embeddable/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + id("org.jetbrains.kotlin.jvm") +} + +dependencies { + embedded(project(":kotlinx-serialization-compiler-plugin")) { isTransitive = false } +} + +publish { + artifactId = artifactId.replace(".", "-") +} + +runtimeJar(rewriteDefaultJarDepsToShadedCompiler()) +sourcesJarWithSourcesFromEmbedded( + project(":kotlinx-serialization-compiler-plugin").tasks.named("sourcesJar") +) +javadocJarWithJavadocFromEmbedded( + project(":kotlinx-serialization-compiler-plugin").tasks.named("javadocJar") +) diff --git a/settings.gradle b/settings.gradle index bf5ea4d12f2..e5150facae8 100644 --- a/settings.gradle +++ b/settings.gradle @@ -323,6 +323,7 @@ include ":kotlin-lombok-compiler-plugin", ":kotlin-lombok" include ":kotlinx-serialization-compiler-plugin", + ":kotlinx-serialization-compiler-plugin.embeddable", ":kotlinx-serialization-compiler-plugin.common", ":kotlinx-serialization-compiler-plugin.k1", ":kotlinx-serialization-compiler-plugin.k2", @@ -783,6 +784,7 @@ project(':js:js.tests').projectDir = "$rootDir/js/js.tests" as File project(':js:js.engines').projectDir = "$rootDir/js/js.engines" as File project(':kotlinx-serialization-compiler-plugin').projectDir = "$rootDir/plugins/kotlinx-serialization" as File +project(':kotlinx-serialization-compiler-plugin.embeddable').projectDir = "$rootDir/plugins/kotlinx-serialization/kotlinx-serialization.embeddable" as File project(':kotlinx-serialization-compiler-plugin.cli').projectDir = "$rootDir/plugins/kotlinx-serialization/kotlinx-serialization.cli" as File project(':kotlinx-serialization-compiler-plugin.backend').projectDir = "$rootDir/plugins/kotlinx-serialization/kotlinx-serialization.backend" as File project(':kotlinx-serialization-compiler-plugin.k1').projectDir = "$rootDir/plugins/kotlinx-serialization/kotlinx-serialization.k1" as File