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
This commit is contained in:
Yahor Berdnikau
2023-04-05 12:09:45 +02:00
committed by Space Team
parent 78c94b65b9
commit a58d6fd13a
8 changed files with 34 additions and 44 deletions
@@ -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)
@@ -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(
@@ -5,12 +5,6 @@
<modelVersion>4.0.0</modelVersion>
<properties>
<serialization.common.src>${basedir}/../../../plugins/kotlinx-serialization/kotlinx-serialization.common/src</serialization.common.src>
<serialization.k1.src>${basedir}/../../../plugins/kotlinx-serialization/kotlinx-serialization.k1/src</serialization.k1.src>
<serialization.k2.src>${basedir}/../../../plugins/kotlinx-serialization/kotlinx-serialization.k2/src</serialization.k2.src>
<serialization.backend.src>${basedir}/../../../plugins/kotlinx-serialization/kotlinx-serialization.backend/src</serialization.backend.src>
<serialization.cli.src>${basedir}/../../../plugins/kotlinx-serialization/kotlinx-serialization.cli/src</serialization.cli.src>
<serialization.resources>${basedir}/../../../plugins/kotlinx-serialization/kotlinx-serialization.cli/resources</serialization.resources>
<serialization.maven.plugin.src>${basedir}/src/main/kotlin</serialization.maven.plugin.src>
</properties>
@@ -45,13 +39,15 @@
<version>${maven.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlinx-serialization-compiler-plugin</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource><directory>${serialization.resources}</directory></resource>
</resources>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
@@ -62,11 +58,6 @@
<goals><goal>add-source</goal></goals>
<configuration>
<sources>
<source>${serialization.common.src}</source>
<source>${serialization.k1.src}</source>
<source>${serialization.k2.src}</source>
<source>${serialization.backend.src}</source>
<source>${serialization.cli.src}</source>
<source>${serialization.maven.plugin.src}</source>
</sources>
</configuration>
@@ -88,30 +79,10 @@
<configuration>
<jvmTarget>1.8</jvmTarget>
<args>
<arg>-Xjvm-default=enable</arg>
<arg>-opt-in=org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI</arg>
<arg>-opt-in=org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi</arg>
<arg>-opt-in=org.jetbrains.kotlin.utils.addToStdlib.UnsafeCastFunction</arg>
<arg>-Xcontext-receivers</arg>
<arg>-Xjvm-default=all</arg>
</args>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<executions>
<execution>
<id>default-compile</id>
<phase>none</phase>
</execution>
<execution>
<id>java-compile</id>
<phase>compile</phase>
<goals> <goal>compile</goal> </goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-metadata</artifactId>
@@ -14,8 +14,6 @@ dependencies {
commonCompileOnly(project(":kotlin-gradle-plugin"))
commonCompileOnly(project(":kotlin-compiler-embeddable"))
embedded(project(":kotlinx-serialization-compiler-plugin")) { isTransitive = false }
}
gradlePlugin {
@@ -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
@@ -72,6 +72,8 @@ sourceSets {
optInToExperimentalCompilerApi()
publish()
runtimeJar()
sourcesJar()
javadocJar()
@@ -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<Jar>("sourcesJar")
)
javadocJarWithJavadocFromEmbedded(
project(":kotlinx-serialization-compiler-plugin").tasks.named<Jar>("javadocJar")
)
+2
View File
@@ -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