Attempt to fix plugin mess

This commit is contained in:
Dave Syer
2025-05-28 12:52:19 +01:00
parent d1b8a84637
commit c2a43c2f87
12 changed files with 225 additions and 156 deletions

View File

@@ -9,7 +9,7 @@ For further information go to our [Spring gRPC reference documentation](https://
# Getting Started
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 `./mvnw spring-boot:run` or `./gradlew bootRun`. You will see the following code in that sample.
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? Lets speedrun a working service.
@@ -19,15 +19,13 @@ Generate the project and unzip the downloaded result.
Open it in your IDE in the usual way. E.g. if youre using IntelliJ IDEA: `idea pom.xml`; or for VSCode `code .`.
Define a `.proto` service definition file `src/main/proto/hello.proto` with the following contents:
IMPORTANT: Be sure to change the `java_package` to the one you chose in Spring Initializr
Define a `.proto` service definition file `src/main/protobuf/hello.proto` with the following contents:
```proto
syntax = "proto3";
option java_multiple_files = true;
option java_package = "<your-package-name-goes-here>.proto";
option java_package = "org.springframework.grpc.sample.proto";
option java_outer_classname = "HelloWorldProto";
// The greeting service definition.
@@ -60,15 +58,7 @@ or
./gradlew build
```
Two new folders will be generated containing the source code for the stubs.
_For Maven_: `target/generated-sources/protobuf/grpc-java` and `target/generated-sources/protobuf/java`.
_For Gradle_: `build/generated/source/proto/main/grpc` and `build/generated/source/proto/main/java`)
You may need to instruct your IDE to mark them as source roots.
In IntelliJ IDEA, right-click the folder, choose `Mark Directory As` -> `Generated Source Root`.
Eclipse or VSCode will add them automatically for you.
Youll get two new folders in the `target` directory (or `build` for Gradle): `target/target/generated-sources/protobuf/grpc-java` and `target/target/generated-sources/protobuf/java`. You may need to instruct your IDE to mark them as source roots. In IntelliJ IDEA, youd right click the folder, choose `Mark Directory As` -> `Generated Source Root`. Eclipse or VSCode will add them automatically for you.
Now you can implement a service based on the generated stubs:
@@ -122,7 +112,7 @@ Run the program in the usual way:
or
```shell
./gradlew bootRun
./gradle bootRun
```
You can try it out using a gRPC client like `grpcurl`:
@@ -254,7 +244,7 @@ public class GrpcServerApplication {
}
```
Run it from your IDE, or on the command line with `./mvnw spring-boot:run` or `./gradlew bootRun`.
Run it from your IDE, or on the command line with `mvn spring-boot:run` or `gradle bootRun`.
### gRPC Client

View File

@@ -1,59 +1,67 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.5.0'
id 'io.spring.dependency-management' version '1.1.6'
id 'com.google.protobuf' version '0.9.4'
id 'java'
id 'org.springframework.boot' version '3.5.0'
id 'io.spring.dependency-management' version '1.1.6'
id 'com.google.protobuf' version '0.9.4'
}
group = 'com.example'
version = '0.9.0-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
repositories {
mavenLocal()
mavenCentral()
maven { url 'https://repo.spring.io/milestone' }
maven { url 'https://repo.spring.io/snapshot' }
mavenLocal()
mavenCentral()
maven { url 'https://repo.spring.io/milestone' }
maven { url 'https://repo.spring.io/snapshot' }
}
dependencyManagement {
imports {
mavenBom 'org.springframework.grpc:spring-grpc-dependencies:0.9.0-SNAPSHOT'
}
imports {
mavenBom 'org.springframework.grpc:spring-grpc-dependencies:0.9.0-SNAPSHOT'
}
}
dependencies {
implementation 'org.springframework.grpc:spring-grpc-client-spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.grpc:spring-grpc-test'
testImplementation 'org.springframework.experimental.boot:spring-boot-testjars-maven:0.0.3'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'org.springframework.grpc:spring-grpc-client-spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.grpc:spring-grpc-test'
testImplementation 'org.springframework.experimental.boot:spring-boot-testjars-maven:0.0.3'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
useJUnitPlatform()
}
sourceSets {
main {
proto {
srcDir 'src/main/protobuf'
}
}
}
protobuf {
protoc {
artifact = "com.google.protobuf:protoc:${dependencyManagement.importedProperties['protobuf-java.version']}"
}
plugins {
grpc {
artifact = "io.grpc:protoc-gen-grpc-java:${dependencyManagement.importedProperties['grpc.version']}"
}
}
generateProtoTasks {
all()*.plugins {
grpc {
option 'jakarta_omit'
option '@generated=omit'
}
}
}
protoc {
artifact = "com.google.protobuf:protoc:${dependencyManagement.importedProperties['protobuf-java.version']}"
}
plugins {
grpc {
artifact = "io.grpc:protoc-gen-grpc-java:${dependencyManagement.importedProperties['grpc.version']}"
}
}
generateProtoTasks {
all()*.plugins {
grpc {
option 'jakarta_omit'
option '@generated=omit'
}
}
}
}

View File

@@ -1,69 +1,77 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.5.0'
id 'io.spring.dependency-management' version '1.1.6'
id 'org.graalvm.buildtools.native' version '0.10.3'
id 'com.google.protobuf' version '0.9.4'
id 'java'
id 'org.springframework.boot' version '3.5.0'
id 'io.spring.dependency-management' version '1.1.6'
id 'org.graalvm.buildtools.native' version '0.10.3'
id 'com.google.protobuf' version '0.9.4'
}
group = 'com.example'
version = '0.9.0-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
processTestAot {
enabled = false
enabled = false
}
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/milestone' }
maven { url 'https://repo.spring.io/snapshot' }
mavenCentral()
maven { url 'https://repo.spring.io/milestone' }
maven { url 'https://repo.spring.io/snapshot' }
}
dependencyManagement {
imports {
mavenBom 'org.springframework.grpc:spring-grpc-dependencies:0.9.0-SNAPSHOT'
}
imports {
mavenBom 'org.springframework.grpc:spring-grpc-dependencies:0.9.0-SNAPSHOT'
}
}
dependencies {
implementation 'org.springframework.grpc:spring-grpc-spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'io.grpc:grpc-services'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.grpc:spring-grpc-test'
testImplementation 'org.springframework.experimental.boot:spring-boot-testjars-maven:0.0.4'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'org.springframework.grpc:spring-grpc-spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'io.grpc:grpc-services'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.grpc:spring-grpc-test'
testImplementation 'org.springframework.experimental.boot:spring-boot-testjars-maven:0.0.4'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
test {
useJUnitPlatform()
testLogging.showStandardStreams = true
outputs.upToDateWhen { false }
useJUnitPlatform()
testLogging.showStandardStreams = true
outputs.upToDateWhen { false }
}
sourceSets {
main {
proto {
srcDir 'src/main/protobuf'
}
}
}
protobuf {
protoc {
artifact = "com.google.protobuf:protoc:${dependencyManagement.importedProperties['protobuf-java.version']}"
}
plugins {
grpc {
artifact = "io.grpc:protoc-gen-grpc-java:${dependencyManagement.importedProperties['grpc.version']}"
}
}
generateProtoTasks {
all()*.plugins {
grpc {
option 'jakarta_omit'
option '@generated=omit'
}
}
}
protoc {
artifact = "com.google.protobuf:protoc:${dependencyManagement.importedProperties['protobuf-java.version']}"
}
plugins {
grpc {
artifact = "io.grpc:protoc-gen-grpc-java:${dependencyManagement.importedProperties['grpc.version']}"
}
}
generateProtoTasks {
all()*.plugins {
grpc {
option 'jakarta_omit'
option '@generated=omit'
}
}
}
}

View File

@@ -29,7 +29,7 @@ dependencyManagement {
dependencies {
implementation 'org.springframework.grpc:spring-grpc-spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.grpc:grpc-services'
compileOnly 'javax.annotation:javax.annotation-api:1.3.2'
implementation 'io.projectreactor:reactor-core'
@@ -42,9 +42,17 @@ dependencies {
}
test {
useJUnitPlatform()
testLogging.showStandardStreams = true
outputs.upToDateWhen { false }
useJUnitPlatform()
testLogging.showStandardStreams = true
outputs.upToDateWhen { false }
}
sourceSets {
main {
proto {
srcDir 'src/main/protobuf'
}
}
}
protobuf {

View File

@@ -1,62 +1,70 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.5.0'
id 'io.spring.dependency-management' version '1.1.6'
id 'org.graalvm.buildtools.native' version '0.10.3'
id 'com.google.protobuf' version '0.9.4'
id 'java'
id 'org.springframework.boot' version '3.5.0'
id 'io.spring.dependency-management' version '1.1.6'
id 'org.graalvm.buildtools.native' version '0.10.3'
id 'com.google.protobuf' version '0.9.4'
}
group = 'com.example'
version = '0.9.0-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/milestone' }
maven { url 'https://repo.spring.io/snapshot' }
mavenCentral()
maven { url 'https://repo.spring.io/milestone' }
maven { url 'https://repo.spring.io/snapshot' }
}
dependencyManagement {
imports {
mavenBom 'org.springframework.grpc:spring-grpc-dependencies:0.9.0-SNAPSHOT'
}
imports {
mavenBom 'org.springframework.grpc:spring-grpc-dependencies:0.9.0-SNAPSHOT'
}
}
dependencies {
implementation 'org.springframework.grpc:spring-grpc-spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'io.grpc:grpc-services'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.grpc:spring-grpc-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'org.springframework.grpc:spring-grpc-spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'io.grpc:grpc-services'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.grpc:spring-grpc-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
test {
useJUnitPlatform()
testLogging.showStandardStreams = true
outputs.upToDateWhen { false }
useJUnitPlatform()
testLogging.showStandardStreams = true
outputs.upToDateWhen { false }
}
sourceSets {
main {
proto {
srcDir 'src/main/protobuf'
}
}
}
protobuf {
protoc {
artifact = "com.google.protobuf:protoc:${dependencyManagement.importedProperties['protobuf-java.version']}"
}
plugins {
grpc {
artifact = "io.grpc:protoc-gen-grpc-java:${dependencyManagement.importedProperties['grpc.version']}"
}
}
generateProtoTasks {
all()*.plugins {
grpc {
option 'jakarta_omit'
option '@generated=omit'
}
}
}
protoc {
artifact = "com.google.protobuf:protoc:${dependencyManagement.importedProperties['protobuf-java.version']}"
}
plugins {
grpc {
artifact = "io.grpc:protoc-gen-grpc-java:${dependencyManagement.importedProperties['grpc.version']}"
}
}
generateProtoTasks {
all()*.plugins {
grpc {
option 'jakarta_omit'
option '@generated=omit'
}
}
}
}

View File

@@ -53,6 +53,13 @@ test {
outputs.upToDateWhen { false }
}
sourceSets {
main {
proto {
srcDir 'src/main/protobuf'
}
}
}
protobuf {
protoc {

View File

@@ -42,9 +42,17 @@ dependencies {
}
test {
useJUnitPlatform()
testLogging.showStandardStreams = true
outputs.upToDateWhen { false }
useJUnitPlatform()
testLogging.showStandardStreams = true
outputs.upToDateWhen { false }
}
sourceSets {
main {
proto {
srcDir 'src/main/protobuf'
}
}
}
protobuf {

View File

@@ -29,7 +29,7 @@ dependencyManagement {
dependencies {
implementation 'org.springframework.grpc:spring-grpc-spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.grpc:grpc-services'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.grpc:spring-grpc-test'
@@ -38,9 +38,17 @@ dependencies {
}
test {
useJUnitPlatform()
testLogging.showStandardStreams = true
outputs.upToDateWhen { false }
useJUnitPlatform()
testLogging.showStandardStreams = true
outputs.upToDateWhen { false }
}
sourceSets {
main {
proto {
srcDir 'src/main/protobuf'
}
}
}
protobuf {

View File

@@ -31,16 +31,24 @@ dependencies {
implementation 'org.springframework.grpc:spring-grpc-server-web-spring-boot-starter'
implementation 'io.grpc:grpc-services'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-security'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.grpc:spring-grpc-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
test {
useJUnitPlatform()
testLogging.showStandardStreams = true
outputs.upToDateWhen { false }
useJUnitPlatform()
testLogging.showStandardStreams = true
outputs.upToDateWhen { false }
}
sourceSets {
main {
proto {
srcDir 'src/main/protobuf'
}
}
}
protobuf {

View File

@@ -38,9 +38,17 @@ dependencies {
}
test {
useJUnitPlatform()
testLogging.showStandardStreams = true
outputs.upToDateWhen { false }
useJUnitPlatform()
testLogging.showStandardStreams = true
outputs.upToDateWhen { false }
}
sourceSets {
main {
proto {
srcDir 'src/main/protobuf'
}
}
}
protobuf {

View File

@@ -37,9 +37,17 @@ dependencies {
}
test {
useJUnitPlatform()
testLogging.showStandardStreams = true
outputs.upToDateWhen { false }
useJUnitPlatform()
testLogging.showStandardStreams = true
outputs.upToDateWhen { false }
}
sourceSets {
main {
proto {
srcDir 'src/main/protobuf'
}
}
}
protobuf {

View File

@@ -11,7 +11,7 @@ Generate the project and unzip the downloaded result.
Open it in your IDE in the usual way. E.g. if you're using IntelliJ IDEA: `idea pom.xml`; or for VSCode `code .`.
Define a `.proto` service definition file `src/main/proto/hello.proto` with the following contents:
Define a `.proto` service definition file `src/main/protobuf/hello.proto` with the following contents:
[source,proto]
----