1- import common.githubUser
2- import common.javaVersion
3- import common.jvmArguments
4- import common.tmp
1+ import com.google.devtools.ksp.gradle.KspTask
2+ import common.*
53
64plugins {
75 plugins.kotlin.jvm
@@ -10,6 +8,7 @@ plugins {
108 alias(libs.plugins.ktor)
119 alias(libs.plugins.exposed)
1210 com.google.cloud.tools.jib
11+ gg.jte.gradle
1312}
1413
1514description = " Ktor backend jvm application"
5251 containerizingMode = " packaged"
5352}
5453
54+ jte {
55+ contentType = gg.jte.ContentType .Html
56+ sourceDirectory =
57+ sourceSets.main.map { it.resources.srcDirs.first().resolve(" templates" ).toPath() }
58+ generate()
59+ }
60+
5561exposedCodeGeneratorConfig { outputDirectory.set(file(" src/main/kotlin/dev/suresh" )) }
5662
5763// Configuration to copy webapp to resources
@@ -63,8 +69,13 @@ tasks {
6369 from(webapp)
6470 into(processResources.map { it.destinationDir.resolve(webapp.name) })
6571 }
72+
73+ // Copy webapp to resources
6674 processResources { dependsOn(copyWebApp) }
6775
76+ // Makes sure jte is generated before compilation
77+ withType<KspTask >().configureEach { dependsOn(generateJte) }
78+
6879 // publish { finalizedBy(jibDockerBuild) }
6980}
7081
@@ -91,13 +102,15 @@ dependencies {
91102 implementation(libs.ktor.server.auth)
92103 implementation(libs.ktor.server.auth.jwt)
93104 implementation(libs.ktor.serialization.json)
105+
94106 // Client dependencies
95107 implementation(libs.ktor.client.java)
96108 implementation(libs.ktor.client.content.negotiation)
97109 implementation(libs.ktor.client.encoding)
98110 implementation(libs.ktor.client.logging)
99111 implementation(libs.ktor.client.resources)
100112 implementation(libs.ktor.client.auth)
113+
101114 // Database
102115 implementation(libs.exposed.core)
103116 implementation(libs.exposed.jdbc)
@@ -106,18 +119,29 @@ dependencies {
106119 implementation(libs.postgresql)
107120 implementation(libs.hikariCP)
108121 implementation(libs.sherlock.sql)
122+
123+ // Templating
124+ implementation(libs.jte.runtime)
125+ // compileOnly(libs.jte.kotlin)
126+ implementation(libs.ktor.server.html)
127+ implementation(libs.kotlinx.html)
128+ implementation(kotlinw(" css" ))
129+
109130 // Monitoring
110131 implementation(libs.ktor.cohort.core)
111132 implementation(libs.ktor.cohort.hikari)
112133 implementation(libs.micrometer.prometheus)
113134 implementation(libs.ap.loader.all)
135+
114136 // Logging
115137 implementation(libs.logback.classic)
138+
116139 // Testing
117- testImplementation(platform(libs.testcontainers.bom))
118140 testImplementation(libs.ktor.server.tests)
119141 testImplementation(libs.testcontainers.junit5)
120142 testImplementation(libs.testcontainers.postgresql)
143+ testImplementation(libs.testcontainers.k3s)
144+ testImplementation(libs.kubernetes.client)
121145 testImplementation(libs.konsist)
122146
123147 // Copy web app browserDist
0 commit comments