Reputation: 3086
Does anyone know how to compile *.proto files for grpc application in maven?
This is how I'm compiling protobuf in maven - (old way, using installed protoc compiler, excerpt from pom.xml):
<build>
<plugins>
<!-- protocol buffers runner, requires protoc -->
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>generate-protobuf-sources</id>
<phase>generate-sources</phase>
<configuration>
<tasks>
<mkdir dir="target/generated-sources/java" />
<exec executable="protoc">
<arg value="--java_out=target/generated-sources/java" />
<arg value="src/main/protobuf/hello.proto" />
</exec>
</tasks>
<sourceRoot>target/generated-sources/java</sourceRoot>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
I wonder if something similar is possible for grpc. From what I understand I need to somehow connect protoc-gen-grpc-java plugin with protobuf, but I'm not sure how to do that.
UPDATE: For those who interested I created a fully working example of client-server app using maven on github.
Upvotes: 10
Views: 23066
Reputation: 2835
protoc-jar-maven-plugin does not require installing the protoc compiler, unlike protobuf-maven-plugin.
Add this to your plugins:
<plugin>
<groupId>com.github.os72</groupId>
<artifactId>protoc-jar-maven-plugin</artifactId>
<version>3.11.4</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
and it uses the cross platform protoc-jar to generate your protobuf.
Upvotes: 2
Reputation: 26464
I'd highly recommend using protobuf-maven-plugin
as described in the grpc-java README.
If you really want to do it manually, you can download protoc-gen-grpc-java from Maven Central and add another <arg> for the exec of protoc:
--plugin=protoc-gen-grpc-java=path/to/protoc-gen-grpc-java
Upvotes: 13