plugins { kotlin("jvm") version "2.1.0" kotlin("plugin.serialization") version "2.1.0" id("com.gradleup.shadow") version "8.3.5" application } group = "center.timemachine.cloud" version = "0.1.0" repositories { mavenCentral() } dependencies { // FlatLaf gives us an IntelliJ-style dark theme on Swing — // closest visual match to Prism Launcher's Qt look in pure Java. implementation("com.formdev:flatlaf:3.5.4") implementation("com.formdev:flatlaf-intellij-themes:3.5.4") // JSON via Kotlin's official lib; supports kotlin data classes natively. implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") testImplementation(kotlin("test")) testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.2") } // Target Java 17 bytecode using whatever JDK is installed locally (we // require >= 17). Avoids the Gradle toolchain auto-provisioning dance, // at the cost of needing a manual JDK 17+ on dev machines and CI runners. kotlin { compilerOptions { jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17) } } java { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } application { mainClass.set("center.timemachine.cloud.MainKt") } tasks.test { useJUnitPlatform() } tasks.shadowJar { archiveBaseName.set("cloud-installer") archiveClassifier.set("") archiveVersion.set(project.version.toString()) mergeServiceFiles() } // Defer to shadowJar for the canonical artifact; the default 'jar' task // produces a thin jar without dependencies which would be useless to ship. tasks.jar { enabled = false }