After many years of issue 9179 being open, there's been nothing to show that we need the javax.annotations.Generated annotation. Most tools use file paths and a few check for annotations with "Generated" in the name. ErrorProne has a few that check for javax.annotations.Generated, but only UnnecessarilyFullyQualified looks like it'd be a problem and it is disabled by default. We're not getting any more information, no users have reported issues with `@generated=omit`, and the existing dependency is annoying users, so just drop it. Given we will still retain the GrpcGenerated annotation, it seems highly likely things are already okay. Even if there are problems they would probably be addressed by adding a io.grpc.stub.annotations.Generated annotation or small tweaks. In the short-term, (non-Bazel) users can use `@generated=javax`, but long-term we could consider removing the option assuming we've resolved any outstanding issues. We will want to update the examples and the README to remove the org.apache.tomcat:annotations-api dependency after the next release. Fixes #9179 |
||
|---|---|---|
| .. | ||
| src | ||
| BUILD.bazel | ||
| README.md | ||
| build.gradle | ||
| check-artifact.sh | ||
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:
- Navigate to https://mvnrepository.com/artifact/io.grpc/protoc-gen-grpc-java
- Click into a version
- 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.