22// Licensed under the MIT license.
33import com.diffplug.gradle.spotless.SpotlessExtension
44import io.gitlab.arturbosch.detekt.Detekt
5+ import kotlinx.kover.gradle.plugin.dsl.KoverProjectExtension
56import org.gradle.kotlin.dsl.implementation
67
78plugins {
8- val kotlinVersion = " 1.9.23 "
9+ val kotlinVersion = " 2.0.21 "
910 kotlin(" jvm" ) version kotlinVersion
10- id(" com.diffplug.spotless" ) version " 6.22.0"
11- id(" org.springframework.boot" ) version " 3.2.10" apply false
12- id(" io.gitlab.arturbosch.detekt" ) version " 1.23.6"
13- id(" pl.allegro.tech.build.axion-release" ) version " 1.15.5"
14- id(" org.jetbrains.kotlinx.kover" ) version " 0.7.6"
11+ id(" com.diffplug.spotless" ) version " 7.0.3"
12+ id(" org.springframework.boot" ) version " 3.4.9" apply false
13+ id(" io.gitlab.arturbosch.detekt" ) version " 1.23.8"
14+ id(" pl.allegro.tech.build.axion-release" ) version " 1.18.18"
15+ id(" org.jetbrains.kotlinx.kover" ) version " 0.9.1"
16+ id(" project-report" )
1517 `maven- publish`
1618 // Apply the java-library plugin for API and implementation separation.
1719 `java- library`
@@ -27,7 +29,11 @@ project.version = scmVersion.version
2729
2830val kotlinJvmTarget = 21
2931
30- java { toolchain { languageVersion.set(JavaLanguageVersion .of(kotlinJvmTarget)) } }
32+ java {
33+ targetCompatibility = JavaVersion .VERSION_21
34+ sourceCompatibility = JavaVersion .VERSION_21
35+ toolchain { languageVersion.set(JavaLanguageVersion .of(kotlinJvmTarget)) }
36+ }
3137
3238publishing {
3339 repositories {
@@ -84,14 +90,14 @@ configure<SpotlessExtension> {
8490 licenseHeader(licenseHeaderComment)
8591 }
8692 kotlin {
87- ktfmt(" 0.41 " )
93+ ktfmt()
8894 target(" **/*.kt" )
8995 licenseHeader(licenseHeaderComment)
9096 }
9197 kotlinGradle {
92- ktfmt(" 0.41 " )
98+ ktfmt()
9399 target(" **/*.kts" )
94- // licenseHeader(licenseHeaderComment, "import")
100+ licenseHeader(licenseHeaderComment, " ( import |// no-import) " )
95101 }
96102}
97103
@@ -149,33 +155,37 @@ tasks.test { useJUnitPlatform() }
149155// Dependencies version
150156
151157// Required versions
152- val jacksonVersion = " 2.15.3"
153- val springWebVersion = " 6.1.4"
154- val springBootVersion = " 3.2.10"
158+ val jacksonVersion = " 2.18.3"
159+ val springWebVersion = " 6.2.9"
160+ val springBootVersion = " 3.4.9"
161+ val bouncyCastleJdk18Version = " 1.81"
155162
156163// Implementation
157- val swaggerParserVersion = " 2.1.22 "
164+ val swaggerParserVersion = " 2.1.31 "
158165val hashidsVersion = " 1.0.3"
159166val springOauthAutoConfigureVersion = " 2.6.8"
160167val springSecurityJwtVersion = " 1.1.1.RELEASE"
161- val springDocVersion = " 2.5.0"
162- val springOauthVersion = " 6.2.2"
163- val servletApiVersion = " 6.0.0"
164- val oktaSpringBootVersion = " 3.0.5"
165- val tikaVersion = " 2.9.1"
166- val redisOMVersion = " 0.9.1"
167- val kotlinCoroutinesCoreVersion = " 1.7.3"
168+ val springDocVersion = " 2.8.12"
169+ val springOauthVersion = " 6.5.3"
170+ val servletApiVersion = " 6.1.0"
171+ val tikaVersion = " 3.2.2"
172+ val redisOMVersion = " 0.9.10"
173+ val kotlinCoroutinesCoreVersion = " 1.10.2"
168174
169175// Checks
170- val detektVersion = " 1.23.6 "
176+ val detektVersion = " 1.23.8 "
171177
172178// Tests
173- val jUnitBomVersion = " 5.10.0"
174- val mockkVersion = " 1.13.8"
175- val awaitilityKVersion = " 4.2.0"
176- val testcontainersRedis = " 1.6.4"
179+ val jUnitBomVersion = " 5.12.2"
180+ val mockkVersion = " 1.14.5"
181+ val awaitilityKVersion = " 4.3.0"
182+ val testContainersRedisVersion = " 1.6.4"
183+ val testContainersPostgreSQLVersion = " 1.20.6"
184+ val testContainersLocalStackVersion = " 1.20.6"
177185
178186dependencies {
187+ // https://youtrack.jetbrains.com/issue/KT-71057/POM-file-unusable-after-upgrading-to-2.0.20-from-2.0.10
188+ implementation(platform(" org.jetbrains.kotlin:kotlin-bom:2.0.21" ))
179189 implementation(platform(org.springframework.boot.gradle.plugin.SpringBootPlugin .BOM_COORDINATES ))
180190
181191 detekt(" io.gitlab.arturbosch.detekt:detekt-cli:$detektVersion " )
@@ -199,35 +209,44 @@ dependencies {
199209 implementation(" com.fasterxml.jackson.core:jackson-databind:$jacksonVersion " )
200210 implementation(" org.springframework:spring-web:$springWebVersion " )
201211 implementation(" org.springframework.boot:spring-boot-autoconfigure:$springBootVersion " )
212+ implementation(
213+ " org.springframework.security:spring-security-jwt:${springSecurityJwtVersion} " ) {
214+ exclude(group = " org.bouncycastle" , module = " bcpkix-jdk15on" )
215+ constraints {
216+ implementation(" org.bouncycastle:bcpkix-jdk18on:${bouncyCastleJdk18Version} " )
217+ }
218+ }
202219 }
203220 }
204221 implementation(" org.springframework.boot:spring-boot-starter-security" )
205- implementation(" org.springframework.security:spring-security-oauth2-jose:${springOauthVersion} " )
222+ implementation(" org.springframework.security:spring-security-oauth2-jose:${springOauthVersion} " ) {
223+ constraints { implementation(" com.nimbusds:nimbus-jose-jwt:10.4.2" ) }
224+ }
206225 implementation(
207226 " org.springframework.security:spring-security-oauth2-resource-server:${springOauthVersion} " )
208- implementation(" org.springframework.security:spring-security-jwt:${springSecurityJwtVersion} " )
209227
210228 implementation(" org.springframework.boot:spring-boot-starter-web" ) {
211229 exclude(group = " org.springframework.boot" , module = " spring-boot-starter-tomcat" )
212230 }
213231
214232 implementation(" org.springdoc:springdoc-openapi-starter-webmvc-ui:${springDocVersion} " )
215- implementation(" com.fasterxml.jackson.module:jackson-module-kotlin:2.17.2 " )
233+ implementation(" com.fasterxml.jackson.module:jackson-module-kotlin:$jacksonVersion " )
216234
217235 implementation(" jakarta.servlet:jakarta.servlet-api:${servletApiVersion} " )
218- implementation(" com.okta.spring:okta-spring-boot-starter:${oktaSpringBootVersion} " )
219236 implementation(" org.springframework.boot:spring-boot-starter-actuator" )
220237 implementation(" io.micrometer:micrometer-registry-prometheus" )
221238 implementation(" org.springframework.boot:spring-boot-starter-aop" )
239+ implementation(" org.apache.httpcomponents.client5:httpclient5" )
222240
223241 implementation(" org.apache.tika:tika-core:${tikaVersion} " )
224242 implementation(" org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinCoroutinesCoreVersion " )
225- implementation(" com.redis.om:redis-om-spring:${redisOMVersion} " ) {
226- constraints { implementation(" ai.djl:api:0.28.0" ) }
227- }
243+ implementation(" com.redis.om:redis-om-spring:${redisOMVersion} " )
228244
229- implementation(" com.redis.testcontainers:testcontainers-redis-junit:$testcontainersRedis " )
230245 implementation(" org.springframework.boot:spring-boot-starter-test" )
246+ implementation(
247+ " com.redis.testcontainers:testcontainers-redis-junit:${testContainersRedisVersion} " )
248+ implementation(" org.testcontainers:postgresql:${testContainersPostgreSQLVersion} " )
249+ implementation(" org.testcontainers:localstack:${testContainersLocalStackVersion} " )
231250
232251 testImplementation(kotlin(" test" ))
233252 testImplementation(platform(" org.junit:junit-bom:${jUnitBomVersion} " ))
@@ -244,16 +263,23 @@ dependencies {
244263 annotationProcessor(" org.springframework.boot:spring-boot-configuration-processor" )
245264}
246265
247- extensions.configure< kotlinx.kover.gradle.plugin.dsl.KoverReportExtension > {
248- defaults {
249- // reports configs for XML, HTML, verify reports
266+ extensions.configure<KoverProjectExtension >(" kover" ) {
267+ reports {
268+ filters {
269+ includes {
270+ packages(" com.cosmotech.api" )
271+ classes(" com.cosmotech.api.id.*" )
272+ classes(" com.cosmotech.api.rbac.*" )
273+ classes(" com.cosmotech.utils.*" )
274+ }
275+ }
250276 }
251- filters {
252- includes {
253- packages( " com.cosmotech.api " )
254- classes( " com.cosmotech.api.id.* " )
255- classes( " com.cosmotech.api.rbac.* " )
256- classes( " com.cosmotech.utils.* " )
277+ }
278+
279+ kover {
280+ reports {
281+ total {
282+ // reports configs for XML, HTML, verify reports
257283 }
258284 }
259285}
0 commit comments