refactor libs.versions.toml

This commit is contained in:
Savosin Denis
2025-11-06 14:11:36 +07:00
parent 9a98763261
commit 11847af074
11 changed files with 128 additions and 114 deletions

1
.gitignore vendored
View File

@@ -1,5 +1,6 @@
.gradle .gradle
build/ build/
gradle.properties
!gradle/wrapper/gradle-wrapper.jar !gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/ !**/src/main/**/build/
!**/src/test/**/build/ !**/src/test/**/build/

View File

@@ -2,13 +2,13 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins { plugins {
idea idea
alias(libs.plugins.kotlin.kover) alias(libs.plugins.io.spring.dependency.management)
alias(libs.plugins.kotlin.jpa) alias(libs.plugins.org.jetbrains.kotlin.jvm)
alias(libs.plugins.kotlin.jvm) alias(libs.plugins.org.jetbrains.kotlin.plugin.jpa)
alias(libs.plugins.kotlin.serialization) alias(libs.plugins.org.jetbrains.kotlin.plugin.serialization)
alias(libs.plugins.kotlin.spring) alias(libs.plugins.org.jetbrains.kotlin.plugin.spring)
alias(libs.plugins.spring.boot) alias(libs.plugins.org.jetbrains.kotlinx.kover)
alias(libs.plugins.spring.dependencyManagement) alias(libs.plugins.org.springframework.boot)
} }
group = "com.github.dannecron.demo" group = "com.github.dannecron.demo"
@@ -16,15 +16,15 @@ version = "single-version"
allprojects { allprojects {
apply { apply {
plugin(rootProject.libs.plugins.kotlin.jvm.get().pluginId) plugin(rootProject.libs.plugins.org.jetbrains.kotlin.jvm.get().pluginId)
plugin(rootProject.libs.plugins.kotlin.serialization.get().pluginId) plugin(rootProject.libs.plugins.org.jetbrains.kotlin.plugin.serialization.get().pluginId)
plugin(rootProject.libs.plugins.kotlin.kover.get().pluginId) plugin(rootProject.libs.plugins.org.jetbrains.kotlinx.kover.get().pluginId)
plugin(rootProject.libs.plugins.spring.boot.get().pluginId) plugin(rootProject.libs.plugins.org.springframework.boot.get().pluginId)
plugin("java") plugin("java")
} }
plugins.withId("org.jetbrains.kotlinx.kover") { plugins.withId(rootProject.libs.plugins.org.jetbrains.kotlinx.kover.get().pluginId) {
tasks.named("koverXmlReport") { tasks.named("koverXmlReport") {
dependsOn(tasks.test) dependsOn(tasks.test)
} }
@@ -48,17 +48,17 @@ allprojects {
} }
dependencies { dependencies {
runtimeOnly(rootProject.libs.micrometer.registry.prometheus) runtimeOnly(rootProject.libs.io.micrometer.micrometer.registry.prometheus)
implementation(rootProject.libs.bundles.tracing) implementation(rootProject.libs.bundles.tracing)
implementation(rootProject.libs.kotlin.reflect) implementation(rootProject.libs.net.logstash.logback.logstash.logback.encoder)
implementation(rootProject.libs.kotlinx.serialization.json) implementation(rootProject.libs.org.jetbrains.kotlin.kotlin.reflect)
implementation(rootProject.libs.logback.encoder) implementation(rootProject.libs.org.jetbrains.kotlinx.kotlinx.serialization.json)
implementation(rootProject.libs.springFramework.aspects) implementation(rootProject.libs.org.springframework.spring.aspects)
testImplementation(rootProject.libs.kotlin.test.junit) testImplementation(rootProject.libs.org.jetbrains.kotlin.kotlin.test.junit5)
testImplementation(rootProject.libs.mockito.kotlin) testImplementation(rootProject.libs.org.mockito.kotlin.mockito.kotlin)
testImplementation(rootProject.libs.springBoot.starter.test) testImplementation(rootProject.libs.org.springframework.boot.spring.boot.starter.test)
} }
tasks.test { tasks.test {
@@ -71,9 +71,9 @@ allprojects {
subprojects { subprojects {
apply { apply {
plugin(rootProject.libs.plugins.kotlin.spring.get().pluginId) plugin(rootProject.libs.plugins.io.spring.dependency.management.get().pluginId)
plugin(rootProject.libs.plugins.spring.boot.get().pluginId) plugin(rootProject.libs.plugins.org.jetbrains.kotlin.plugin.spring.get().pluginId)
plugin(rootProject.libs.plugins.spring.dependencyManagement.get().pluginId) plugin(rootProject.libs.plugins.org.springframework.boot.get().pluginId)
} }
tasks.bootJar { tasks.bootJar {
@@ -90,12 +90,12 @@ dependencies {
implementation(project(":edge-consuming")) implementation(project(":edge-consuming"))
implementation(project(":edge-rest")) implementation(project(":edge-rest"))
implementation(libs.springBoot.starter.mustache) implementation(libs.org.springframework.boot.spring.boot.starter.mustache)
implementation(libs.springBoot.starter.web) implementation(libs.org.springframework.boot.spring.boot.starter.web)
testImplementation(libs.archUnit.junit) testImplementation(libs.com.tngtech.archunit.archunit.junit5)
developmentOnly(libs.springBoot.devtools) developmentOnly(libs.org.springframework.boot.spring.boot.devtools)
kover(project(":edge-contracts")) kover(project(":edge-contracts"))
kover(project(":db")) kover(project(":db"))

View File

@@ -3,8 +3,8 @@ dependencies {
implementation(project(":edge-producing")) implementation(project(":edge-producing"))
implementation(project(":edge-integration")) implementation(project(":edge-integration"))
implementation(rootProject.libs.springBoot.starter.actuator) implementation(rootProject.libs.org.springframework.boot.spring.boot.starter.actuator)
implementation(rootProject.libs.springData.commons) implementation(rootProject.libs.org.springframework.data.spring.data.commons)
testImplementation(rootProject.libs.springBoot.starter.actuatorAutoconfigure) testImplementation(rootProject.libs.org.springframework.boot.spring.boot.starter.actuator.autoconfigure)
} }

View File

@@ -1,13 +1,13 @@
plugins { plugins {
alias(libs.plugins.kotlin.jpa) alias(libs.plugins.org.jetbrains.kotlin.plugin.jpa)
} }
dependencies { dependencies {
implementation(rootProject.libs.flyway.core) implementation(rootProject.libs.org.flywaydb.flyway.core)
implementation(rootProject.libs.postgres) implementation(rootProject.libs.org.postgresql.postgresql)
implementation(rootProject.libs.springBoot.starter.jdbc) implementation(rootProject.libs.org.springframework.boot.spring.boot.starter.data.jdbc)
testImplementation(libs.testcontainers) testImplementation(libs.org.testcontainers.junit.jupiter)
testImplementation(libs.testcontainers.junit.jupiter) testImplementation(libs.org.testcontainers.postgresql)
testImplementation(libs.testcontainers.postgresql) testImplementation(libs.org.testcontainers.testcontainers)
} }

View File

@@ -2,10 +2,10 @@ dependencies {
implementation(project(":edge-contracts")) implementation(project(":edge-contracts"))
implementation(project(":core")) implementation(project(":core"))
implementation(rootProject.libs.jackson.datatype.jsr) implementation(rootProject.libs.com.fasterxml.jackson.datatype.jackson.datatype.jsr310)
implementation(rootProject.libs.jackson.module.kotlin) implementation(rootProject.libs.com.fasterxml.jackson.module.jackson.module.kotlin)
implementation(rootProject.libs.springCloud.starter.streamKafka) implementation(rootProject.libs.org.springframework.cloud.spring.cloud.starter.stream.kafka)
implementation(rootProject.libs.springCloud.stream) implementation(rootProject.libs.org.springframework.cloud.spring.cloud.stream)
testImplementation(rootProject.libs.springCloud.streamTestBinder) testImplementation(rootProject.libs.org.springframework.cloud.spring.cloud.stream.test.binder)
} }

View File

@@ -1,8 +1,7 @@
dependencies { dependencies {
implementation(rootProject.libs.json.schema.validator) implementation(rootProject.libs.io.github.optimumcode.json.schema.validator)
implementation(rootProject.libs.springBoot.starter.web) implementation(rootProject.libs.org.springdoc.springdoc.openapi.starter.webmvc.ui)
implementation(rootProject.libs.springData.commons) implementation(rootProject.libs.org.springframework.boot.spring.boot.starter.web)
implementation(rootProject.libs.springDoc.openapi.starter) implementation(rootProject.libs.org.springframework.cloud.spring.cloud.stream)
implementation(rootProject.libs.springCloud.stream) implementation(rootProject.libs.org.springframework.data.spring.data.commons)
} }

View File

@@ -1,7 +1,7 @@
dependencies { dependencies {
implementation(rootProject.libs.springFramework.context) implementation(rootProject.libs.io.ktor.ktor.client.cio)
implementation(rootProject.libs.ktor.client.cio) implementation(rootProject.libs.io.ktor.ktor.client.core)
implementation(rootProject.libs.ktor.client.core) implementation(rootProject.libs.org.springframework.spring.context)
testImplementation(rootProject.libs.ktor.client.mock) testImplementation(rootProject.libs.io.ktor.ktor.client.mock)
} }

View File

@@ -5,43 +5,57 @@ import com.github.dannecron.demo.edgeintegration.client.neko.dto.ImagesResponse
import com.github.dannecron.demo.edgeintegration.client.neko.exceptions.RequestException import com.github.dannecron.demo.edgeintegration.client.neko.exceptions.RequestException
import io.ktor.client.HttpClient import io.ktor.client.HttpClient
import io.ktor.client.engine.HttpClientEngine import io.ktor.client.engine.HttpClientEngine
import io.ktor.client.plugins.defaultRequest
import io.ktor.client.request.get import io.ktor.client.request.get
import io.ktor.client.statement.bodyAsText import io.ktor.client.statement.bodyAsText
import io.ktor.http.path import io.ktor.http.path
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
import org.springframework.stereotype.Service
class ClientImpl( class ClientImpl(
engine: HttpClientEngine, engine: HttpClientEngine,
private val baseUrl: String, private val baseUrl: String,
): Client { ): Client {
private val httpClient = HttpClient(engine) private val httpClient = HttpClient(engine) {
defaultRequest {
url(baseUrl)
}
}
override fun getCategories() = runBlocking { override fun getCategories() = runBlocking {
httpClient.get(urlString = baseUrl) { httpClient.get {
url { url {
path("/api/v2/endpoints") path("/api/v2/endpoints")
} }
} }
.takeIf { it.status.value in 200..209 } .let { response ->
?.let { val responseBody = response.bodyAsText()
response -> Json.decodeFromString<Map<String, CategoryFormat>>(response.bodyAsText()).keys if (response.status.value in 200..209) {
Json.decodeFromString<Map<String, CategoryFormat>>(responseBody).keys
} else {
throw RequestException(
"get categories error. Status: ${response.status.value}, response: $responseBody"
)
}
} }
?: throw RequestException("get categories error")
} }
override fun getImages(category: String, amount: Int) = runBlocking { override fun getImages(category: String, amount: Int) = runBlocking {
httpClient.get(urlString = baseUrl) { httpClient.get {
url { url {
path("/api/v2/$category") path("/api/v2/$category")
parameters.append("amount", amount.toString()) parameters.append("amount", amount.toString())
} }
} }
.takeIf { it.status.value in 200..209 } .let { response ->
?.let { val responseBody = response.bodyAsText()
response -> Json.decodeFromString<ImagesResponse>(response.bodyAsText()) if (response.status.value in 200..209) {
} Json.decodeFromString<ImagesResponse>(responseBody)
?: throw RequestException("get images error") } else {
throw RequestException(
"get images error. Status: ${response.status.value}, response: $responseBody"
)
}
}
} }
} }

View File

@@ -1,10 +1,10 @@
dependencies { dependencies {
implementation(project(":edge-contracts")) implementation(project(":edge-contracts"))
implementation(rootProject.libs.jackson.datatype.jsr) implementation(rootProject.libs.com.fasterxml.jackson.datatype.jackson.datatype.jsr310)
implementation(rootProject.libs.jackson.module.kotlin) implementation(rootProject.libs.com.fasterxml.jackson.module.jackson.module.kotlin)
implementation(rootProject.libs.springBoot.starter.validation) implementation(rootProject.libs.org.springframework.boot.spring.boot.starter.validation)
implementation(rootProject.libs.springCloud.starter.streamKafka) implementation(rootProject.libs.org.springframework.cloud.spring.cloud.starter.stream.kafka)
testImplementation(rootProject.libs.springCloud.streamTestBinder) testImplementation(rootProject.libs.org.springframework.cloud.spring.cloud.stream.test.binder)
} }

View File

@@ -2,6 +2,6 @@ dependencies {
implementation(project(":edge-contracts")) implementation(project(":edge-contracts"))
implementation(project(":core")) implementation(project(":core"))
implementation(rootProject.libs.springBoot.starter.web) implementation(rootProject.libs.org.springframework.boot.spring.boot.starter.web)
implementation(rootProject.libs.springData.commons) implementation(rootProject.libs.org.springframework.data.spring.data.commons)
} }

View File

@@ -7,50 +7,50 @@ spring-cloud = "4.1.5"
testcontainers = "1.19.7" testcontainers = "1.19.7"
[libraries] [libraries]
archUnit-junit = { module = "com.tngtech.archunit:archunit-junit5", version = "1.4.1" } com-fasterxml-jackson-datatype-jackson_datatype_jsr310 = { group = "com.fasterxml.jackson.datatype", name = "jackson-datatype-jsr310", version.ref = "jackson" }
flyway-core = { module = "org.flywaydb:flyway-core", version = "9.22.3" } com-fasterxml-jackson-module-jackson_module_kotlin = { group = "com.fasterxml.jackson.module", name = "jackson-module-kotlin", version.ref = "jackson" }
jackson-datatype-jsr = { module = "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", version.ref = "jackson" } com-tngtech-archunit-archunit_junit5 = { group = "com.tngtech.archunit", name = "archunit-junit5", version = "1.4.1" }
jackson-module-kotlin = { module = "com.fasterxml.jackson.module:jackson-module-kotlin", version.ref = "jackson" } io-github-optimumcode-json_schema_validator = { group = "io.github.optimumcode", name = "json-schema-validator", version = "0.5.2" }
json-schema-validator = { module = "io.github.optimumcode:json-schema-validator", version = "0.2.3"} io-ktor-ktor_client_cio = { group = "io.ktor", name = "ktor-client-cio", version.ref = "ktor" }
kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" } io-ktor-ktor_client_core = { group = "io.ktor", name = "ktor-client-core", version.ref = "ktor" }
kotlin-test-junit = { module = "org.jetbrains.kotlin:kotlin-test-junit5", version.ref = "kotlin" } io-ktor-ktor_client_mock = { group = "io.ktor", name = "ktor-client-mock", version.ref = "ktor" }
kotlinx-serialization-json = "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3" io-micrometer-micrometer_registry_prometheus = { group = "io.micrometer", name = "micrometer-registry-prometheus" }
ktor-client-cio = { module = "io.ktor:ktor-client-cio", version.ref = "ktor"} io-micrometer-micrometer_tracing_bridge_otel = { group = "io.micrometer", name = "micrometer-tracing-bridge-otel" }
ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor"} io-opentelemetry-opentelemetry_exporter_otlp = { group = "io.opentelemetry", name = "opentelemetry-exporter-otlp" }
ktor-client-mock = { module = "io.ktor:ktor-client-mock", version.ref = "ktor"} net-logstash-logback-logstash_logback_encoder = { group = "net.logstash.logback", name = "logstash-logback-encoder", version = "8.0" }
logback-encoder = { module = "net.logstash.logback:logstash-logback-encoder", version = "8.0" } org-flywaydb-flyway_core = { group = "org.flywaydb", name = "flyway-core", version = "9.22.3" }
micrometer-bridge-otel = { module = "io.micrometer:micrometer-tracing-bridge-otel"} org-jetbrains-kotlin-kotlin_reflect = { group = "org.jetbrains.kotlin", name = "kotlin-reflect", version.ref = "kotlin" }
micrometer-registry-prometheus = { module = "io.micrometer:micrometer-registry-prometheus" } org-jetbrains-kotlin-kotlin_test_junit5 = { group = "org.jetbrains.kotlin", name = "kotlin-test-junit5", version.ref = "kotlin" }
mockito-kotlin = { module = "org.mockito.kotlin:mockito-kotlin", version = "5.4.0" } org-jetbrains-kotlinx-kotlinx_serialization_json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version = "1.6.3" }
otel-exporter = { module = "io.opentelemetry:opentelemetry-exporter-otlp" } org-mockito-kotlin-mockito_kotlin = { group = "org.mockito.kotlin", name = "mockito-kotlin", version = "5.4.0" }
postgres = { module = "org.postgresql:postgresql", version = "42.7.5" } org-postgresql-postgresql = { group = "org.postgresql", name = "postgresql", version = "42.7.5" }
springFramework-context = { module = "org.springframework:spring-context"} org-springdoc-springdoc_openapi_starter_webmvc_ui = { group = "org.springdoc", name = "springdoc-openapi-starter-webmvc-ui", version = "2.6.0" }
springFramework-aspects = { module = "org.springframework:spring-aspects" } org-springframework-boot-spring_boot_devtools = { group = "org.springframework.boot", name = "spring-boot-devtools" }
springBoot-devtools = { module = "org.springframework.boot:spring-boot-devtools" } org-springframework-boot-spring_boot_starter_actuator = { group = "org.springframework.boot", name = "spring-boot-starter-actuator", version.ref = "spring-boot" }
springBoot-starter-actuator = { module = "org.springframework.boot:spring-boot-starter-actuator", version.ref = "spring-boot" } org-springframework-boot-spring_boot_starter_actuator_autoconfigure = { group = "org.springframework.boot", name = "spring-boot-actuator-autoconfigure" }
springBoot-starter-actuatorAutoconfigure = { module = "org.springframework.boot:spring-boot-actuator-autoconfigure" } org-springframework-boot-spring_boot_starter_data_jdbc = { group = "org.springframework.boot", name = "spring-boot-starter-data-jdbc", version.ref = "spring-boot" }
springBoot-starter-jdbc = { module = "org.springframework.boot:spring-boot-starter-data-jdbc", version.ref = "spring-boot"} org-springframework-boot-spring_boot_starter_mustache = { group = "org.springframework.boot", name = "spring-boot-starter-mustache", version.ref = "spring-boot"}
springBoot-starter-mustache = { module = "org.springframework.boot:spring-boot-starter-mustache", version.ref = "spring-boot" } org-springframework-boot-spring_boot_starter_test = { group = "org.springframework.boot", name = "spring-boot-starter-test", version.ref = "spring-boot"}
springBoot-starter-test = { module = "org.springframework.boot:spring-boot-starter-test", version.ref = "spring-boot" } org-springframework-boot-spring_boot_starter_validation = { group = "org.springframework.boot", name = "spring-boot-starter-validation", version.ref = "spring-boot"}
springBoot-starter-validation = { module = "org.springframework.boot:spring-boot-starter-validation", version.ref = "spring-boot" } org-springframework-boot-spring_boot_starter_web = { group = "org.springframework.boot", name = "spring-boot-starter-web", version.ref = "spring-boot"}
springBoot-starter-web = { module = "org.springframework.boot:spring-boot-starter-web", version.ref = "spring-boot" } org-springframework-cloud-spring_cloud_starter_stream_kafka = { group = "org.springframework.cloud", name = "spring-cloud-starter-stream-kafka", version.ref = "spring-cloud"}
springCloud-starter-streamKafka = { module = "org.springframework.cloud:spring-cloud-starter-stream-kafka", version.ref = "spring-cloud"} org-springframework-cloud-spring_cloud_stream = { group = "org.springframework.cloud", name = "spring-cloud-stream", version.ref = "spring-cloud" }
springCloud-stream = { module = "org.springframework.cloud:spring-cloud-stream", version.ref = "spring-cloud"} org-springframework-cloud-spring_cloud_stream_test_binder = { group = "org.springframework.cloud", name = "spring-cloud-stream-test-binder", version.ref = "spring-cloud" }
springCloud-streamTestBinder = { module = "org.springframework.cloud:spring-cloud-stream-test-binder", version.ref = "spring-cloud"} org-springframework-data-spring_data_commons = { group = "org.springframework.data", name = "spring-data-commons", version.ref = "spring-boot" }
springData-commons = { module = "org.springframework.data:spring-data-commons", version.ref = "spring-boot" } org-springframework-spring_aspects = { group = "org.springframework", name = "spring-aspects" }
springDoc-openapi-starter = "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0" org-springframework-spring_context = { group = "org.springframework", name = "spring-context"}
testcontainers = { module = "org.testcontainers:testcontainers", version.ref = "testcontainers"} org-testcontainers-junit_jupiter = { group = "org.testcontainers", name = "junit-jupiter", version.ref = "testcontainers" }
testcontainers-junit-jupiter = { module = "org.testcontainers:junit-jupiter", version.ref = "testcontainers"} org-testcontainers-postgresql = { group = "org.testcontainers", name = "postgresql", version.ref = "testcontainers" }
testcontainers-postgresql = { module = "org.testcontainers:postgresql", version.ref = "testcontainers"} org-testcontainers-testcontainers = { group = "org.testcontainers", name = "testcontainers", version.ref = "testcontainers" }
[bundles] [bundles]
tracing = ["micrometer-bridge-otel", "otel-exporter"] tracing = ["io-micrometer-micrometer_tracing_bridge_otel", "io-opentelemetry-opentelemetry_exporter_otlp"]
[plugins] [plugins]
kotlin-kover = { id = "org.jetbrains.kotlinx.kover", version = "0.8.3" } io-spring-dependency-management = { id = "io.spring.dependency-management", version = "1.1.7" }
kotlin-jpa = { id = "org.jetbrains.kotlin.plugin.jpa", version.ref = "kotlin" } org-jetbrains-kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } org-jetbrains-kotlin-plugin-jpa = { id = "org.jetbrains.kotlin.plugin.jpa", version.ref = "kotlin" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } org-jetbrains-kotlin-plugin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
kotlin-spring = { id = "org.jetbrains.kotlin.plugin.spring", version.ref = "kotlin" } org-jetbrains-kotlin-plugin-spring = { id = "org.jetbrains.kotlin.plugin.spring", version.ref = "kotlin" }
spring-boot = { id = "org.springframework.boot", version.ref = "spring-boot" } org-jetbrains-kotlinx-kover = { id = "org.jetbrains.kotlinx.kover", version = "0.8.3" }
spring-dependencyManagement = { id = "io.spring.dependency-management", version = "1.1.7"} org-springframework-boot = { id = "org.springframework.boot", version.ref = "spring-boot" }