Environment Setup I am using Gradle and Intellij Idea for this project (Maven setting can be found here). The Gradle setting is shown as following:
plugins { id "com.google.protobuf" version "0.8.18" id "java" } group 'today.ihelio.grpc.tutorial' version '1.0-SNAPSHOT' sourceCompatibility = 15 repositories { mavenCentral() } dependencies { implementation 'junit:junit:4.13.1' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' implementation group: 'com.google.protobuf', name: 'protobuf-java', version: '3.21.4' runtimeOnly group: 'com.google.protobuf', name: 'protobuf-java-util', version: '3.21.4' implementation group: 'io.grpc', name: 'grpc-all', version: '1.45.1' runtimeOnly group: 'io.grpc', name: 'grpc-services', version: '1.48.0' implementation group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2' } test { useJUnitPlatform() } sourceSets { main { java { srcDirs 'build/generated/source/proto/main/grpc' srcDirs 'build/generated/source/proto/main/java' srcDirs 'src/main/resources' } } } protobuf { protoc { artifact = 'com.google.protobuf:protoc:3.21.4' } plugins { grpc { artifact = 'io.grpc:protoc-gen-grpc-java:1.49.0' } } generateProtoTasks { all()*.plugins { grpc {} } } } jar { from { configurations.runtimeClasspath.findAll { duplicatesStrategy = DuplicatesStrategy.EXCLUDE it.name.endsWith(".jar") }.collect { println 'add ' + it.name zipTree(it) } } } targetCompatibility = JavaVersion.VERSION_15 After we have the proto files, then we could just build the project to complie proto files and generate essential stubs.
...