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.plugins maven-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}.`