add default buildscript template for kotlin projects to simplify project setup
This commit is contained in:
parent
5dbe1ed718
commit
1f48d41a3d
82
gradle/BuildscriptKotlinDefaults.gradle
Normal file
82
gradle/BuildscriptKotlinDefaults.gradle
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
buildscript {
|
||||||
|
ext {
|
||||||
|
javaVersion = "23" // language version
|
||||||
|
jdkVersion = "23" // toolchain jdk version
|
||||||
|
kotlinVersion = "2.1.20" // 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()
|
||||||
|
}
|
||||||
|
|
||||||
|
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 ->
|
||||||
|
idea {
|
||||||
|
module {
|
||||||
|
downloadJavadoc = true
|
||||||
|
downloadSources = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
kotlin {
|
||||||
|
compilerOptions {
|
||||||
|
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.valueOf("JVM_${javaVersion}"))
|
||||||
|
}
|
||||||
|
jvmToolchain {
|
||||||
|
languageVersion.set(JavaLanguageVersion.of(jdkVersion))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
java {
|
||||||
|
sourceCompatibility = JavaVersion.toVersion(javaVersion)
|
||||||
|
targetCompatibility = JavaVersion.toVersion(javaVersion)
|
||||||
|
withJavadocJar()
|
||||||
|
withSourcesJar()
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user