build-scripts/gradle/BuildscriptKotlinDefaults.gradle

95 lines
3.0 KiB
Groovy

/*
buildscript {
ext {
javaVersion = "23" // language version
jdkVersion = "23" // toolchain jdk version
kotlinVersion = "2.1.21" // https://kotlinlang.org/docs/releases.html#release-details
gradlewVersion = "8.12.1" // https://gradle.org/releases/
giteaUrl = System.getenv("GITEA_URL") ?: "https://gitea.dhswt.de"
}
repositories {
mavenCentral()
// gradlePluginPortal()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
}
}
*/
// configure defaults for gradle version
wrapper {
gradleVersion = "$gradlewVersion"
distributionType = Wrapper.DistributionType.ALL
}
// append jdk version to gradle properties for use by CI environments
task writeCIGradleAndJdkVersionInfo(type: WriteProperties, group: "build setup") {
File ciPropsFile = new File(rootProject.projectDir, "gradle/ci.properties")
destinationFile = ciPropsFile
def props = new Properties()
if (ciPropsFile.exists()) {
ciPropsFile.withInputStream { props.load(it) }
}
props.setProperty("java_version", javaVersion)
props.setProperty("jdk_version", jdkVersion)
props.setProperty("kotlin_version", kotlinVersion)
props.setProperty("gradlew_version", gradlewVersion)
props.setProperty("gitea_url", giteaUrl)
properties(props)
}
// always run after wrapper task
wrapper.finalizedBy writeCIGradleAndJdkVersionInfo
// use more compact source set directories without nesting for simple or mono-language projects
ext.useCompactKotlinSourceSets = { org.gradle.api.Project target ->
target.sourceSets {
main.java.srcDirs = []
main.resources.srcDirs = ['resources']
main.kotlin.srcDirs = ['src']
test.java.srcDirs = []
test.resources.srcDirs = ['resources', 'test-resources']
test.kotlin.srcDirs = ['test']
}
}
// configure defaults for java and jdk versions based on provided variables and enable intellij idea integration
ext.configureDefaultsIdeaKotlinJava = { org.gradle.api.Project target ->
target.idea {
module {
downloadJavadoc = true
downloadSources = true
}
}
target.kotlin {
compilerOptions {
// jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.valueOf("JVM_${javaVersion}"))
// workaround for mismatch classloader issues sometimes happening
var newValue = jvmTarget.get().class.getEnumConstants().find { it.target == "${javaVersion}" }
jvmTarget.set(newValue)
}
jvmToolchain {
/*
var newVersion = JavaLanguageVersion.of(jdkVersion)
if (newVersion != languageVersion.getOrNull()) {
languageVersion.set(JavaLanguageVersion.of(jdkVersion))
}
*/
}
}
target.java {
sourceCompatibility = JavaVersion.toVersion(javaVersion)
targetCompatibility = JavaVersion.toVersion(javaVersion)
withJavadocJar()
withSourcesJar()
}
}