diff --git a/build.gradle.kts b/build.gradle.kts index e4689ab..f4d381e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,6 +17,7 @@ allprojects { plugin(rootProject.libs.plugins.kotlin.jvm.get().pluginId) plugin(rootProject.libs.plugins.kotlin.serialization.get().pluginId) plugin(rootProject.libs.plugins.kotlin.kover.get().pluginId) + plugin(rootProject.libs.plugins.spring.boot.get().pluginId) plugin("java") } @@ -30,6 +31,7 @@ allprojects { java { sourceCompatibility = JavaVersion.VERSION_17 } + kotlin { compilerOptions { freeCompilerArgs.addAll("-Xjsr305=strict") @@ -66,6 +68,10 @@ subprojects { plugin(rootProject.libs.plugins.spring.boot.get().pluginId) plugin(rootProject.libs.plugins.spring.dependencyManagement.get().pluginId) } + + tasks.bootJar { + enabled = false + } } dependencies { @@ -86,11 +92,12 @@ dependencies { implementation(libs.spring.boot.starter.validation) implementation(libs.spring.boot.starter.web) implementation(libs.spring.cloud.starter.streamKafka) + implementation(libs.spring.cloud.stream) implementation(libs.spring.doc.openapi.starter) testImplementation(libs.ktor.client.mock) testImplementation(libs.spring.boot.starter.actuatorAutoconfigure) - testImplementation(libs.spring.cloud.starter.streamTestBinder) + testImplementation(libs.spring.cloud.streamTestBinder) testImplementation(libs.testcontainers) testImplementation(libs.testcontainers.junit.jupiter) @@ -99,3 +106,17 @@ dependencies { kover(project(":core")) kover(project(":db")) } + +tasks.bootJar { + enabled = true + archiveFileName.set("app.jar") + mainClass.set("com.github.dannecron.demo.DemoApplicationKt") +} + +tasks.jar { + enabled = false +} + +springBoot { + buildInfo() +} diff --git a/db/src/main/kotlin/com/github/dannecron/demo/db/configuration/DataSourceConfiguration.kt b/db/src/main/kotlin/com/github/dannecron/demo/db/configuration/DataSourceConfiguration.kt new file mode 100644 index 0000000..092a7dd --- /dev/null +++ b/db/src/main/kotlin/com/github/dannecron/demo/db/configuration/DataSourceConfiguration.kt @@ -0,0 +1,11 @@ +package com.github.dannecron.demo.db.configuration + +import org.springframework.context.annotation.Configuration +import org.springframework.core.convert.converter.Converter +import org.springframework.data.jdbc.core.convert.JdbcCustomConversions +import org.springframework.data.jdbc.repository.config.AbstractJdbcConfiguration + +@Configuration +class DataSourceConfiguration(private val converters: List>) : AbstractJdbcConfiguration() { + override fun jdbcCustomConversions(): JdbcCustomConversions = JdbcCustomConversions(converters) +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d7f63be..60d2243 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ jackson = "2.15.4" kotlin = "2.1.10" ktor = "3.0.0" spring-boot = "3.2.10" -spring-cloud = "3.2.10" +spring-cloud = "4.1.5" testcontainers = "1.19.7" [libraries] @@ -22,7 +22,7 @@ micrometer-bridge-otel = { module = "io.micrometer:micrometer-tracing-bridge-ote micrometer-registry-prometheus = { module = "io.micrometer:micrometer-registry-prometheus" } mockito-kotlin = { module = "org.mockito.kotlin:mockito-kotlin", version = "5.4.0" } otel-exporter = { module = "io.opentelemetry:opentelemetry-exporter-otlp" } -postgres = { module = "org.postgresql:postgresql", version = "42.6.2" } +postgres = { module = "org.postgresql:postgresql", version = "42.7.5" } spring-aspects = { module = "org.springframework:spring-aspects" } spring-boot-devtools = { module = "org.springframework.boot:spring-boot-devtools" } spring-boot-starter-actuator = { module = "org.springframework.boot:spring-boot-starter-actuator", version.ref = "spring-boot" } @@ -33,7 +33,8 @@ spring-boot-starter-test = { module = "org.springframework.boot:spring-boot-star spring-boot-starter-validation = { module = "org.springframework.boot:spring-boot-starter-validation", version.ref = "spring-boot" } spring-boot-starter-web = { module = "org.springframework.boot:spring-boot-starter-web", version.ref = "spring-boot" } spring-cloud-starter-streamKafka = { module = "org.springframework.cloud:spring-cloud-starter-stream-kafka", version.ref = "spring-cloud"} -spring-cloud-starter-streamTestBinder = { module = "org.springframework.cloud:spring-cloud-stream-test-binder", version = "4.0.4"} +spring-cloud-stream = { module = "org.springframework.cloud:spring-cloud-stream", version.ref = "spring-cloud"} +spring-cloud-streamTestBinder = { module = "org.springframework.cloud:spring-cloud-stream-test-binder", version.ref = "spring-cloud"} spring-doc-openapi-starter = "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0" testcontainers = { module = "org.testcontainers:testcontainers", version.ref = "testcontainers"} testcontainers-junit-jupiter = { module = "org.testcontainers:junit-jupiter", version.ref = "testcontainers"} @@ -49,4 +50,4 @@ kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } kotlin-spring = { id = "org.jetbrains.kotlin.plugin.spring", version.ref = "kotlin" } spring-boot = { id = "org.springframework.boot", version.ref = "spring-boot" } -spring-dependencyManagement = { id = "io.spring.dependency-management", version = "1.1.6"} +spring-dependencyManagement = { id = "io.spring.dependency-management", version = "1.1.7"} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 7f46a76..02074d2 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -4,8 +4,8 @@ spring: name: demo datasource: url: jdbc:postgresql://${DB_URL:localhost:5432}/${DB_NAME:demo}?currentSchema=${DB_SCHEMA:public} - username: ${DB_USERNAME:postgres} - password: ${DB_PASSWORD:postgres} + username: ${DB_USERNAME} + password: ${DB_PASSWORD} driver-class-name: org.postgresql.Driver hikari: schema: ${DB_SCHEMA:public} @@ -65,12 +65,6 @@ logging: level: root: ${SPRING_LOG_LEVEL:INFO} -kafka: - bootstrap-servers: ${KAFKA_SERVERS:localhost:9095} - producer: - product: - default-sync-topic: demo-product-sync - validation: schema: kafka-product-sync: kafka/product/sync.json @@ -105,7 +99,7 @@ management: probability: 1.0 tracing: - url: ${OTLP_TRACING_HTTP_URL:http://localhost:4318/v1/traces} + url: ${OTLP_TRACING_HTTP_URL} neko: baseUrl: https://nekos.best