diff --git a/build.gradle.kts b/build.gradle.kts index 989918f4..a19a572c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,29 +1,31 @@ plugins { java - kotlin("jvm") - id("com.diffplug.spotless") version "6.25.0" + alias(libs.plugins.kotlin.jvm) + alias(libs.plugins.spotless) } val springBootProjects = subprojects.filter { it.name.startsWith("spring-boot") || it.name == "jpetstore" } -val ktlintVersion: String by project +// Retain a reference to rootProject.libs to make the version catalog accessible within allprojects and subprojects. +// See https://github.com/gradle/gradle/issues/16708 +val catalog = libs allprojects { apply(plugin = "base") - apply(plugin = "com.diffplug.spotless") + apply(plugin = catalog.plugins.spotless.get().pluginId) spotless { kotlin { - ktlint(ktlintVersion) + ktlint(catalog.ktlint.get().version) targetExclude("build/**") if (project.name == "codegen") { targetExclude("src/**") } } kotlinGradle { - ktlint(ktlintVersion) + ktlint(catalog.ktlint.get().version) } } @@ -46,8 +48,8 @@ subprojects { testImplementation(kotlin("test")) if (project !in springBootProjects) { testImplementation(kotlin("test")) - testImplementation("org.junit.jupiter:junit-jupiter-api:5.11.3") - testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.11.3") + testImplementation(catalog.junit.api) + testRuntimeOnly(catalog.junit.engine) } } diff --git a/codegen/build.gradle.kts b/codegen/build.gradle.kts index 4900a7db..29713209 100644 --- a/codegen/build.gradle.kts +++ b/codegen/build.gradle.kts @@ -3,26 +3,27 @@ buildscript { mavenCentral() } dependencies { - classpath(platform("org.testcontainers:testcontainers-bom:1.20.4")) - classpath("org.testcontainers:mysql") - classpath("org.testcontainers:postgresql") - classpath("mysql:mysql-connector-java:8.0.33") - classpath("org.postgresql:postgresql:42.7.4") + classpath(platform(libs.testcontainers.bom)) + classpath(libs.testcontainers.mysql) + classpath(libs.testcontainers.postgresql) + classpath(libs.jdbc.mysql) + classpath(libs.jdbc.postgresql) } } plugins { application - idea - id("com.google.devtools.ksp") - id("org.komapper.gradle") + alias(libs.plugins.ksp) + alias(libs.plugins.komapper) } -val komapperVersion: String by project - dependencies { - implementation("org.komapper:komapper-starter-jdbc:$komapperVersion") - ksp("org.komapper:komapper-processor:$komapperVersion") + platform(libs.komapper.platform).let { + implementation(it) + ksp(it) + } + implementation(libs.komapper.starter.jdbc) + ksp(libs.komapper.processor) } komapper { diff --git a/comparison-with-exposed/build.gradle.kts b/comparison-with-exposed/build.gradle.kts index 993ed94d..bdc16fae 100644 --- a/comparison-with-exposed/build.gradle.kts +++ b/comparison-with-exposed/build.gradle.kts @@ -1,23 +1,20 @@ plugins { application - idea - id("com.google.devtools.ksp") + alias(libs.plugins.ksp) } -val komapperVersion: String by project - application { mainClass.set("org.komapper.example.ApplicationKt") } dependencies { - platform("org.komapper:komapper-platform:$komapperVersion").let { + platform(libs.komapper.platform).let { implementation(it) ksp(it) } - implementation("org.komapper:komapper-starter-jdbc") - implementation("org.komapper:komapper-dialect-h2-jdbc") - ksp("org.komapper:komapper-processor") + implementation(libs.komapper.starter.jdbc) + implementation(libs.komapper.dialect.h2.jdbc) + ksp(libs.komapper.processor) } ksp { diff --git a/console-jdbc/build.gradle.kts b/console-jdbc/build.gradle.kts index 967f9ec5..359e3dc5 100644 --- a/console-jdbc/build.gradle.kts +++ b/console-jdbc/build.gradle.kts @@ -1,19 +1,16 @@ plugins { application - idea - id("com.google.devtools.ksp") + alias(libs.plugins.ksp) } -val komapperVersion: String by project - dependencies { - platform("org.komapper:komapper-platform:$komapperVersion").let { + platform(libs.komapper.platform).let { implementation(it) ksp(it) } - implementation("org.komapper:komapper-starter-jdbc") - implementation("org.komapper:komapper-dialect-h2-jdbc") - ksp("org.komapper:komapper-processor") + implementation(libs.komapper.starter.jdbc) + implementation(libs.komapper.dialect.h2.jdbc) + ksp(libs.komapper.processor) } application { diff --git a/console-r2dbc/build.gradle.kts b/console-r2dbc/build.gradle.kts index 65b93150..0ce2ac4f 100644 --- a/console-r2dbc/build.gradle.kts +++ b/console-r2dbc/build.gradle.kts @@ -1,19 +1,16 @@ plugins { application - idea - id("com.google.devtools.ksp") + alias(libs.plugins.ksp) } -val komapperVersion: String by project - dependencies { - platform("org.komapper:komapper-platform:$komapperVersion").let { + platform(libs.komapper.platform).let { implementation(it) ksp(it) } - implementation("org.komapper:komapper-starter-r2dbc") - implementation("org.komapper:komapper-dialect-h2-r2dbc") - ksp("org.komapper:komapper-processor") + implementation(libs.komapper.starter.r2dbc) + implementation(libs.komapper.dialect.h2.r2dbc) + ksp(libs.komapper.processor) } application { diff --git a/gradle.properties b/gradle.properties index c87c00ad..31967873 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,12 +5,3 @@ ksp.useKSP2=true group=org.komapper version=0.0.1 - -ktorVersion=3.0.1 -kotlinVersion=2.1.0 -komapperVersion=5.0.0 -kspVersion=1.0.28 -ktlintVersion=1.4.1 -quarkusVersion=3.17.2 -springBootVersion=3.4.0 -nativeBuildToolsVersion=0.10.3 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 00000000..b2118109 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,82 @@ +[versions] +junit = "5.11.3" +komapper = "5.0.0" +kotlin = "2.1.0" +ksp = "2.1.0-1.0.29" +quarkus = "3.17.2" +spring-boot = "3.4.0" + +[libraries] +komapper-platform = { module = "org.komapper:komapper-platform", version.ref = "komapper" } +komapper-dialect-h2-jdbc = { module = "org.komapper:komapper-dialect-h2-jdbc" } +komapper-dialect-h2-r2dbc = { module = "org.komapper:komapper-dialect-h2-r2dbc" } +komapper-dialect-postgresql-jdbc = { module = "org.komapper:komapper-dialect-postgresql-jdbc" } +komapper-processor = { module = "org.komapper:komapper-processor" } +komapper-quarkus-jdbc = { module = "org.komapper:komapper-quarkus-jdbc" } +komapper-starter-jdbc = { module = "org.komapper:komapper-starter-jdbc" } +komapper-starter-r2dbc = { module = "org.komapper:komapper-starter-r2dbc" } +komapper-spring-boot-starter-jdbc = { module = "org.komapper:komapper-spring-boot-starter-jdbc" } +komapper-spring-boot-starter-r2dbc = { module = "org.komapper:komapper-spring-boot-starter-r2dbc" } + +spring-boot-devtools = { module = "org.springframework.boot:spring-boot-devtools" } +spring-boot-starter-security = { module = "org.springframework.boot:spring-boot-starter-security" } +spring-boot-starter-test = { module = "org.springframework.boot:spring-boot-starter-test" } +spring-boot-starter-thymeleaf = { module = "org.springframework.boot:spring-boot-starter-thymeleaf" } +spring-boot-starter-validation = { module = "org.springframework.boot:spring-boot-starter-validation" } +spring-boot-starter-web = { module = "org.springframework.boot:spring-boot-starter-web" } +spring-boot-starter-webflux = { module = "org.springframework.boot:spring-boot-starter-webflux" } +thymeleaf-extras-springsecurity6 = { module = "org.thymeleaf.extras:thymeleaf-extras-springsecurity6" } +jackson-module-kotlin = { module = "com.fasterxml.jackson.module:jackson-module-kotlin" } + +ktor-bom = { module = "io.ktor:ktor-bom", version = "3.0.1" } +ktor-server-netty = { module = "io.ktor:ktor-server-netty" } +ktor-server-freemarker = { module = "io.ktor:ktor-server-freemarker" } +ktor-server-resources = { module = "io.ktor:ktor-server-resources" } +ktor-server-sessions = { module = "io.ktor:ktor-server-sessions" } +ktor-server-conditional-headers = { module = "io.ktor:ktor-server-conditional-headers" } +ktor-server-default-headers = { module = "io.ktor:ktor-server-default-headers" } +ktor-server-partial-content = { module = "io.ktor:ktor-server-partial-content" } +ktor-server-call-logging = { module = "io.ktor:ktor-server-call-logging" } +ktor-server-test-host = { module = "io.ktor:ktor-server-test-host" } + +quarkus-bom = { module = "io.quarkus:quarkus-bom", version.ref = "quarkus" } +quarkus-jdbc-h2 = { module = "io.quarkus:quarkus-jdbc-h2" } +quarkus-jdbc-postgresql = { module = "io.quarkus:quarkus-jdbc-postgresql" } +quarkus-junit5 = { module = "io.quarkus:quarkus-junit5" } +quarkus-kotlin = { module = "io.quarkus:quarkus-kotlin" } +quarkus-resteasy = { module = "io.quarkus:quarkus-resteasy" } +quarkus-resteasy-jsonb = { module = "io.quarkus:quarkus-resteasy-jsonb" } + +testcontainers-bom = { module = "org.testcontainers:testcontainers-bom", version = "1.20.4" } +testcontainers-mysql = { module = "org.testcontainers:mysql" } +testcontainers-postgresql = { module = "org.testcontainers:postgresql" } + +freemarker = { module = "org.freemarker:freemarker", version = "2.3.33" } +freemarker-java8 = { module = "no.api.freemarker:freemarker-java8", version = "3.0.0" } +jdbc-h2 = { module = "com.h2database:h2", version = "2.3.232" } +jdbc-mysql = { module = "mysql:mysql-connector-java", version = "8.0.33" } +jdbc-postgresql = { module = "org.postgresql:postgresql", version = "42.7.4" } +ktlint = { module = "com.pinterest.ktlint:ktlint-cli", version = "1.4.1" } +logback-classic = { module = "ch.qos.logback:logback-classic", version = "1.5.12" } +mockk = { module = "io.mockk:mockk", version = "1.13.13" } +rest-assured = { module = "io.rest-assured:rest-assured", version="5.5.0" } +thymeleaf-layout-dialect = { module = "nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect", version = "3.3.0" } +webjars-jquery = { module = "org.webjars:jquery", version = "3.7.1" } +webjars-locator = { module = "org.webjars:webjars-locator", version = "0.52" } + +junit-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junit" } +junit-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit" } +kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" } + +[plugins] +komapper = { id = "org.komapper.gradle", version.ref = "komapper" } +ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } +spotless = { id = "com.diffplug.spotless", version = "6.25.0" } +spring-boot = { id = "org.springframework.boot", version.ref = "spring-boot" } +spring-dependency-management = { id = "io.spring.dependency-management" } +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } +kotlin-spring = { id = "org.jetbrains.kotlin.plugin.spring", version.ref = "kotlin" } +kotlin-allopen = { id = "org.jetbrains.kotlin.plugin.allopen", version.ref = "kotlin" } +kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } +quarkus = { id = "io.quarkus", version.ref = "quarkus" } +graalvm-buildtools-native = { id = "org.graalvm.buildtools.native", version = "0.10.3" } \ No newline at end of file diff --git a/jpetstore/build.gradle.kts b/jpetstore/build.gradle.kts index b1fce3a4..7e140266 100644 --- a/jpetstore/build.gradle.kts +++ b/jpetstore/build.gradle.kts @@ -1,13 +1,10 @@ plugins { - idea - id("org.springframework.boot") - id("com.google.devtools.ksp") - kotlin("plugin.spring") + alias(libs.plugins.spring.boot) + alias(libs.plugins.ksp) + alias(libs.plugins.kotlin.spring) } -apply(plugin = "io.spring.dependency-management") - -val komapperVersion: String by project +apply(plugin = libs.plugins.spring.dependency.management.get().pluginId) springBoot { mainClass.set("org.komapper.example.ApplicationKt") @@ -20,26 +17,26 @@ repositories { } dependencies { - platform("org.komapper:komapper-platform:$komapperVersion").let { + platform(libs.komapper.platform).let { implementation(it) ksp(it) } - implementation("org.komapper:komapper-spring-boot-starter-jdbc") - implementation("org.komapper:komapper-dialect-h2-jdbc") - ksp("org.komapper:komapper-processor") - - implementation("org.springframework.boot:spring-boot-starter-thymeleaf") - implementation("org.springframework.boot:spring-boot-starter-web") - implementation("org.springframework.boot:spring-boot-starter-security") - implementation("org.springframework.boot:spring-boot-starter-validation") - implementation("org.thymeleaf.extras:thymeleaf-extras-springsecurity6") - implementation("com.h2database:h2:2.3.232") - implementation("org.webjars:jquery:3.7.1") - implementation("org.webjars:webjars-locator:0.52") - implementation("nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:3.3.0") - developmentOnly("org.springframework.boot:spring-boot-devtools") - testImplementation("org.springframework.boot:spring-boot-starter-test") { + implementation(libs.komapper.spring.boot.starter.jdbc) + implementation(libs.komapper.dialect.h2.jdbc) + ksp(libs.komapper.processor) + + implementation(libs.spring.boot.starter.thymeleaf) + implementation(libs.spring.boot.starter.web) + implementation(libs.spring.boot.starter.security) + implementation(libs.spring.boot.starter.validation) + implementation(libs.thymeleaf.extras.springsecurity6) + implementation(libs.jdbc.h2) + implementation(libs.webjars.jquery) + implementation(libs.webjars.locator) + implementation(libs.thymeleaf.layout.dialect) + developmentOnly(libs.spring.boot.devtools) + testImplementation(libs.spring.boot.starter.test) { exclude(group = "org.junit.vintage", module = "junit-vintage-engine") } } diff --git a/kweet/build.gradle.kts b/kweet/build.gradle.kts index 17e1ac0d..33b9b7b0 100644 --- a/kweet/build.gradle.kts +++ b/kweet/build.gradle.kts @@ -1,13 +1,9 @@ plugins { application - idea - id("com.google.devtools.ksp") - id("org.jetbrains.kotlin.plugin.serialization") + alias(libs.plugins.ksp) + alias(libs.plugins.kotlin.serialization) } -val ktorVersion: String by project -val komapperVersion: String by project - application { mainClass.set("io.ktor.server.netty.EngineMain") } @@ -17,34 +13,34 @@ repositories { } dependencies { - platform("org.komapper:komapper-platform:$komapperVersion").let { + platform(libs.komapper.platform).let { implementation(it) ksp(it) } - platform("io.ktor:ktor-bom:$ktorVersion").let { + platform(libs.ktor.bom).let { implementation(it) testImplementation(it) } - implementation("org.komapper:komapper-starter-r2dbc") - implementation("org.komapper:komapper-dialect-h2-r2dbc") - ksp("org.komapper:komapper-processor") - - implementation("io.ktor:ktor-server-netty") - implementation("io.ktor:ktor-server-freemarker") - implementation("io.ktor:ktor-server-resources") - implementation("io.ktor:ktor-server-sessions") - implementation("io.ktor:ktor-server-conditional-headers") - implementation("io.ktor:ktor-server-default-headers") - implementation("io.ktor:ktor-server-partial-content") - implementation("io.ktor:ktor-server-call-logging") - implementation("org.freemarker:freemarker:2.3.33") - implementation("no.api.freemarker:freemarker-java8:3.0.0") - runtimeOnly("ch.qos.logback:logback-classic:1.5.12") - - testImplementation("io.ktor:ktor-server-test-host") - testImplementation("io.mockk:mockk:1.13.13") - testImplementation("org.jetbrains.kotlin:kotlin-test") + implementation(libs.komapper.starter.r2dbc) + implementation(libs.komapper.dialect.h2.r2dbc) + ksp(libs.komapper.processor) + + implementation(libs.ktor.server.netty) + implementation(libs.ktor.server.freemarker) + implementation(libs.ktor.server.resources) + implementation(libs.ktor.server.sessions) + implementation(libs.ktor.server.conditional.headers) + implementation(libs.ktor.server.default.headers) + implementation(libs.ktor.server.partial.content) + implementation(libs.ktor.server.call.logging) + implementation(libs.freemarker) + implementation(libs.freemarker.java8) + runtimeOnly(libs.logback.classic) + + testImplementation(libs.ktor.server.test.host) + testImplementation(libs.mockk) + testImplementation(libs.kotlin.test) } sourceSets { diff --git a/quarkus-jdbc/build.gradle.kts b/quarkus-jdbc/build.gradle.kts index 633a066c..ce558c3e 100644 --- a/quarkus-jdbc/build.gradle.kts +++ b/quarkus-jdbc/build.gradle.kts @@ -1,30 +1,26 @@ plugins { - idea - id("io.quarkus") - id("com.google.devtools.ksp") - kotlin("plugin.allopen") + alias(libs.plugins.quarkus) + alias(libs.plugins.ksp) + alias(libs.plugins.kotlin.allopen) } -val quarkusVersion: String by project -val komapperVersion: String by project - dependencies { - platform("org.komapper:komapper-platform:$komapperVersion").let { + platform(libs.komapper.platform).let { implementation(it) ksp(it) } - implementation(enforcedPlatform("io.quarkus:quarkus-bom:$quarkusVersion")) - implementation("io.quarkus:quarkus-kotlin") - implementation("io.quarkus:quarkus-jdbc-postgresql") - implementation("io.quarkus:quarkus-resteasy") - implementation("io.quarkus:quarkus-resteasy-jsonb") - implementation("org.komapper:komapper-quarkus-jdbc") - implementation("org.komapper:komapper-dialect-postgresql-jdbc") - ksp("org.komapper:komapper-processor") - testImplementation("io.quarkus:quarkus-junit5") - testImplementation("io.rest-assured:rest-assured:5.5.0") - testImplementation("io.quarkus:quarkus-jdbc-h2") - testImplementation("org.komapper:komapper-dialect-h2-jdbc") + implementation(enforcedPlatform(libs.quarkus.bom)) + implementation(libs.quarkus.kotlin) + implementation(libs.quarkus.jdbc.postgresql) + implementation(libs.quarkus.resteasy) + implementation(libs.quarkus.resteasy.jsonb) + implementation(libs.komapper.quarkus.jdbc) + implementation(libs.komapper.dialect.postgresql.jdbc) + ksp(libs.komapper.processor) + testImplementation(libs.quarkus.junit5) + testImplementation(libs.rest.assured) + testImplementation(libs.quarkus.jdbc.h2) + testImplementation(libs.komapper.dialect.h2.jdbc) } ksp { diff --git a/repository-pattern-jdbc/build.gradle.kts b/repository-pattern-jdbc/build.gradle.kts index 809e3d3a..72445be5 100644 --- a/repository-pattern-jdbc/build.gradle.kts +++ b/repository-pattern-jdbc/build.gradle.kts @@ -1,17 +1,14 @@ plugins { application - idea - id("com.google.devtools.ksp") + alias(libs.plugins.ksp) } -val komapperVersion: String by project - dependencies { - platform("org.komapper:komapper-platform:$komapperVersion").let { + platform(libs.komapper.platform).let { implementation(it) ksp(it) } - implementation("org.komapper:komapper-starter-jdbc") - implementation("org.komapper:komapper-dialect-h2-jdbc") - ksp("org.komapper:komapper-processor") + implementation(libs.komapper.starter.jdbc) + implementation(libs.komapper.dialect.h2.jdbc) + ksp(libs.komapper.processor) } diff --git a/settings.gradle.kts b/settings.gradle.kts index 90a9944b..303f32f4 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -4,23 +4,6 @@ pluginManagement { gradlePluginPortal() mavenCentral() } - val kotlinVersion: String by settings - val komapperVersion: String by settings - val kspVersion: String by settings - val quarkusVersion: String by settings - val springBootVersion: String by settings - val nativeBuildToolsVersion: String by settings - plugins { - id("org.jetbrains.kotlin.jvm") version kotlinVersion - id("org.jetbrains.kotlin.plugin.allopen") version kotlinVersion - id("org.jetbrains.kotlin.plugin.spring") version kotlinVersion - id("org.jetbrains.kotlin.plugin.serialization") version kotlinVersion - id("org.komapper.gradle") version komapperVersion - id("com.google.devtools.ksp") version "$kotlinVersion-$kspVersion" - id("io.quarkus") version quarkusVersion - id("org.springframework.boot") version springBootVersion - id("org.graalvm.buildtools.native") version nativeBuildToolsVersion - } } rootProject.name = "komapper-examples" diff --git a/spring-boot-jdbc/build.gradle.kts b/spring-boot-jdbc/build.gradle.kts index 86856bd6..297f0a46 100644 --- a/spring-boot-jdbc/build.gradle.kts +++ b/spring-boot-jdbc/build.gradle.kts @@ -1,26 +1,23 @@ plugins { - idea - id("org.springframework.boot") - id("com.google.devtools.ksp") - id("org.graalvm.buildtools.native") - kotlin("plugin.spring") + alias(libs.plugins.spring.boot) + alias(libs.plugins.ksp) + alias(libs.plugins.graalvm.buildtools.native) + alias(libs.plugins.kotlin.spring) } -apply(plugin = "io.spring.dependency-management") - -val komapperVersion: String by project +apply(plugin = libs.plugins.spring.dependency.management.get().pluginId) dependencies { - platform("org.komapper:komapper-platform:$komapperVersion").let { + platform(libs.komapper.platform).let { implementation(it) ksp(it) } - implementation("org.springframework.boot:spring-boot-starter-web") - implementation("com.fasterxml.jackson.module:jackson-module-kotlin") - implementation("org.komapper:komapper-spring-boot-starter-jdbc") - implementation("org.komapper:komapper-dialect-h2-jdbc") - ksp("org.komapper:komapper-processor") - testImplementation("org.springframework.boot:spring-boot-starter-test") + implementation(libs.spring.boot.starter.web) + implementation(libs.jackson.module.kotlin) + implementation(libs.komapper.spring.boot.starter.jdbc) + implementation(libs.komapper.dialect.h2.jdbc) + ksp(libs.komapper.processor) + testImplementation(libs.spring.boot.starter.test) } springBoot { diff --git a/spring-boot-r2dbc/build.gradle.kts b/spring-boot-r2dbc/build.gradle.kts index 8e6cfafa..103c6c10 100644 --- a/spring-boot-r2dbc/build.gradle.kts +++ b/spring-boot-r2dbc/build.gradle.kts @@ -1,26 +1,23 @@ plugins { - idea - id("org.springframework.boot") - id("com.google.devtools.ksp") - id("org.graalvm.buildtools.native") - kotlin("plugin.spring") + alias(libs.plugins.spring.boot) + alias(libs.plugins.ksp) + alias(libs.plugins.graalvm.buildtools.native) + alias(libs.plugins.kotlin.spring) } -apply(plugin = "io.spring.dependency-management") - -val komapperVersion: String by project +apply(plugin = libs.plugins.spring.dependency.management.get().pluginId) dependencies { - platform("org.komapper:komapper-platform:$komapperVersion").let { + platform(libs.komapper.platform).let { implementation(it) ksp(it) } - implementation("org.springframework.boot:spring-boot-starter-webflux") - implementation("com.fasterxml.jackson.module:jackson-module-kotlin") - implementation("org.komapper:komapper-spring-boot-starter-r2dbc") - implementation("org.komapper:komapper-dialect-h2-r2dbc") - ksp("org.komapper:komapper-processor") - testImplementation("org.springframework.boot:spring-boot-starter-test") + implementation(libs.spring.boot.starter.webflux) + implementation(libs.jackson.module.kotlin) + implementation(libs.komapper.spring.boot.starter.r2dbc) + implementation(libs.komapper.dialect.h2.r2dbc) + ksp(libs.komapper.processor) + testImplementation(libs.spring.boot.starter.test) } springBoot {