diff --git a/.github/workflows/ci-pr.yml b/.github/workflows/ci-pr.yml
index 00cf1927..44977113 100644
--- a/.github/workflows/ci-pr.yml
+++ b/.github/workflows/ci-pr.yml
@@ -17,6 +17,8 @@ jobs:
include:
- javaVersion: 25
distribution: 'liberica'
+ - javaVersion: 17
+ distribution: 'temurin'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e75b9fe4..4c5f2df5 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,5 +1,12 @@
# Contribution Guidelines
+## Building from Source
+
+Java 25 is the preferred version to build with as we leverage [JSpecify](https://jspecify.dev/docs/start-here/) to validate nullability constraints in the source code.
+
+However, if you can not use Java 25 for some reason, you can still build locally with Java 17.
+In this scenario the nullability constraints will not be validated locally but rather via the continuous integration pull request workflow.
+
## Code Formatting and Javadoc
Before submitting a PR, please run the following commands to ensure proper formatting and Javadoc processing
diff --git a/README.md b/README.md
index 25f974f1..52be36a5 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,9 @@ For further information go to our [Spring gRPC reference documentation](https://
# Getting Started
+**π NOTE**\
+Spring gRPC `1.0.x` supports Spring Boot `4.0.x.`
+
This section offers jumping off points for how to get started using Spring gRPC. There is a simple sample project in the `samples` directory (e.g. [`grpc-server`](https://github.com/spring-projects/spring-grpc/tree/main/samples/grpc-server)). You can run it with `mvn spring-boot:run` or `gradle bootRun`. You will see the following code in that sample.
Want to get started? Letβs speedrun a working service.
@@ -146,9 +149,6 @@ More details on what is going on in the next section.
You should follow the steps in each of the following section according to your needs.
-**π NOTE**\
-Spring gRPC supports Spring Boot 3.4.x and 3.5.x
-
### Add Milestone and Snapshot Repositories
If you prefer to add the dependency snippets by hand, follow the directions in the following sections.
diff --git a/pom.xml b/pom.xml
index e5189600..c33c5413 100644
--- a/pom.xml
+++ b/pom.xml
@@ -190,47 +190,6 @@
maven-site-plugin${maven-site-plugin.version}
-
- org.apache.maven.plugins
- maven-compiler-plugin
- ${maven-compiler-plugin.version}
-
- ${java.version}
- true
-
- -parameters
- -Xdoclint:none
- -Werror
- -XDcompilePolicy=simple
- --should-stop=ifError=FLOW
-
- -Xplugin:ErrorProne
-
- -XepDisableAllChecks
-
- -XepOpt:NullAway:JSpecifyMode=true
-
- -Xep:NullAway:ERROR
- -XepOpt:NullAway:OnlyNullMarked
- -XepOpt:NullAway:TreatGeneratedAsUnannotated=true
-
- -XepExcludedPaths:.*/src/test/java/.*
-
-
-
-
- com.google.errorprone
- error_prone_core
- ${error-prone.version}
-
-
- com.uber.nullaway
- nullaway
- ${nullaway.version}
-
-
-
- org.apache.maven.pluginsmaven-surefire-plugin
@@ -464,6 +423,81 @@
+
+ java17
+
+ [17,)
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven-compiler-plugin.version}
+
+ ${java.version}
+ ${java.version}
+ -parameters
+
+
+
+
+
+
+ jspecify
+
+ [25,)
+
+ jspecify.enabled
+ !false
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven-compiler-plugin.version}
+
+ ${java.version}
+ true
+
+ -parameters
+ -Xdoclint:none
+ -Werror
+ -XDcompilePolicy=simple
+ --should-stop=ifError=FLOW
+
+ -Xplugin:ErrorProne
+
+ -XepDisableAllChecks
+
+ -XepOpt:NullAway:JSpecifyMode=true
+
+ -Xep:NullAway:ERROR
+ -XepOpt:NullAway:OnlyNullMarked
+ -XepOpt:NullAway:TreatGeneratedAsUnannotated=true
+
+ -XepExcludedPaths:.*/src/test/java/.*
+
+
+
+
+ com.google.errorprone
+ error_prone_core
+ ${error-prone.version}
+
+
+ com.uber.nullaway
+ nullaway
+ ${nullaway.version}
+
+
+
+
+
+
+ staging
diff --git a/spring-grpc-docs/src/main/antora/modules/ROOT/nav.adoc b/spring-grpc-docs/src/main/antora/modules/ROOT/nav.adoc
index d99339e4..5b299cb2 100644
--- a/spring-grpc-docs/src/main/antora/modules/ROOT/nav.adoc
+++ b/spring-grpc-docs/src/main/antora/modules/ROOT/nav.adoc
@@ -1,5 +1,6 @@
* xref:index.adoc[Overview]
* xref:whats-new.adoc[What's new?]
+* xref:system-requirements.adoc[System Requirements]
* xref:getting-started.adoc[Getting Started]
* xref:server.adoc[GRPC Server]
* xref:client.adoc[GRPC Clients]
diff --git a/spring-grpc-docs/src/main/antora/modules/ROOT/pages/attributes/attributes-variables.adoc b/spring-grpc-docs/src/main/antora/modules/ROOT/pages/attributes/attributes-variables.adoc
new file mode 100644
index 00000000..54547b02
--- /dev/null
+++ b/spring-grpc-docs/src/main/antora/modules/ROOT/pages/attributes/attributes-variables.adoc
@@ -0,0 +1,5 @@
+:spring-grpc-version: 1.0.x
+:spring-framework-version: 7.0.1
+:spring-boot-version: 4.0.x
+:spring-framework-docs: https://spring.io/projects/spring-framework#learn
+:spring-boot-docs: https://spring.io/projects/spring-boot#learn
diff --git a/spring-grpc-docs/src/main/antora/modules/ROOT/pages/contribution-guidelines.adoc b/spring-grpc-docs/src/main/antora/modules/ROOT/pages/contribution-guidelines.adoc
index 29f8673b..74fbb632 100644
--- a/spring-grpc-docs/src/main/antora/modules/ROOT/pages/contribution-guidelines.adoc
+++ b/spring-grpc-docs/src/main/antora/modules/ROOT/pages/contribution-guidelines.adoc
@@ -1,6 +1,13 @@
[[contribution-guidelines]]
= Contribution Guidelines
+== Building from Source
+
+Java 25 is the preferred version to build with as we leverage https://jspecify.dev/docs/start-here/[JSpecify] to validate nullability constraints in the source code.
+
+However, if you can not use Java 25 for some reason, you can still build locally with Java 17.
+In this scenario the nullability constraints will not be validated locally but rather via the continuous integration pull request workflow.
+
== Code Formatting and Javadoc
Before submitting a PR, please run the following commands to ensure proper formatting and Javadoc processing
diff --git a/spring-grpc-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc b/spring-grpc-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc
index 27203385..383029ab 100644
--- a/spring-grpc-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc
+++ b/spring-grpc-docs/src/main/antora/modules/ROOT/pages/getting-started.adoc
@@ -1,6 +1,10 @@
[[getting-started]]
= Getting Started
+include::./attributes/attributes-variables.adoc[]
+
+NOTE: Spring gRPC `{spring-grpc-version}` supports Spring Boot `{spring-boot-version}`
+
This section offers jumping off points for how to get started using Spring gRPC. There is a simple sample project in the `samples` directory (e.g. https://github.com/spring-projects/spring-grpc/tree/main/samples/grpc-server[`grpc-server`]). You can run it with `mvn spring-boot:run` or `gradle bootRun`. You will see the following code in that sample.
Want to get started? Let's speedrun a working service.
@@ -146,8 +150,6 @@ More details on what is going on in the next section.
You should follow the steps in each of the following section according to your needs.
-NOTE: Spring gRPC supports Spring Boot 3.4.x and 3.5.x
-
[[repositories]]
=== Add Milestone and Snapshot Repositories
diff --git a/spring-grpc-docs/src/main/antora/modules/ROOT/pages/system-requirements.adoc b/spring-grpc-docs/src/main/antora/modules/ROOT/pages/system-requirements.adoc
new file mode 100644
index 00000000..3daa4c56
--- /dev/null
+++ b/spring-grpc-docs/src/main/antora/modules/ROOT/pages/system-requirements.adoc
@@ -0,0 +1,11 @@
+[[system-requirements]]
+= System Requirements
+
+include::./attributes/attributes-variables.adoc[]
+
+Spring gRPC `{spring-grpc-version}` requires the following:
+
+- https://www.java.com[Java 17] and is compatible up to and including Java 25
+- {spring-framework-docs}[Spring Framework `{spring-framework-version}`] or above
+
+We recommend a Spring Boot first approach and Spring gRPC `{spring-grpc-version}` supports {spring-boot-docs}[Spring Boot] `{spring-boot-version}.`