Skip to content

Commit c27c00e

Browse files
authored
Merge pull request #970 from yidongnan/support_springboot-3.x
[WIP] Support Spring Boot 3.x
2 parents ee7a82d + 30b5d64 commit c27c00e

File tree

38 files changed

+396
-282
lines changed

38 files changed

+396
-282
lines changed

.github/workflows/build-master.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
runs-on: ubuntu-latest
1212
strategy:
1313
matrix:
14-
java: ['8', '11']
14+
java: ['17']
1515
steps:
1616
- name: Checkout code
1717
uses: actions/checkout@v3
@@ -22,7 +22,7 @@ jobs:
2222
- name: Set up java ${{ matrix.java }}
2323
uses: actions/setup-java@v3
2424
with:
25-
distribution: temurin
25+
distribution: 'temurin'
2626
java-version: ${{ matrix.java }}
2727
check-latest: true
2828

@@ -35,7 +35,7 @@ jobs:
3535
arguments: --scan --stacktrace --warning-mode=all build
3636

3737
- name: Deploy with Gradle
38-
if: ${{ matrix.java == '8' }}
38+
if: ${{ matrix.java == '17' }}
3939
uses: gradle/gradle-build-action@v2
4040
with:
4141
arguments: --scan publish -x check -Psigning.gnupg.executable=gpg -Psigning.gnupg.keyName=${{ secrets.GPG_NAME }} -Psigning.gnupg.passphrase=${{ secrets.GPG_PASSWORD }}

.github/workflows/pull-request.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ jobs:
88
runs-on: ubuntu-latest
99
strategy:
1010
matrix:
11-
java: ['8', '11']
11+
java: ['17']
1212
steps:
1313
- name: Checkout code
1414
uses: actions/checkout@v3

build.gradle

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,19 @@ buildscript {
1616
// https://github.com/google/guava/releases
1717
guavaVersion = '32.1.2-jre'
1818
// https://github.com/protocolbuffers/protobuf/releases
19-
protobufVersion = '3.23.4'
19+
protobufVersion = '3.24.3'
2020
protobufGradlePluginVersion = '0.9.4'
2121

2222
// https://github.com/spring-projects/spring-boot/releases
23-
springBootVersion = '2.7.16'
23+
springBootVersion = '3.1.4'
2424
// https://github.com/spring-cloud/spring-cloud-release/releases
25-
springCloudVersion = '2021.0.8'
25+
springCloudVersion = '2022.0.4'
2626
// https://github.com/alibaba/spring-cloud-alibaba/releases
2727
springCloudAlibabaNacosVersion = '2021.1'
2828

2929
lombokPluginVersion = '8.1.0'
30-
versioningPluginVersion = '2.15.1'
31-
versionsPluginVersion = '0.47.0'
30+
versioningPluginVersion = '3.0.0'
31+
versionsPluginVersion = '0.48.0'
3232

3333
// https://github.com/JetBrains/kotlin/releases
3434
kotlinVersion = "1.8.22"
@@ -44,7 +44,7 @@ plugins {
4444
id 'com.google.protobuf' version "${protobufGradlePluginVersion}"
4545
id 'io.freefair.lombok' version "${lombokPluginVersion}" apply false
4646
id 'com.github.ben-manes.versions' version "${versionsPluginVersion}" // gradle dependencyUpdates
47-
id 'com.diffplug.spotless' version '6.13.0'
47+
id 'com.diffplug.spotless' version '6.21.0'
4848
id 'org.jetbrains.kotlin.jvm' version "${kotlinVersion}" apply false
4949
}
5050

@@ -60,8 +60,8 @@ if (hasProperty('buildScan')) {
6060
// you may use IntelliJ's project configuration to make it use the gradle version defined in the gradle script's wrapper section
6161
wrapper {
6262
// Update using:
63-
// ./gradlew wrapper --gradle-version=7.5.1 --distribution-type=bin
64-
gradleVersion = '7.6.2'
63+
// ./gradlew wrapper --gradle-version=8.4 --distribution-type=bin
64+
gradleVersion = '8.4'
6565
}
6666

6767
def buildTimeAndDate = OffsetDateTime.now()
@@ -82,13 +82,13 @@ allprojects {
8282

8383
java {
8484
toolchain {
85-
languageVersion = JavaLanguageVersion.of(8)
85+
languageVersion = JavaLanguageVersion.of(17)
8686
}
8787
}
8888

8989
compileJava {
90-
sourceCompatibility = JavaVersion.VERSION_1_8
91-
targetCompatibility = JavaVersion.VERSION_1_8
90+
sourceCompatibility = JavaVersion.VERSION_17
91+
targetCompatibility = JavaVersion.VERSION_17
9292
options.encoding = 'UTF-8'
9393
}
9494

@@ -106,6 +106,7 @@ allprojects {
106106
spotless {
107107
java {
108108
target('src/main/**/*.java', 'src/test/**/*.java')
109+
targetExclude('**/SocketUtils.java')
109110
licenseHeaderFile rootProject.file('extra/spotless/mit-license.java')
110111
removeUnusedImports()
111112
importOrderFile rootProject.file('extra/eclipse/eclipse.importorder')
@@ -168,12 +169,7 @@ allprojects {
168169

169170
Project commonProject = project(':grpc-common-spring-boot')
170171

171-
String javaAPIdoc
172-
if (JavaVersion.current().isJava9Compatible()) {
173-
javaAPIdoc = 'https://docs.oracle.com/en/java/javase/11/docs/api'
174-
} else {
175-
javaAPIdoc = 'https://docs.oracle.com/javase/8/docs/api/'
176-
}
172+
String javaAPIdoc = 'https://docs.oracle.com/en/java/javase/17/docs/api'
177173

178174
allprojects { project ->
179175
buildscript {
@@ -196,6 +192,7 @@ allprojects { project ->
196192
springFrameworkVersion = dependencyManagement.importedProperties['spring-framework.version']
197193
springSecurityVersion = dependencyManagement.importedProperties['spring-security.version']
198194
springCloudCommonsVersion = dependencyManagement.importedProperties['spring-cloud-commons.version']
195+
braveInstrumentationGrpc = dependencyManagement.importedProperties['brave.version']
199196
}
200197
}
201198

@@ -249,8 +246,8 @@ allprojects { project ->
249246
'https://docs.spring.io/spring-security/site/docs/' + springSecurityVersion + '/api/',
250247
'https://docs.spring.io/spring-boot/docs/' + springBootVersion + '/api/',
251248
'https://static.javadoc.io/org.springframework.cloud/spring-cloud-commons/' + springCloudCommonsVersion + '/',
252-
// 'https://static.javadoc.io/io.zipkin.brave/brave/' + braveInstrumentationGrpc + '/', // Requires javadoc 11
253-
// 'https://static.javadoc.io/io.zipkin.brave/brave-instrumentation-grpc/' + braveInstrumentationGrpc + '/', // Requires javadoc 11
249+
'https://static.javadoc.io/io.zipkin.brave/brave/' + braveInstrumentationGrpc + '/',
250+
'https://static.javadoc.io/io.zipkin.brave/brave-instrumentation-grpc/' + braveInstrumentationGrpc + '/',
254251
'https://google.github.io/guava/releases/29.0-android/api/docs/'
255252
]
256253
}

examples/grpc-lib/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ dependencies {
99
if (JavaVersion.current().isJava9Compatible()) {
1010
// Workaround for @javax.annotation.Generated
1111
// see: https://github.com/grpc/grpc-java/issues/3633
12-
implementation 'jakarta.annotation:jakarta.annotation-api'
12+
compileOnly 'org.apache.tomcat:annotations-api:6.0.53'
13+
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
1314
}
1415
}
1516

gradle/wrapper/gradle-wrapper.jar

2.05 KB
Binary file not shown.
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
44
networkTimeout=10000
5+
validateDistributionUrl=true
56
zipStoreBase=GRADLE_USER_HOME
67
zipStorePath=wrapper/dists

gradlew

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,8 @@ done
8383
# This is normally unused
8484
# shellcheck disable=SC2034
8585
APP_BASE_NAME=${0##*/}
86-
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
87-
88-
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
89-
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
86+
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
87+
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
9088

9189
# Use the maximum available, or set MAX_FD != -1 to use that value.
9290
MAX_FD=maximum
@@ -133,26 +131,29 @@ location of your Java installation."
133131
fi
134132
else
135133
JAVACMD=java
136-
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
134+
if ! command -v java >/dev/null 2>&1
135+
then
136+
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
137137
138138
Please set the JAVA_HOME variable in your environment to match the
139139
location of your Java installation."
140+
fi
140141
fi
141142

142143
# Increase the maximum file descriptors if we can.
143144
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
144145
case $MAX_FD in #(
145146
max*)
146147
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
147-
# shellcheck disable=SC3045
148+
# shellcheck disable=SC2039,SC3045
148149
MAX_FD=$( ulimit -H -n ) ||
149150
warn "Could not query maximum file descriptor limit"
150151
esac
151152
case $MAX_FD in #(
152153
'' | soft) :;; #(
153154
*)
154155
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
155-
# shellcheck disable=SC3045
156+
# shellcheck disable=SC2039,SC3045
156157
ulimit -n "$MAX_FD" ||
157158
warn "Could not set maximum file descriptor limit to $MAX_FD"
158159
esac
@@ -197,11 +198,15 @@ if "$cygwin" || "$msys" ; then
197198
done
198199
fi
199200

200-
# Collect all arguments for the java command;
201-
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
202-
# shell script including quotes and variable substitutions, so put them in
203-
# double quotes to make sure that they get re-expanded; and
204-
# * put everything else in single quotes, so that it's not re-expanded.
201+
202+
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
203+
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
204+
205+
# Collect all arguments for the java command:
206+
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
207+
# and any embedded shellness will be escaped.
208+
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
209+
# treated as '${Hostname}' itself on the command line.
205210

206211
set -- \
207212
"-Dorg.gradle.appname=$APP_BASE_NAME" \

grpc-client-spring-boot-autoconfigure/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ dependencies {
1515

1616
api project(':grpc-common-spring-boot')
1717
api 'org.springframework.boot:spring-boot-starter'
18+
api 'jakarta.validation:jakarta.validation-api'
1819
optionalSupportImplementation 'org.springframework.boot:spring-boot-starter-actuator'
19-
optionalSupportImplementation 'org.springframework.cloud:spring-cloud-starter-sleuth'
2020
optionalSupportImplementation 'org.springframework.cloud:spring-cloud-starter-consul-discovery'
2121
optionalSupportImplementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
2222
optionalSupportImplementation 'io.zipkin.brave:brave-instrumentation-grpc'

grpc-client-spring-boot-autoconfigure/src/main/java/net/devh/boot/grpc/client/autoconfigure/GrpcClientTraceAutoConfiguration.java

Lines changed: 0 additions & 55 deletions
This file was deleted.

grpc-client-spring-boot-autoconfigure/src/main/java/net/devh/boot/grpc/client/channelfactory/AbstractChannelFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import java.util.concurrent.CountDownLatch;
3232
import java.util.concurrent.TimeUnit;
3333

34-
import javax.annotation.PreDestroy;
3534
import javax.annotation.concurrent.GuardedBy;
3635

3736
import org.springframework.util.unit.DataSize;
@@ -44,6 +43,7 @@
4443
import io.grpc.ConnectivityState;
4544
import io.grpc.ManagedChannel;
4645
import io.grpc.ManagedChannelBuilder;
46+
import jakarta.annotation.PreDestroy;
4747
import lombok.extern.slf4j.Slf4j;
4848
import net.devh.boot.grpc.client.config.GrpcChannelProperties;
4949
import net.devh.boot.grpc.client.config.GrpcChannelProperties.Security;

0 commit comments

Comments
 (0)