Skip to content

Commit fc9b2fc

Browse files
committed
Refactor build
- use Gradle version catalog - use Gradle BOM instead of dependency management plugin - remove unnecessary dependency and runtime hint from `common-module` - update dependencies
1 parent 359bf94 commit fc9b2fc

File tree

9 files changed

+106
-111
lines changed

9 files changed

+106
-111
lines changed

book-service/build.gradle.kts

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
2+
import org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
23
import org.springframework.boot.gradle.tasks.aot.ProcessAot
34
import org.springframework.boot.gradle.tasks.bundling.BootBuildImage
45

56
plugins {
6-
id("org.springframework.boot")
7-
id("io.spring.dependency-management")
8-
id("org.openapi.generator")
9-
id("org.graalvm.buildtools.native")
10-
kotlin("jvm")
11-
kotlin("plugin.spring")
12-
kotlin("plugin.jpa")
7+
alias(libs.plugins.kotlin.jvm)
8+
alias(libs.plugins.kotlin.spring)
9+
alias(libs.plugins.springBoot)
10+
alias(libs.plugins.nativeBuildTools)
11+
alias(libs.plugins.kotlin.jpa)
12+
alias(libs.plugins.openApiGenerator)
1313
}
1414

1515
java {
@@ -26,16 +26,17 @@ val dockerRepository: String by project
2626

2727
dependencies {
2828
implementation(project(":common-model"))
29-
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
30-
implementation("org.springframework.boot:spring-boot-starter-validation")
31-
implementation("org.springframework.boot:spring-boot-starter-web")
32-
implementation("org.springframework.boot:spring-boot-starter-actuator")
33-
implementation("org.flywaydb:flyway-database-postgresql")
34-
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
35-
implementation("org.jetbrains.kotlin:kotlin-reflect")
29+
implementation(platform(BOM_COORDINATES))
30+
implementation(libs.springBootStarter.dataJpa)
31+
implementation(libs.springBootStarter.validation)
32+
implementation(libs.springBootStarter.web)
33+
implementation(libs.springBootStarter.actuator)
34+
implementation(libs.kotlinReflect)
35+
implementation(libs.jacksonModuleKotlin)
36+
implementation(libs.flyway)
3637
// `implementation` is needed only to handle PSQLException in the exception handler. if that is not necessary, the dependency should be `runtimeOnly`
37-
implementation("org.postgresql:postgresql")
38-
testImplementation("org.springframework.boot:spring-boot-starter-test")
38+
implementation(libs.postgres)
39+
testImplementation(libs.springBootStarter.test)
3940
}
4041

4142
kotlin {

common-model/build.gradle.kts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,19 @@
1+
import org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
12
import org.springframework.boot.gradle.tasks.bundling.BootJar
23

34
plugins {
45
id("java-library")
5-
id("org.springframework.boot")
6-
kotlin("jvm")
6+
alias(libs.plugins.springBoot)
7+
alias(libs.plugins.kotlin.jvm)
78
}
89

910
repositories {
1011
mavenCentral()
1112
}
1213

13-
val springCoreVersion: String by project
14-
val flywayVersion: String by project
15-
1614
dependencies {
17-
implementation("org.springframework:spring-core:$springCoreVersion")
18-
// TODO: remove after https://github.com/oracle/graalvm-reachability-metadata/issues/424
19-
implementation("org.flywaydb:flyway-database-postgresql:$flywayVersion")
15+
implementation(platform(BOM_COORDINATES))
16+
implementation(libs.springCore)
2017
}
2118

2219
tasks.withType<BootJar> {

common-model/src/main/kotlin/com/romankudryashov/eventdrivenarchitecture/commonmodel/spring/CommonRuntimeHints.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import com.romankudryashov.eventdrivenarchitecture.commonmodel.BookLoan
66
import com.romankudryashov.eventdrivenarchitecture.commonmodel.CurrentAndPreviousState
77
import com.romankudryashov.eventdrivenarchitecture.commonmodel.Notification
88
import com.romankudryashov.eventdrivenarchitecture.commonmodel.OutboxMessage
9-
import org.flywaydb.core.internal.publishing.PublishingConfigurationExtension
109
import org.springframework.aot.hint.MemberCategory
1110
import org.springframework.aot.hint.RuntimeHints
1211
import org.springframework.aot.hint.RuntimeHintsRegistrar
@@ -28,8 +27,5 @@ class CommonRuntimeHints : RuntimeHintsRegistrar {
2827
// required to persist entities
2928
// TODO: remove after https://hibernate.atlassian.net/browse/HHH-16809
3029
.registerType(Array<UUID>::class.java, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS)
31-
// required to use Flyway
32-
// TODO: remove after https://github.com/oracle/graalvm-reachability-metadata/issues/424
33-
.registerType(PublishingConfigurationExtension::class.java, MemberCategory.INVOKE_PUBLIC_METHODS)
3430
}
3531
}

gradle.properties

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,3 @@
11
org.gradle.parallel=true
22
kotlin.code.style=official
3-
# plugins
4-
springBootVersion=3.5.0
5-
springDependencyManagementVersion=1.1.7
6-
openApiGeneratorVersion=7.13.0
7-
nativeBuildToolsVersion=0.10.6
8-
kotlinVersion=2.1.21
9-
# dependencies for `user-service`
10-
guavaVersion=33.4.8-jre
11-
kotlinxHtmlVersion=0.12.0
12-
# dependencies for `common-model`
13-
springCoreVersion=6.2.7
14-
# TODO: remove after https://github.com/oracle/graalvm-reachability-metadata/issues/424
15-
flywayVersion=11.8.2
16-
# `webjars` dependencies for `notification-service`
17-
sockjsClientVersion=1.5.1
18-
stompWebsocketVersion=2.3.4
19-
bootstrapVersion=5.3.5
20-
jqueryVersion=3.7.1
21-
# docker
223
dockerRepository=docker.io/kudryashovroman/event-driven-architecture

gradle/libs.versions.toml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
[versions]
2+
springBoot = "3.5.4"
3+
kotlin = "2.2.0"
4+
nativeBuildTools = "0.11.0"
5+
openApiGenerator = "7.14.0"
6+
7+
[libraries]
8+
# Spring Boot starters
9+
springBootStarter-dataJpa = { module = "org.springframework.boot:spring-boot-starter-data-jpa" }
10+
springBootStarter-web = { module = "org.springframework.boot:spring-boot-starter-web" }
11+
springBootStarter-actuator = { module = "org.springframework.boot:spring-boot-starter-actuator" }
12+
springBootStarter-test = { module = "org.springframework.boot:spring-boot-starter-test" }
13+
springBootStarter-validation = { module = "org.springframework.boot:spring-boot-starter-validation" }
14+
springBootStarter-mail = { module = "org.springframework.boot:spring-boot-starter-mail" }
15+
springBootStarter-webSocket = { module = "org.springframework.boot:spring-boot-starter-websocket" }
16+
17+
# common libraries
18+
kotlinReflect = { module = "org.jetbrains.kotlin:kotlin-reflect" }
19+
jacksonModuleKotlin = { module = "com.fasterxml.jackson.module:jackson-module-kotlin" }
20+
flyway = { module = "org.flywaydb:flyway-database-postgresql" }
21+
postgres = { module = "org.postgresql:postgresql" }
22+
23+
# libraries for `common-model`
24+
springCore = { module = "org.springframework:spring-core" }
25+
26+
# libraries for `user-service`
27+
guava = { module = "com.google.guava:guava", version = "33.4.8-jre" }
28+
kotlinxHtml = { module = "org.jetbrains.kotlinx:kotlinx-html", version = "0.12.0" }
29+
30+
# libraries for `notification-service`
31+
webjars-locator = { module = "org.webjars:webjars-locator-lite" }
32+
webjars-sockjsClient = { module = "org.webjars:sockjs-client", version = "1.5.1" }
33+
webjars-stompWebsocket = { module = "org.webjars:stomp-websocket", version = "2.3.4" }
34+
webjars-bootstrap = { module = "org.webjars:bootstrap", version = "5.3.7" }
35+
webjars-jquery = { module = "org.webjars:jquery", version = "3.7.1" }
36+
37+
[bundles]
38+
webjars = ["webjars-locator", "webjars-sockjsClient", "webjars-stompWebsocket", "webjars-bootstrap", "webjars-jquery"]
39+
40+
[plugins]
41+
springBoot = { id = "org.springframework.boot", version.ref = "springBoot" }
42+
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
43+
kotlin-spring = { id = "org.jetbrains.kotlin.plugin.spring", version.ref = "kotlin" }
44+
kotlin-jpa = { id = "org.jetbrains.kotlin.plugin.jpa", version.ref = "kotlin" }
45+
nativeBuildTools = { id = "org.graalvm.buildtools.native", version.ref = "nativeBuildTools" }
46+
openApiGenerator = { id = "org.openapi.generator", version.ref = "openApiGenerator" }

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

notification-service/build.gradle.kts

Lines changed: 19 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1+
import org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
12
import org.springframework.boot.gradle.tasks.aot.ProcessAot
23
import org.springframework.boot.gradle.tasks.bundling.BootBuildImage
34

45
plugins {
5-
id("org.springframework.boot")
6-
id("io.spring.dependency-management")
6+
alias(libs.plugins.kotlin.jvm)
7+
alias(libs.plugins.kotlin.spring)
8+
alias(libs.plugins.springBoot)
9+
alias(libs.plugins.nativeBuildTools)
10+
alias(libs.plugins.kotlin.jpa)
711
// TODO: remove after https://github.com/gradle/gradle/issues/17559
8-
id("org.openapi.generator")
9-
id("org.graalvm.buildtools.native")
10-
kotlin("jvm")
11-
kotlin("plugin.spring")
12-
kotlin("plugin.jpa")
12+
alias(libs.plugins.openApiGenerator)
1313
}
1414

1515
java {
@@ -22,30 +22,23 @@ repositories {
2222
mavenCentral()
2323
}
2424

25-
val sockjsClientVersion: String by project
26-
val stompWebsocketVersion: String by project
27-
val bootstrapVersion: String by project
28-
val jqueryVersion: String by project
2925
val dockerRepository: String by project
3026

3127
dependencies {
3228
implementation(project(":common-model"))
33-
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
34-
implementation("org.springframework.boot:spring-boot-starter-web")
35-
implementation("org.springframework.boot:spring-boot-starter-actuator")
36-
implementation("org.springframework.boot:spring-boot-starter-mail")
37-
implementation("org.springframework.boot:spring-boot-starter-websocket")
38-
implementation("org.flywaydb:flyway-database-postgresql")
39-
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
40-
implementation("org.jetbrains.kotlin:kotlin-reflect")
29+
implementation(platform(BOM_COORDINATES))
30+
implementation(libs.springBootStarter.dataJpa)
31+
implementation(libs.springBootStarter.web)
32+
implementation(libs.springBootStarter.actuator)
33+
implementation(libs.springBootStarter.mail)
34+
implementation(libs.springBootStarter.webSocket)
35+
implementation(libs.kotlinReflect)
36+
implementation(libs.jacksonModuleKotlin)
37+
implementation(libs.flyway)
4138
// "webjars" dependencies are needed to serve `index.html` and its resources
42-
implementation("org.webjars:webjars-locator-lite")
43-
implementation("org.webjars:sockjs-client:$sockjsClientVersion")
44-
implementation("org.webjars:stomp-websocket:$stompWebsocketVersion")
45-
implementation("org.webjars:bootstrap:$bootstrapVersion")
46-
implementation("org.webjars:jquery:$jqueryVersion")
47-
runtimeOnly("org.postgresql:postgresql")
48-
testImplementation("org.springframework.boot:spring-boot-starter-test")
39+
implementation(libs.bundles.webjars)
40+
runtimeOnly(libs.postgres)
41+
testImplementation(libs.springBootStarter.test)
4942
}
5043

5144
kotlin {

settings.gradle.kts

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,3 @@ include(
66
"notification-service",
77
"common-model"
88
)
9-
10-
pluginManagement {
11-
val springBootVersion: String by settings
12-
val springDependencyManagementVersion: String by settings
13-
val openApiGeneratorVersion: String by settings
14-
val nativeBuildToolsVersion: String by settings
15-
val kotlinVersion: String by settings
16-
17-
plugins {
18-
id("org.springframework.boot") version springBootVersion
19-
id("io.spring.dependency-management") version springDependencyManagementVersion
20-
id("org.openapi.generator") version openApiGeneratorVersion
21-
id("org.graalvm.buildtools.native") version nativeBuildToolsVersion
22-
kotlin("jvm") version kotlinVersion
23-
kotlin("plugin.spring") version kotlinVersion
24-
kotlin("plugin.jpa") version kotlinVersion
25-
}
26-
}

user-service/build.gradle.kts

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1+
import org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
12
import org.springframework.boot.gradle.tasks.bundling.BootBuildImage
23

34
plugins {
4-
id("org.springframework.boot")
5-
id("io.spring.dependency-management")
5+
alias(libs.plugins.kotlin.jvm)
6+
alias(libs.plugins.kotlin.spring)
7+
alias(libs.plugins.springBoot)
8+
alias(libs.plugins.nativeBuildTools)
9+
alias(libs.plugins.kotlin.jpa)
610
// TODO: remove after https://github.com/gradle/gradle/issues/17559
7-
id("org.openapi.generator")
8-
id("org.graalvm.buildtools.native")
9-
kotlin("jvm")
10-
kotlin("plugin.spring")
11-
kotlin("plugin.jpa")
11+
alias(libs.plugins.openApiGenerator)
1212
}
1313

1414
java {
@@ -21,22 +21,21 @@ repositories {
2121
mavenCentral()
2222
}
2323

24-
val guavaVersion: String by project
25-
val kotlinxHtmlVersion: String by project
2624
val dockerRepository: String by project
2725

2826
dependencies {
2927
implementation(project(":common-model"))
30-
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
31-
implementation("org.springframework.boot:spring-boot-starter-web")
32-
implementation("org.springframework.boot:spring-boot-starter-actuator")
33-
implementation("org.flywaydb:flyway-database-postgresql")
34-
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
35-
implementation("org.jetbrains.kotlin:kotlin-reflect")
36-
implementation("org.jetbrains.kotlinx:kotlinx-html:$kotlinxHtmlVersion")
37-
implementation("com.google.guava:guava:$guavaVersion")
38-
runtimeOnly("org.postgresql:postgresql")
39-
testImplementation("org.springframework.boot:spring-boot-starter-test")
28+
implementation(platform(BOM_COORDINATES))
29+
implementation(libs.springBootStarter.dataJpa)
30+
implementation(libs.springBootStarter.web)
31+
implementation(libs.springBootStarter.actuator)
32+
implementation(libs.kotlinReflect)
33+
implementation(libs.jacksonModuleKotlin)
34+
implementation(libs.flyway)
35+
implementation(libs.kotlinxHtml)
36+
implementation(libs.guava)
37+
runtimeOnly(libs.postgres)
38+
testImplementation(libs.springBootStarter.test)
4039
}
4140

4241
kotlin {

0 commit comments

Comments
 (0)