import org.gradle.kotlin.dsl.support.serviceOf plugins { alias(libs.plugins.kotlinJvm) alias(libs.plugins.ktor) alias(libs.plugins.sqldelight) alias(libs.plugins.kotlinSerialization) alias(libs.plugins.jib) application } group = "win.tap_tap.papertrader" application { mainClass.set("win.tap_tap.papertrader.ApplicationKt") val isDevelopment: Boolean = project.ext.has("development") applicationDefaultJvmArgs = listOf("-Dio.ktor.development=$isDevelopment") } dependencies { implementation(projects.shared) implementation(libs.logback) implementation(libs.ktor.serverCore) implementation(libs.ktor.serverNetty) implementation(libs.bundles.ktor) implementation(libs.bundles.ktorServer) implementation(libs.ktor.client.cio) implementation(libs.ktor.server.cors) implementation(libs.sqlite.driver) testImplementation(libs.ktor.serverTestHost) testImplementation(libs.kotlin.testJunit) } allprojects { version = "1.0.1" } tasks.register("serverDockerBuild") { group = "deployment" dependsOn("buildFatJar") workingDir = projectDir commandLine("docker", "build", "-t", "papertrader-server", ".") } tasks.register("serverDockerPush") { group = "deployment" val version = project.version val execOps = project.serviceOf() doLast { fun execute(args: List) { execOps.exec { commandLine(args) } } execute(listOf("docker", "tag", "papertrader-server", "taptap1/papertrader-server:$version")) execute(listOf("docker", "tag", "papertrader-server", "taptap1/papertrader-server:latest")) execute(listOf("docker", "push", "taptap1/papertrader-server:$version")) execute(listOf("docker", "push", "taptap1/papertrader-server:latest")) println("Pushed: papertrader-server:$version and papertrader-server:latest") } } tasks.register("serverDockerDeploy") { group = "deployment" dependsOn("serverDockerBuild") dependsOn("serverDockerPush") } tasks.named("serverDockerPush") { mustRunAfter("serverDockerBuild") } //jib { // from { // image = "eclipse-temurin:23-jre-alpine" // } // // to { // image = "taptap1/papertrader-server" // tags = setOf("latest", project.version.toString()) // } // // container { // entrypoint = listOf("java", "-jar", "/app/paptertraderServer.jar") // ports = listOf("8080") // } //} ktor { fatJar { archiveFileName.set("papertraderServer.jar") } } sqldelight { databases { register("Data") { packageName.set("win.tap_tap.papertrader") } } }