1*af87fb4bSXin Li import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
2*af87fb4bSXin Li
3*af87fb4bSXin Li evaluationDependsOn(":common-util")
4*af87fb4bSXin Li evaluationDependsOn(":compiler-plugin")
5*af87fb4bSXin Li
6*af87fb4bSXin Li val kotlinBaseVersion: String by project
7*af87fb4bSXin Li val signingKey: String? by project
8*af87fb4bSXin Li val signingPassword: String? by project
9*af87fb4bSXin Li
<lambda>null10*af87fb4bSXin Li plugins {
11*af87fb4bSXin Li kotlin("jvm")
12*af87fb4bSXin Li id("com.github.johnrengelman.shadow") version "6.0.0"
13*af87fb4bSXin Li `maven-publish`
14*af87fb4bSXin Li signing
15*af87fb4bSXin Li }
16*af87fb4bSXin Li
17*af87fb4bSXin Li val packedJars by configurations.creating
18*af87fb4bSXin Li
<lambda>null19*af87fb4bSXin Li dependencies {
20*af87fb4bSXin Li packedJars(project(":compiler-plugin")) { isTransitive = false }
21*af87fb4bSXin Li packedJars(project(":common-util")) { isTransitive = false }
22*af87fb4bSXin Li }
23*af87fb4bSXin Li
<lambda>null24*af87fb4bSXin Li tasks.withType<ShadowJar>() {
25*af87fb4bSXin Li archiveClassifier.set("")
26*af87fb4bSXin Li // ShadowJar picks up the `compile` configuration by default and pulls stdlib in.
27*af87fb4bSXin Li // Therefore, specifying another configuration instead.
28*af87fb4bSXin Li configurations = listOf(packedJars)
29*af87fb4bSXin Li relocate("com.intellij", "org.jetbrains.kotlin.com.intellij")
30*af87fb4bSXin Li }
31*af87fb4bSXin Li
<lambda>null32*af87fb4bSXin Li tasks {
33*af87fb4bSXin Li publish {
34*af87fb4bSXin Li dependsOn(shadowJar)
35*af87fb4bSXin Li dependsOn(project(":compiler-plugin").tasks["dokkaJavadocJar"])
36*af87fb4bSXin Li dependsOn(project(":compiler-plugin").tasks["sourcesJar"])
37*af87fb4bSXin Li }
38*af87fb4bSXin Li }
39*af87fb4bSXin Li
<lambda>null40*af87fb4bSXin Li publishing {
41*af87fb4bSXin Li publications {
42*af87fb4bSXin Li create<MavenPublication>("shadow") {
43*af87fb4bSXin Li artifactId = "symbol-processing"
44*af87fb4bSXin Li artifact(project(":compiler-plugin").tasks["dokkaJavadocJar"])
45*af87fb4bSXin Li artifact(project(":compiler-plugin").tasks["sourcesJar"])
46*af87fb4bSXin Li artifact(tasks["shadowJar"])
47*af87fb4bSXin Li pom {
48*af87fb4bSXin Li name.set("com.google.devtools.ksp:symbol-processing")
49*af87fb4bSXin Li description.set("Symbol processing for Kotlin")
50*af87fb4bSXin Li // FIXME: figure out how to make ShadowJar generate dependencies in POM,
51*af87fb4bSXin Li // or simply depends on kotlin-compiler-embeddable so that relocation
52*af87fb4bSXin Li // isn't needed, at the price of giving up composite build.
53*af87fb4bSXin Li withXml {
54*af87fb4bSXin Li fun groovy.util.Node.addDependency(
55*af87fb4bSXin Li groupId: String,
56*af87fb4bSXin Li artifactId: String,
57*af87fb4bSXin Li version: String,
58*af87fb4bSXin Li scope: String = "runtime"
59*af87fb4bSXin Li ) {
60*af87fb4bSXin Li appendNode("dependency").apply {
61*af87fb4bSXin Li appendNode("groupId", groupId)
62*af87fb4bSXin Li appendNode("artifactId", artifactId)
63*af87fb4bSXin Li appendNode("version", version)
64*af87fb4bSXin Li appendNode("scope", scope)
65*af87fb4bSXin Li }
66*af87fb4bSXin Li }
67*af87fb4bSXin Li
68*af87fb4bSXin Li asNode().appendNode("dependencies").apply {
69*af87fb4bSXin Li addDependency("org.jetbrains.kotlin", "kotlin-stdlib", kotlinBaseVersion)
70*af87fb4bSXin Li addDependency("org.jetbrains.kotlin", "kotlin-compiler-embeddable", kotlinBaseVersion)
71*af87fb4bSXin Li addDependency("com.google.devtools.ksp", "symbol-processing-api", version)
72*af87fb4bSXin Li }
73*af87fb4bSXin Li }
74*af87fb4bSXin Li }
75*af87fb4bSXin Li }
76*af87fb4bSXin Li }
77*af87fb4bSXin Li }
78*af87fb4bSXin Li
<lambda>null79*af87fb4bSXin Li signing {
80*af87fb4bSXin Li isRequired = hasProperty("signingKey")
81*af87fb4bSXin Li useInMemoryPgpKeys(signingKey, signingPassword)
82*af87fb4bSXin Li sign(extensions.getByType<PublishingExtension>().publications)
83*af87fb4bSXin Li }
84