Files
app/server/build.gradle.kts
2026-10-09 17:13:39 +02:00

127 lines
4.6 KiB
Kotlin

plugins {
alias(libs.plugins.kotlin.jvm)
alias(ktorLibs.plugins.ktor)
alias(libs.plugins.kotlin.serialization)
// alias(libs.plugins.ksp)
alias(masterLibs.plugins.versionPlugin)
}
group = "net.keinekekse.app"
version = libs.versions.appsrv.get()
description = "Ktor Application Server"
extra["displayname"] = "Application Server"
extra["copyright"] = "Copyright (c) 2026 Hartmut Bauer"
versionConfig {
versionClassFile.set(layout.projectDirectory.file("src/main/kotlin/Version.kt"))
versionPackageName.set("net.keinekekse.app")
modules.set(
mapOf(
"books" to mapOf(
"version" to libs.versions.books.get(),
"displayName" to "Books-DB",
"description" to "Books + Comics Database"
)
)
)
}
application {
mainClass = "io.ktor.server.netty.EngineMain"
// java >= 24
// WARNING: A restricted method in java.lang.System has been called
// WARNING: java.lang.System::loadLibrary has been called by io.netty.util.internal.NativeLibraryUtil in an unnamed module
// (file:/Users/hb/.gradle/caches/modules-2/files-2.1/io.netty/netty-common/4.2.16.Final/c2bc7fa5acfa2afc777e944d84f0aa65559cc81e/netty-common-4.2.16.Final.jar)
// WARNING: Use --enable-native-access=ALL-UNNAMED to avoid a warning for callers in this module
// WARNING: Restricted methods will be blocked in a future release unless native access is enabled
applicationDefaultJvmArgs = listOf("--enable-native-access=ALL-UNNAMED")
}
val buildTailwind = tasks.register("buildTailwind", Exec::class) {
description = "build tailwind css file"
workingDir = rootProject.layout.projectDirectory.dir("tailwind").asFile
// direkt ins buildDir schreiben, weil Task processResources hier zu spät kommt
commandLine(
"/Users/hb/.npm-packages/bin/npx",
"@tailwindcss/cli",
"-i",
"./input.css",
"-o",
layout.buildDirectory.dir("resources/main/static").get()
.toString() + "/styles/tailwind.css",
"--minify"
)
}
val copyWebDistToServerResources = tasks.register("copyWebDistToServerResources", Copy::class) {
description = "copy web dist to server resources"
dependsOn(project(":web").tasks.named("jsBrowserDistribution"))
from(project(":web").layout.buildDirectory.dir("dist/js/productionExecutable"))
into(layout.buildDirectory.dir("resources/main/web"))
// from(rootProject.layout.projectDirectory.file("build/js/node_modules/bootstrap/dist/css/bootstrap.min.css"))
// into(layout.buildDirectory.dir("resources/main/web"))
}
tasks.named("processResources") {
dependsOn(buildTailwind)
dependsOn(copyWebDistToServerResources)
}
kotlin {
jvmToolchain(libs.versions.jvm.get().toInt())
}
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(libs.versions.jvm.get()))
}
}
dependencies {
implementation(project(":shared"))
implementation(masterLibs.utilLibrary)
implementation(ktorLibs.client.apache5)
implementation(ktorLibs.client.cio)
implementation(ktorLibs.client.core)
implementation(ktorLibs.htmx.html)
implementation(ktorLibs.serialization.kotlinx.json)
implementation(ktorLibs.server.auth)
implementation(ktorLibs.server.auth.oidc)
implementation(ktorLibs.server.auth.jwt)
implementation(ktorLibs.server.cachingHeaders)
implementation(ktorLibs.server.compression)
implementation(ktorLibs.server.config.yaml)
implementation(ktorLibs.server.contentNegotiation)
implementation(ktorLibs.server.core)
implementation(ktorLibs.server.cors)
implementation(ktorLibs.server.csrf)
implementation(ktorLibs.server.defaultHeaders)
implementation(ktorLibs.server.di)
implementation(ktorLibs.server.forwardedHeader)
implementation(ktorLibs.server.htmlBuilder)
implementation(ktorLibs.server.htmx)
implementation(ktorLibs.server.netty)
implementation(ktorLibs.server.statusPages)
implementation(ktorLibs.server.sessions)
implementation(libs.exposed.core)
implementation(libs.exposed.jdbc)
implementation(libs.exposed.dao)
implementation(libs.exposed.r2dbc)
implementation(libs.h2database.h2)
implementation(libs.h2database.r2dbc)
implementation(libs.kotlinx.kotlinxHtml)
implementation(libs.logback.classic)
implementation(libs.postgresql)
implementation(libs.hikaricp)
// implementation(libs.koin.ktor)
// implementation(libs.koin.logger)
// implementation(libs.koin.annotations)
// ksp(libs.koin.ksp)
// testImplementation(kotlin("test"))
// testImplementation(ktorLibs.server.testHost)
}