blob: 63935c89cc6783caee83097804dbb7bc9b2e67e5 [file] [log] [blame] [edit]
import com.google.devtools.ksp.configureKtlint
import com.google.devtools.ksp.configureKtlintApplyToIdea
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
val sonatypeUserName: String? by project
val sonatypePassword: String? by project
val kotlinBaseVersion: String? by project
if (extra.has("kspOnlyVersion") && kotlinBaseVersion != null) {
val kspOnlyVersion = extra.get("kspOnlyVersion") as String
extra.set("kspVersion", "$kotlinBaseVersion-$kspOnlyVersion")
}
if (!extra.has("kspVersion")) {
extra.set("kspVersion", "255.255.255-SNAPSHOT")
}
repositories {
mavenCentral()
maven("https://redirector.kotlinlang.org/maven/bootstrap/")
}
plugins {
kotlin("jvm")
id("io.github.gradle-nexus.publish-plugin") version "2.0.0"
// Adding plugins used in multiple places to the classpath for centralized version control
id("com.gradleup.shadow") version "8.3.6" apply false
id("org.jetbrains.dokka") version "1.9.20" apply false
id("com.android.lint") version "8.10.0" apply false
}
nexusPublishing {
packageGroup.set("com.google.devtools.ksp")
repositories {
sonatype {
username.set(sonatypeUserName)
password.set(sonatypePassword)
nexusUrl.set(uri("https://ossrh-staging-api.central.sonatype.com/service/local/"))
snapshotRepositoryUrl.set(uri("https://central.sonatype.com/repository/maven-snapshots/"))
}
}
}
version = rootProject.extra.get("kspVersion") as String
configureKtlintApplyToIdea()
subprojects {
group = "com.google.devtools.ksp"
version = rootProject.extra.get("kspVersion") as String
configureKtlint()
repositories {
mavenCentral()
google()
maven("https://redirector.kotlinlang.org/maven/bootstrap/")
maven("https://www.jetbrains.com/intellij-repository/releases")
}
pluginManager.withPlugin("maven-publish") {
val publishExtension = extensions.getByType<PublishingExtension>()
publishExtension.repositories {
if (extra.has("outRepo")) {
val outRepo = extra.get("outRepo") as String
maven {
url = File(outRepo).toURI()
}
} else {
mavenLocal()
}
maven {
name = "test"
url = uri("${rootProject.layout.buildDirectory.get().asFile}/repos/test")
}
}
publishExtension.publications.whenObjectAdded {
check(this is MavenPublication) {
"unexpected publication $this"
}
val publication = this
publication.pom {
url.set("https://goo.gle/ksp")
licenses {
license {
name.set("The Apache License, Version 2.0")
url.set("http://www.apache.org/licenses/LICENSE-2.0.txt")
}
}
developers {
developer {
name.set("KSP Team")
}
}
scm {
connection.set("scm:git:https://github.com/google/ksp.git")
developerConnection.set("scm:git:https://github.com/google/ksp.git")
url.set("https://github.com/google/ksp")
}
}
}
}
val compileJavaVersion = JavaLanguageVersion.of(17)
pluginManager.withPlugin("org.jetbrains.kotlin.jvm") {
configure<JavaPluginExtension> {
toolchain.languageVersion.set(compileJavaVersion)
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
configure<KotlinJvmProjectExtension> {
compilerOptions {
jvmTarget = JvmTarget.JVM_1_8
languageVersion.set(KotlinVersion.KOTLIN_1_9)
apiVersion.set(languageVersion)
}
jvmToolchain {
languageVersion = compileJavaVersion
}
}
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach {
compilerOptions.freeCompilerArgs.add("-Xskip-prerelease-check")
}
tasks.withType<Jar>().configureEach {
isPreserveFileTimestamps = false
isReproducibleFileOrder = true
}
}