| import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar |
| |
| description = "ABI generation for Kotlin/JVM" |
| |
| plugins { |
| kotlin("jvm") |
| id("jps-compatible") |
| } |
| |
| sourceSets { |
| "main" { projectDefault() } |
| "test" { projectDefault() } |
| } |
| |
| val embedded by configurations |
| embedded.isTransitive = false |
| configurations.getByName("compileOnly").extendsFrom(embedded) |
| configurations.getByName("testApi").extendsFrom(embedded) |
| |
| dependencies { |
| // Should come before dependency on proguarded compiler because StringUtil methods are deleted from it |
| testRuntimeOnly(intellijPlatformUtil()) { isTransitive = false } |
| |
| testRuntimeOnly(project(":kotlin-compiler")) |
| |
| compileOnly(project(":compiler:util")) |
| compileOnly(project(":compiler:cli")) |
| compileOnly(project(":compiler:backend")) |
| compileOnly(project(":compiler:frontend")) |
| compileOnly(project(":compiler:frontend.java")) |
| compileOnly(project(":compiler:plugin-api")) |
| compileOnly(project(":kotlin-build-common")) |
| |
| // Include kotlin.metadata for metadata stripping. |
| // Note that kotlin-metadata-jvm already includes kotlin-metadata, core:metadata, core:metadata.jvm, |
| // and protobuf-lite, so we only need to include kotlin-metadata-jvm in the shadow jar. |
| compileOnly(project(":kotlin-metadata")) |
| embedded(project(":kotlin-metadata-jvm")) |
| |
| compileOnly(intellijCore()) |
| compileOnly(libs.intellij.asm) |
| |
| testImplementation(libs.junit4) |
| testImplementation(projectTests(":compiler:tests-common")) |
| testImplementation(projectTests(":compiler:incremental-compilation-impl")) |
| } |
| |
| optInToExperimentalCompilerApi() |
| |
| publish() |
| |
| runtimeJarWithRelocation { |
| from(mainSourceSet.output) |
| relocate("kotlinx.metadata", "org.jetbrains.kotlin.jvm.abi.kotlinx.metadata") |
| mergeServiceFiles() // This is needed to relocate the services files for kotlinx.metadata |
| } |
| |
| sourcesJar() |
| |
| javadocJar() |
| |
| projectTest(parallel = true) { |
| workingDir = rootDir |
| dependsOn(":dist") |
| } |
| |
| testsJar() |