build.gradle.kts (53 lines of code) (raw):
import org.gradle.kotlin.dsl.withType
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
plugins {
alias(libs.plugins.kotlin)
alias(libs.plugins.spotless)
}
val versionNumber: String by extra {
project.findProperty("version")?.toString()
?.takeIf { it.matches(Regex("""\d+\.\d+\.\d+.*""")) }
?: ("SNAPSHOT-" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")))
}
allprojects {
group = "teamcity-bazel-plugin"
version = versionNumber
repositories {
mavenCentral()
maven {
url = uri("https://download.jetbrains.com/teamcity-repository/")
}
}
}
subprojects {
apply(plugin = "org.jetbrains.kotlin.jvm")
apply(plugin = "com.diffplug.spotless")
tasks.withType<KotlinCompile>().configureEach {
compilerOptions {
allWarningsAsErrors.set(true)
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_1_8)
}
}
tasks.withType<Jar>().configureEach {
archiveFileName.set("${project.name}.jar")
}
tasks.withType<Test>().configureEach {
useTestNG()
// suppress "Sharing is only supported for boot loader classes because bootstrap classpath has been appended"
jvmArgs("-Xshare:off")
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
tasks.withType<JavaCompile>().configureEach {
// disable java 8 warning
options.compilerArgs.add("-Xlint:-options")
}
configure<com.diffplug.gradle.spotless.SpotlessExtension> {
kotlin {
target("**/*.kt", "**/*.kts")
ktlint(libs.versions.ktlint.get())
}
}
}