grpc-java/compiler
Larry Safran 19eab29f8d
compiler: Generate interfaces for services to implement (#9688)
Introduce an AsyncService interface in the generated code and move the methods from <service>ImplBase to default implementation of the interface.
* update pom files to allow java 1.8
* Add a bindService(<service>Async) method
* Change TestServiceImpl to use the interface and include a bind method instead of extending TestServiceImplBase.
2023-02-15 10:33:44 -08:00
..
src compiler: Generate interfaces for services to implement (#9688) 2023-02-15 10:33:44 -08:00
BUILD.bazel bazel: Add compatibility for --incompatible_load_cc_rules_from_bzl 2019-10-16 13:29:19 -07:00
README.md Bump Protobuf to 3.17.2 2021-06-07 11:20:48 -07:00
build.gradle Bump to Gradle 7.6 and update plugins 2023-01-11 08:17:17 -08:00
check-artifact.sh buildscripts: Enhancement for LoongArch64 (#9778) 2023-01-04 09:11:23 -08:00

README.md

gRPC Java Codegen Plugin for Protobuf Compiler

This generates the Java interfaces out of the service definition from a .proto file. It works with the Protobuf Compiler (protoc).

Normally you don't need to compile the codegen by yourself, since pre-compiled binaries for common platforms are available on Maven Central:

  1. Navigate to https://mvnrepository.com/artifact/io.grpc/protoc-gen-grpc-java
  2. Click into a version
  3. Click "Files"

However, if the pre-compiled binaries are not compatible with your system, you may want to build your own codegen.

Compiling and testing the codegen

Set up your system as described in COMPILING.md.

Then change to the compiler directory:

$ cd $GRPC_JAVA_ROOT/compiler

To compile the plugin:

$ ../gradlew java_pluginExecutable

To test the plugin with the compiler:

$ ../gradlew test

You will see a PASS if the test succeeds.

To compile a proto file and generate Java interfaces out of the service definitions:

$ protoc --plugin=protoc-gen-grpc-java=build/exe/java_plugin/protoc-gen-grpc-java \
  --grpc-java_out="$OUTPUT_FILE" --proto_path="$DIR_OF_PROTO_FILE" "$PROTO_FILE"

To generate Java interfaces with protobuf lite:

$ protoc --plugin=protoc-gen-grpc-java=build/exe/java_plugin/protoc-gen-grpc-java \
  --grpc-java_out=lite:"$OUTPUT_FILE" --proto_path="$DIR_OF_PROTO_FILE" "$PROTO_FILE"

Installing the codegen to Maven local repository

This will compile a codegen and put it under your ~/.m2/repository. This will make it available to any build tool that pulls codegens from Maven repositories.

$ ../gradlew publishToMavenLocal

Creating a release of gRPC Java

Please follow the instructions in RELEASING.md under the root directory for details on how to create a new release.