import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar plugins { alias(libs.plugins.jvm) alias(libs.plugins.ktor) alias(libs.plugins.serialization) } group = "com.jaytux.phoebench" version = PhoebenchVersion(1, 2, 1, "patch1") if((version as PhoebenchVersion) < (rootProject.version as PhoebenchVersion)) throw GradleException("Server version must be at least as high as protocol/common version") repositories { mavenCentral() } val versionDirectory = layout.buildDirectory.dir("generated/sources/version") val generateVersion = tasks.register("serverVersion") { doFirst { val outFile = versionDirectory.get().file("com/jaytux/phoebench/server/Version.kt").asFile outFile.parentFile.mkdirs() outFile.writeText(""" package com.jaytux.phoebench.server object ServerVersion { const val VERSION="$version" } """.trimIndent()) } } dependencies { implementation(libs.exposed.core) implementation(libs.exposed.dao) implementation(libs.exposed.jdbc) implementation(libs.exposed.migration) implementation(libs.exposed.migration.jdbc) implementation(libs.exposed.kotlin.datetime) implementation(libs.kotlinx.datetime) implementation(libs.ktor.client.core) implementation(libs.ktor.client.logging) implementation(libs.ktor.server.content.negotiation) implementation(libs.ktor.server.core) implementation(libs.ktor.server.openapi) implementation(libs.ktor.server.auto.head.response) implementation(libs.ktor.server.netty) implementation(libs.ktor.server.config.yaml) implementation(libs.ktor.server.test.host) implementation(libs.ktor.server.auth) implementation(libs.ktor.server.auth.jwt) implementation(libs.ktor.server.call.logging) implementation(libs.ktor.server.cors) implementation(libs.ktor.server.status.pages) implementation(libs.ktor.server.sse) implementation(libs.ktor.server.websocket) implementation(libs.ktor.serialization.kotlinx.json) implementation(libs.dotenv) implementation(libs.json) implementation(libs.kotlinx.datetime) implementation(libs.kotlinx.serialization) implementation(libs.kotlinx.serialization.json) implementation(libs.ksoup) implementation(libs.slf4j.simple) implementation(libs.mariadb) implementation(libs.sqlite) implementation(libs.spring.security.core) implementation(project(":common")) } tasks.test { useJUnitPlatform() } kotlin { jvmToolchain(21) compilerOptions { freeCompilerArgs.add("-Xcontext-parameters") optIn.add("kotlin.uuid.ExperimentalUuidApi") } sourceSets { val main by getting { kotlin { srcDir(versionDirectory) } } } tasks.compileKotlin { dependsOn(generateVersion) } } application { mainClass = "io.ktor.server.netty.EngineMain" } tasks.withType { manifest { attributes["Main-Class"] = application.mainClass } duplicatesStrategy = DuplicatesStrategy.WARN } ktor { fatJar { } } tasks.withType { mergeServiceFiles() append("reference.conf") }