blob: 3b741671270cafa8d4361d00452c65a6cb3225f2 [file] [log] [blame] [edit]
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
description = "Kotlin Symbol Processing implementation using Kotlin Analysis API"
val signingKey: String? by project
val signingPassword: String? by project
val aaKotlinBaseVersion: String by project
val aaIntellijVersion: String by project
val aaGuavaVersion: String by project
val aaAsmVersion: String by project
val aaFastutilVersion: String by project
val aaStax2Version: String by project
val aaAaltoXmlVersion: String by project
val aaStreamexVersion: String by project
plugins {
kotlin("jvm")
id("org.jetbrains.dokka")
id("com.github.johnrengelman.shadow")
`maven-publish`
signing
}
dependencies {
listOf(
"com.jetbrains.intellij.platform:util-rt",
"com.jetbrains.intellij.platform:util-class-loader",
"com.jetbrains.intellij.platform:util-text-matching",
"com.jetbrains.intellij.platform:util",
"com.jetbrains.intellij.platform:util-base",
"com.jetbrains.intellij.platform:util-xml-dom",
"com.jetbrains.intellij.platform:core",
"com.jetbrains.intellij.platform:core-impl",
"com.jetbrains.intellij.platform:extensions",
"com.jetbrains.intellij.java:java-psi",
"com.jetbrains.intellij.java:java-psi-impl",
).forEach {
implementation("$it:$aaIntellijVersion") { isTransitive = false }
}
listOf(
"org.jetbrains.kotlin:high-level-api-fir-for-ide",
"org.jetbrains.kotlin:high-level-api-for-ide",
"org.jetbrains.kotlin:low-level-api-fir-for-ide",
"org.jetbrains.kotlin:analysis-api-providers-for-ide",
"org.jetbrains.kotlin:analysis-project-structure-for-ide",
"org.jetbrains.kotlin:symbol-light-classes-for-ide",
"org.jetbrains.kotlin:analysis-api-standalone-for-ide",
"org.jetbrains.kotlin:high-level-api-impl-base-for-ide",
"org.jetbrains.kotlin:kotlin-compiler-for-ide",
).forEach {
implementation("$it:$aaKotlinBaseVersion") { isTransitive = false }
}
implementation("org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.4")
implementation(kotlin("stdlib", aaKotlinBaseVersion))
implementation("com.google.guava:guava:$aaGuavaVersion")
implementation("one.util:streamex:$aaStreamexVersion")
implementation("org.jetbrains.intellij.deps.fastutil:intellij-deps-fastutil:$aaFastutilVersion")
implementation("org.jetbrains.intellij.deps:asm-all:$aaAsmVersion")
implementation("org.codehaus.woodstox:stax2-api:$aaStax2Version") { isTransitive = false }
implementation("com.fasterxml:aalto-xml:$aaAaltoXmlVersion") { isTransitive = false }
compileOnly(project(":common-deps"))
implementation(project(":api"))
implementation(project(":common-util"))
}
sourceSets.main {
java.srcDirs("src/main/kotlin")
}
fun Project.javaPluginConvention(): JavaPluginConvention = the()
val JavaPluginConvention.testSourceSet: SourceSet
get() = sourceSets.getByName("test")
val Project.testSourceSet: SourceSet
get() = javaPluginConvention().testSourceSet
repositories {
flatDir {
dirs("${project.rootDir}/third_party/prebuilt/repo/")
}
maven("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/kotlin-ide-plugin-dependencies")
maven("https://packages.jetbrains.team/maven/p/ij/intellij-dependencies")
}
tasks.withType<org.gradle.jvm.tasks.Jar> {
archiveClassifier.set("real")
}
tasks.withType<ShadowJar>() {
archiveClassifier.set("")
minimize()
}
tasks {
val sourcesJar by creating(Jar::class) {
archiveClassifier.set("sources")
from(sourceSets.main.get().allSource)
}
val dokkaJavadocJar by creating(Jar::class) {
dependsOn(dokkaJavadoc)
from(dokkaJavadoc.flatMap { it.outputDirectory })
archiveClassifier.set("javadoc")
}
publish {
dependsOn(shadowJar)
dependsOn(sourcesJar)
dependsOn(dokkaJavadocJar)
}
}
publishing {
publications {
create<MavenPublication>("shadow") {
artifactId = "symbol-processing-aa"
artifact(tasks["shadowJar"])
artifact(project(":kotlin-analysis-api").tasks["dokkaJavadocJar"])
artifact(project(":kotlin-analysis-api").tasks["sourcesJar"])
pom {
name.set("com.google.devtools.ksp:symbol-processing-aa")
description.set("KSP implementation on Kotlin Analysis API")
withXml {
fun groovy.util.Node.addDependency(
groupId: String,
artifactId: String,
version: String,
scope: String = "runtime"
) {
appendNode("dependency").apply {
appendNode("groupId", groupId)
appendNode("artifactId", artifactId)
appendNode("version", version)
appendNode("scope", scope)
}
}
asNode().appendNode("dependencies").apply {
addDependency("org.jetbrains.kotlin", "kotlin-stdlib", aaKotlinBaseVersion)
}
}
}
}
}
}
signing {
isRequired = hasProperty("signingKey")
useInMemoryPgpKeys(signingKey, signingPassword)
sign(extensions.getByType<PublishingExtension>().publications)
}
kotlin {
compilerOptions {
freeCompilerArgs.add("-Xcontext-receivers")
}
}