Skip to content

Commit 832108c

Browse files
Chloémarc0der
authored andcommitted
build: migrate to Gradle version catalog
Extract dependency versions from build.gradle.kts into gradle/libs.versions.toml so Dependabot can reliably track and bump each library. Mirrors the catalog layout used in sdkman-state. No version changes — every coordinate keeps its current version, and the runtime/test classpaths resolve identically.
1 parent 35abe68 commit 832108c

2 files changed

Lines changed: 102 additions & 39 deletions

File tree

build.gradle.kts

Lines changed: 33 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
plugins {
2-
kotlin("jvm") version "1.9.22"
3-
kotlin("plugin.serialization") version "1.9.22"
2+
alias(libs.plugins.kotlin.jvm)
3+
alias(libs.plugins.kotlin.serialization)
44
application
5-
id("pl.allegro.tech.build.axion-release") version "1.18.18"
6-
id("com.google.cloud.tools.jib") version "3.4.1"
7-
id("org.jlleitschuh.gradle.ktlint") version "14.2.0"
8-
id("io.gitlab.arturbosch.detekt") version "1.23.8"
5+
alias(libs.plugins.axion.release)
6+
alias(libs.plugins.jib)
7+
alias(libs.plugins.ktlint)
8+
alias(libs.plugins.detekt)
99
}
1010

1111
group = "io.sdkman"
@@ -49,53 +49,47 @@ repositories {
4949
maven("https://jitpack.io")
5050
}
5151

52-
// Define versions for dependencies to ensure compatibility
53-
val kotestVersion = "5.8.0"
54-
val ktorVersion = "2.3.7"
55-
val arrowVersion = "1.2.1"
56-
val exposedVersion = "0.61.0"
57-
5852
dependencies {
5953
// Arrow for functional programming
60-
implementation("io.arrow-kt:arrow-core:$arrowVersion")
54+
implementation(libs.arrow.core)
6155

6256
// Ktor server
63-
implementation("io.ktor:ktor-server-core:$ktorVersion")
64-
implementation("io.ktor:ktor-server-netty:$ktorVersion")
65-
implementation("io.ktor:ktor-server-content-negotiation:$ktorVersion")
66-
implementation("io.ktor:ktor-serialization-kotlinx-json:$ktorVersion")
67-
implementation("org.mongodb:mongo-java-driver:3.12.14")
68-
implementation("org.postgresql:postgresql:42.7.7")
69-
implementation("com.zaxxer:HikariCP:5.1.0")
70-
implementation("com.typesafe:config:1.4.3")
71-
implementation("ch.qos.logback:logback-classic:1.4.14")
57+
implementation(libs.ktor.server.core)
58+
implementation(libs.ktor.server.netty)
59+
implementation(libs.ktor.server.content.negotiation)
60+
implementation(libs.ktor.serialization.kotlinx.json)
61+
implementation(libs.mongo.java.driver)
62+
implementation(libs.postgresql)
63+
implementation(libs.hikaricp)
64+
implementation(libs.typesafe.config)
65+
implementation(libs.logback.classic)
7266

7367
// Exposed ORM
74-
implementation("org.jetbrains.exposed:exposed-core:$exposedVersion") {
68+
implementation(libs.exposed.core) {
7569
exclude(group = "org.jetbrains.kotlinx", module = "kotlinx-coroutines-core")
7670
}
77-
implementation("org.jetbrains.exposed:exposed-jdbc:$exposedVersion") {
71+
implementation(libs.exposed.jdbc) {
7872
exclude(group = "org.jetbrains.kotlinx", module = "kotlinx-coroutines-core")
7973
}
80-
implementation("org.jetbrains.exposed:exposed-kotlin-datetime:$exposedVersion") {
74+
implementation(libs.exposed.kotlin.datetime) {
8175
exclude(group = "org.jetbrains.kotlinx", module = "kotlinx-coroutines-core")
8276
}
8377

8478
// Testing
85-
testImplementation("io.kotest:kotest-runner-junit5:$kotestVersion")
86-
testImplementation("io.kotest:kotest-assertions-core:$kotestVersion")
87-
testImplementation("io.arrow-kt:arrow-core:$arrowVersion")
88-
testImplementation("io.ktor:ktor-server-test-host:$ktorVersion")
89-
testImplementation("io.ktor:ktor-client-okhttp:$ktorVersion")
90-
testImplementation("org.testcontainers:mongodb:1.19.3")
91-
testImplementation("org.testcontainers:postgresql:1.19.3")
92-
testImplementation("io.kotest.extensions:kotest-extensions-testcontainers:2.0.2")
93-
testImplementation("io.mockk:mockk:1.13.9")
94-
testImplementation("org.flywaydb:flyway-core:11.10.2")
95-
testImplementation("org.flywaydb:flyway-database-postgresql:11.10.2")
96-
97-
detektPlugins("com.github.marc0der:detekt-rules:1.0.1")
98-
compileOnly("com.github.marc0der:detekt-rules:1.0.1")
79+
testImplementation(libs.kotest.runner.junit5)
80+
testImplementation(libs.kotest.assertions.core)
81+
testImplementation(libs.arrow.core)
82+
testImplementation(libs.ktor.server.test.host)
83+
testImplementation(libs.ktor.client.okhttp)
84+
testImplementation(libs.testcontainers.mongodb)
85+
testImplementation(libs.testcontainers.postgresql)
86+
testImplementation(libs.kotest.extensions.testcontainers)
87+
testImplementation(libs.mockk)
88+
testImplementation(libs.flyway.core)
89+
testImplementation(libs.flyway.database.postgresql)
90+
91+
detektPlugins(libs.detekt.rules)
92+
compileOnly(libs.detekt.rules)
9993
}
10094

10195
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {

gradle/libs.versions.toml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
[versions]
2+
# Plugins
3+
kotlin = "1.9.22"
4+
axion-release-plugin = "1.18.18"
5+
jib-plugin = "3.4.1"
6+
ktlint-plugin = "14.2.0"
7+
detekt-plugin = "1.23.8"
8+
9+
# Libraries
10+
arrow = "1.2.1"
11+
ktor = "2.3.7"
12+
exposed = "0.61.0"
13+
mongo-java-driver = "3.12.14"
14+
postgresql = "42.7.7"
15+
hikaricp = "5.1.0"
16+
typesafe-config = "1.4.3"
17+
logback = "1.4.14"
18+
19+
# Test
20+
kotest = "5.8.0"
21+
testcontainers = "1.19.3"
22+
kotest-extensions-testcontainers = "2.0.2"
23+
mockk = "1.13.9"
24+
flyway = "11.10.2"
25+
26+
# Detekt rules
27+
detekt-rules = "1.0.1"
28+
29+
[libraries]
30+
arrow-core = { module = "io.arrow-kt:arrow-core", version.ref = "arrow" }
31+
32+
ktor-server-core = { module = "io.ktor:ktor-server-core", version.ref = "ktor" }
33+
ktor-server-netty = { module = "io.ktor:ktor-server-netty", version.ref = "ktor" }
34+
ktor-server-content-negotiation = { module = "io.ktor:ktor-server-content-negotiation", version.ref = "ktor" }
35+
ktor-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" }
36+
ktor-server-test-host = { module = "io.ktor:ktor-server-test-host", version.ref = "ktor" }
37+
ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" }
38+
39+
mongo-java-driver = { module = "org.mongodb:mongo-java-driver", version.ref = "mongo-java-driver" }
40+
postgresql = { module = "org.postgresql:postgresql", version.ref = "postgresql" }
41+
hikaricp = { module = "com.zaxxer:HikariCP", version.ref = "hikaricp" }
42+
typesafe-config = { module = "com.typesafe:config", version.ref = "typesafe-config" }
43+
logback-classic = { module = "ch.qos.logback:logback-classic", version.ref = "logback" }
44+
45+
exposed-core = { module = "org.jetbrains.exposed:exposed-core", version.ref = "exposed" }
46+
exposed-jdbc = { module = "org.jetbrains.exposed:exposed-jdbc", version.ref = "exposed" }
47+
exposed-kotlin-datetime = { module = "org.jetbrains.exposed:exposed-kotlin-datetime", version.ref = "exposed" }
48+
49+
kotest-runner-junit5 = { module = "io.kotest:kotest-runner-junit5", version.ref = "kotest" }
50+
kotest-assertions-core = { module = "io.kotest:kotest-assertions-core", version.ref = "kotest" }
51+
kotest-extensions-testcontainers = { module = "io.kotest.extensions:kotest-extensions-testcontainers", version.ref = "kotest-extensions-testcontainers" }
52+
53+
testcontainers-mongodb = { module = "org.testcontainers:mongodb", version.ref = "testcontainers" }
54+
testcontainers-postgresql = { module = "org.testcontainers:postgresql", version.ref = "testcontainers" }
55+
56+
mockk = { module = "io.mockk:mockk", version.ref = "mockk" }
57+
58+
flyway-core = { module = "org.flywaydb:flyway-core", version.ref = "flyway" }
59+
flyway-database-postgresql = { module = "org.flywaydb:flyway-database-postgresql", version.ref = "flyway" }
60+
61+
detekt-rules = { module = "com.github.marc0der:detekt-rules", version.ref = "detekt-rules" }
62+
63+
[plugins]
64+
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
65+
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
66+
axion-release = { id = "pl.allegro.tech.build.axion-release", version.ref = "axion-release-plugin" }
67+
jib = { id = "com.google.cloud.tools.jib", version.ref = "jib-plugin" }
68+
ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint-plugin" }
69+
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt-plugin" }

0 commit comments

Comments
 (0)