Skip to content

Commit df3381b

Browse files
authored
[PF-2979] Upgrade Janitor to Spring Boot 3 (#171)
* WIP: first pass at Janitor Spring Boot 3 upgrade * More messing with dependencies, hopefully tests work now * Maybe this will fix tests * More tests and spotless * Fix code smells * Latest TCL * Downgrade reactor-core library to work with Azure Relay * Longer wait * PR feedback
1 parent 4194982 commit df3381b

29 files changed

+788
-544
lines changed

build.gradle

+47-60
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
// Build Script Classpath
2+
buildscript {
3+
ext {
4+
springBootVersion = '3.1.7'
5+
springDependencyManagementVersion = '1.1.4'
6+
}
7+
}
8+
19
plugins {
210
id 'idea'
311
id 'jacoco'
@@ -10,7 +18,8 @@ plugins {
1018
id 'de.undercouch.download' version '5.2.1'
1119
id 'org.hidetake.swagger.generator' version '2.19.2'
1220
id 'org.sonarqube' version '4.0.0.2929'
13-
id 'org.springframework.boot' version '2.7.17'
21+
id "org.springframework.boot" version "${springBootVersion}"
22+
id "io.spring.dependency-management" version "${springDependencyManagementVersion}"
1423
}
1524

1625
allprojects {
@@ -54,63 +63,72 @@ repositories {
5463
}
5564

5665
dependencies {
57-
ext {
58-
jerseyVersion = '2.35'
59-
springVersion = '2.7.17'
60-
}
6166
// Common utils
62-
implementation group: 'org.apache.commons', name: 'commons-dbcp2', version: '2.9.0'
63-
implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0'
64-
implementation group: 'org.apache.commons', name: 'commons-pool2', version: '2.11.1'
67+
implementation group: 'org.apache.commons', name: 'commons-dbcp2'
68+
implementation group: 'org.apache.commons', name: 'commons-lang3'
69+
implementation group: 'org.apache.commons', name: 'commons-pool2'
6570

6671
// Spring
67-
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-jdbc', version: springVersion
68-
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: springVersion
69-
annotationProcessor group: 'org.springframework.boot', name: 'spring-boot-configuration-processor', version: springVersion
72+
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-jdbc'
73+
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web'
74+
annotationProcessor group: 'org.springframework.boot', name: 'spring-boot-configuration-processor'
7075

7176
// Misc. Services
7277
implementation group: 'org.webjars', name: 'webjars-locator-core', version: '0.52'
73-
implementation group: 'javax.validation', name: 'validation-api', version: '2.0.1.Final'
78+
implementation group: 'jakarta.validation', name: 'jakarta.validation-api'
79+
implementation group: 'io.projectreactor', name: 'reactor-core', version: '3.4.34'
7480

7581
// Google dependencies
7682
constraints {
7783
implementation group: 'com.google.guava', name: 'guava', version: '31.1-jre' // '-jre' for Java 8 or higher
7884
}
79-
implementation platform('com.google.cloud:libraries-bom:26.0.0') // use common bom
80-
81-
implementation group: 'com.google.auto.value', name: 'auto-value-annotations', version: '1.9'
82-
implementation group: 'com.google.cloud', name: 'google-cloud-billing', version: '2.3.0'
83-
implementation group: 'com.google.cloud', name: 'google-cloud-core-http', version: '2.8.0'
84-
implementation group: 'com.google.cloud', name: 'google-cloud-pubsub', version: '1.120.0'
85-
implementation group: 'com.google.cloud', name: 'google-cloud-storage', version: '2.9.2'
86-
implementation group: 'com.google.cloud', name: 'google-cloud-iamcredentials', version: '2.17.0'
85+
implementation platform('com.google.cloud:libraries-bom:26.28.0') // use common bom
86+
implementation group: 'com.google.auto.value', name: 'auto-value-annotations'
87+
implementation group: 'com.google.cloud', name: 'google-cloud-pubsub'
88+
implementation group: 'com.google.cloud', name: 'google-cloud-iamcredentials'
8789
annotationProcessor group: 'com.google.auto.value', name: 'auto-value', version: '1.9'
8890

8991
// Database
90-
implementation group: 'org.liquibase' , name: 'liquibase-core', version: '4.17.2'
92+
implementation group: 'org.liquibase' , name: 'liquibase-core', version: '4.22.0'
9193
runtimeOnly group: 'org.postgresql', name: 'postgresql', version: '42.5.0'
9294

9395
// Terra libraries
94-
implementation group: 'bio.terra', name: 'terra-common-lib', version: '0.0.89-SNAPSHOT'
95-
implementation group: 'bio.terra', name: 'terra-cloud-resource-lib', version: '1.2.27-SNAPSHOT'
96-
implementation group: 'bio.terra', name: 'workspace-manager-client', version: '0.254.575-SNAPSHOT'
96+
implementation group: 'bio.terra', name: 'terra-common-lib', version: '0.1.9-SNAPSHOT'
97+
implementation group: 'bio.terra', name: 'terra-cloud-resource-lib', version: '1.2.30-SNAPSHOT'
98+
implementation group: 'bio.terra', name: 'workspace-manager-client', version: '0.254.997-SNAPSHOT'
9799

98100
// hk2 is required to use WSM client, but not correctly exposed by the client
99-
implementation group: 'org.glassfish.jersey.inject', name: 'jersey-hk2', version: jerseyVersion
101+
implementation group: 'org.glassfish.jersey.inject', name: 'jersey-hk2'
100102

101103
// Kubernetes client
102104
implementation group: 'io.kubernetes', name: 'client-java', version: '18.0.0'
103105

104-
// Metrics & Tracing
105-
implementation group: 'io.opencensus', name: 'opencensus-exporter-stats-stackdriver', version: '0.31.1'
106+
// OpenTelemetry
107+
var openTelemetryVersion = '1.32.0'
108+
implementation "io.opentelemetry:opentelemetry-api:${openTelemetryVersion}"
109+
implementation "io.opentelemetry:opentelemetry-sdk:${openTelemetryVersion}"
110+
implementation "io.opentelemetry:opentelemetry-sdk-common:${openTelemetryVersion}"
111+
implementation "io.opentelemetry:opentelemetry-sdk-metrics:${openTelemetryVersion}"
112+
implementation "io.opentelemetry:opentelemetry-exporter-logging:${openTelemetryVersion}"
113+
implementation "io.opentelemetry:opentelemetry-semconv:1.30.1-alpha"
114+
implementation "io.opentelemetry.instrumentation:opentelemetry-spring-webmvc-6.0:${openTelemetryVersion}-alpha"
115+
implementation "io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:${openTelemetryVersion}"
116+
implementation "io.opentelemetry.instrumentation:opentelemetry-spring-boot:${openTelemetryVersion}-alpha"
117+
implementation "io.opentelemetry:opentelemetry-exporter-prometheus:${openTelemetryVersion}-alpha"
118+
119+
// Google cloud open telemetry exporters
120+
var gcpOpenTelemetryExporterVersion = '0.25.2'
121+
implementation "com.google.cloud.opentelemetry:exporter-trace:${gcpOpenTelemetryExporterVersion}"
122+
implementation "com.google.cloud.opentelemetry:exporter-metrics:${gcpOpenTelemetryExporterVersion}"
106123

107124
// Swagger deps
108125
implementation group: 'io.swagger.core.v3', name: 'swagger-annotations', version: '2.2.2'
109126
runtimeOnly group: 'org.webjars.npm', name: 'swagger-ui-dist', version: '3.36.2'
110-
swaggerCodegen group: 'io.swagger.codegen.v3', name: 'swagger-codegen-cli', version: '3.0.35'
127+
swaggerCodegen group: 'io.swagger.codegen.v3', name: 'swagger-codegen-cli', version: '3.0.47'
111128

112129
// Test deps
113-
testImplementation("org.springframework.boot:spring-boot-starter-test:$springVersion") {
130+
testImplementation 'org.awaitility:awaitility:4.2.0'
131+
testImplementation("org.springframework.boot:spring-boot-starter-test") {
114132
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
115133
}
116134
// Allows us to mock final classes
@@ -120,38 +138,7 @@ dependencies {
120138
// These are not directly included, they are just constrained if they are pulled in as
121139
// transitive dependencies.
122140
constraints {
123-
implementation('com.google.protobuf:protobuf-java:3.21.10')
124-
implementation('org.yaml:snakeyaml') {
125-
version {
126-
strictly '1.33'
127-
}
128-
}
129-
implementation('io.projectreactor.netty:reactor-netty-http:1.0.38')
130-
implementation('com.fasterxml.jackson:jackson-bom:2.14.2')
131-
implementation('org.bouncycastle:bcpkix-jdk15on:1.70')
132-
implementation('org.bouncycastle:bcprov-jdk15on:1.70')
133141
spotbugs('org.apache.bcel:bcel:6.6.1')
134-
// TODO(PF-2299): Remove these once all dependencies are using >3.0.0. This
135-
// is forced to version 2.1.6 here to paper over a breaking change in the
136-
// underlying library (the move from javax.ws... to jakarta.ws... package).
137-
implementation('jakarta.ws.rs:jakarta.ws.rs-api') {
138-
version {
139-
strictly '2.1.6'
140-
}
141-
}
142-
implementation('org.glassfish.jersey.core:jersey-common') {
143-
version {
144-
strictly jerseyVersion
145-
}
146-
}
147-
// slf4j-api is pulled in via TCL, Janitor cannot go to version 2.0 until
148-
// TCL does.
149-
implementation('org.slf4j:slf4j-api') {
150-
version {
151-
strictly '1.7.36'
152-
}
153-
}
154-
155142
}
156143
}
157144

0 commit comments

Comments
 (0)