0

I was trying to build a grpc service using the following plugin. Seems like the plugin is not able to use protoc utility.

OS : MAC

Maven version : 3.6.3

Error :

[ERROR] PROTOC FAILED: google/protobuf/wrappers.proto: File not found. order-mgmt.proto: Import "google/protobuf/wrappers.proto" was not found or had errors. order-mgmt.proto:7:16: "google.protobuf.StringValue" is not defined. ... **[ERROR] Failed to execute goal org.xolstice.maven.plugins:protobuf-maven-plugin:0.6.1:compile (default) on project OrderManagement-gRPC: protoc did not exit cleanly. Review output for more information. -> [Help 1]** 

The plugin i am using is :

<plugin> <groupId>org.xolstice.maven.plugins</groupId> <artifactId>protobuf-maven-plugin</artifactId> <version>0.6.1</version> <configuration> <!--suppress UnresolvedMavenProperty --> <protocArtifact>com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier}</protocArtifact> <pluginId>grpc-java</pluginId> <pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>compile-custom</goal> </goals> </execution> </executions> 

3 Answers 3

5

You are missing the protobuf-java dependency.

<dependencies>     <dependency>       <groupId>com.google.protobuf</groupId>       <artifactId>protobuf-java</artifactId>       <version>3.5.1-1</version>     </dependency>     ...   </dependencies> 

Here is how I use the plugin.

<build>   <extensions>     <extension>       <groupId>kr.motd.maven</groupId>       <artifactId>os-maven-plugin</artifactId>       <version>1.5.0.Final</version>     </extension>   </extensions>   <plugins>     <plugin>       <groupId>org.xolstice.maven.plugins</groupId>       <artifactId>protobuf-maven-plugin</artifactId>       <version>0.5.1</version>       <extensions>true</extensions>       <configuration>         <protocArtifact>com.google.protobuf:protoc:3.5.1-1:exe:${os.detected.classifier}</protocArtifact>       </configuration>       <executions>         <execution>           <goals>             <goal>compile</goal>             <goal>test-compile</goal>           </goals>         </execution>       </executions>     </plugin>   </plugins> </build> 

Then use the mvn protobuf:compile to generate the stubs. The reference is from the plugin repo at https://github.com/xolstice/protobuf-maven-plugin

Sign up to request clarification or add additional context in comments.

1 Comment

Yes i wasnt giving the correct grpc version and that was not in sync with dependencies i added. Basically The versions of grpc and protobuf in dependency and plugins used should be in sync. So better to use in properties and avoid using it directly. Thanks !!! :)
1

Providing the pom :

To keep in mind the proto and grpc versions. They should be in sync. Better to declare them in properties tag, so that we dont commit any version mismatch.

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.practice</groupId> <artifactId>OrderManagement-gRPC</artifactId> <version>1.0-SNAPSHOT</version> <properties> <grpc.version>1.35.0</grpc.version> <protoc.version>3.4.0</protoc.version> <encoding>UTF-8</encoding> </properties> <dependencies> <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> <version>${protoc.version}</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty-shaded</artifactId> <version>${grpc.version}</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-protobuf</artifactId> <version>${grpc.version}</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-stub</artifactId> <version>${grpc.version}</version> </dependency> </dependencies> <build> <extensions> <extension> <groupId>kr.motd.maven</groupId> <artifactId>os-maven-plugin</artifactId> <version>1.6.2</version> </extension> </extensions> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.1</version> <executions> <execution> <phase>validate</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>Displaying 1 environment variables</echo> <echo>[Path] ${env.PATH}</echo> <echo>[os.detected.classifier] ${os.detected.classifier}</echo> </tasks> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.xolstice.maven.plugins</groupId> <artifactId>protobuf-maven-plugin</artifactId> <version>0.6.1</version> <configuration> <!--suppress UnresolvedMavenProperty --> <protocArtifact>com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier}</protocArtifact> <pluginId>grpc-java</pluginId> <pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>compile-custom</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> 

Comments

-1

I had this problem without "google/protobuf/wrappers.proto: File not found." It was because I ran this plugin on Windows machine without admin access

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.