Protocol Buffers protobuf maven plugin - performs protobuf code generation using protoc-jar multi-platform executable protoc JAR. Available on Maven Central: http://central.maven.org/maven2/com/github/os72/protoc-jar-maven-plugin/3.5.1.1/
Simple maven plugin to compile .proto files using protoc-jar embedded protoc compiler, providing some portability across the major platforms (Linux, Mac/OSX, and Windows). At build time the plugin detects the platform and executes the corresponding protoc binary.
Supports protoc versions 2.4.1, 2.5.0, 2.6.1, 3.5.1. Also supports pre-installed protoc binary, and downloading binaries (protoc and protoc plugins) from maven repo
- New: Support for Linux on POWER8 platform (linux-ppcle_64), thanks to Apache SystemML folks (nakul02)
- New: Support for FreeBSD on x86 platform (freebsd-x86_64), thanks kjopek
- New: Support for Linux on ARM platform (linux-aarch_64; 2.4.1, 2.6.1, 3.4.0), thanks garciagorka
See also
- https://github.com/os72/protoc-jar
- https://github.com/os72/protobuf-java-shaded-241
- https://github.com/os72/protobuf-java-shaded-250
- https://github.com/os72/protobuf-java-shaded-261
- https://github.com/os72/protobuf-java-shaded-351
- https://github.com/google/protobuf
Binaries
- http://central.maven.org/maven2/com/google/protobuf/protoc/
- http://central.maven.org/maven2/com/github/os72/protoc/
- https://oss.sonatype.org/content/repositories/snapshots/com/github/os72/protoc/
Documentation: see http://os72.github.io/protoc-jar-maven-plugin/, in particular run-mojo
Sample usage - compile in main cycle into target/generated-sources
, add generated sources to project, use default protoc
version and default src/main/protobuf
source folder:
<plugin>
<groupId>com.github.os72</groupId>
<artifactId>protoc-jar-maven-plugin</artifactId>
<version>3.5.1.1</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Sample usage - compile in main cycle into target/generated-sources
, add generated sources to project, add all .proto sources to generated jar, include google.protobuf
standard types, include additional imports:
<plugin>
<groupId>com.github.os72</groupId>
<artifactId>protoc-jar-maven-plugin</artifactId>
<version>3.5.1.1</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<addProtoSources>all</addProtoSources>
<includeStdTypes>true</includeStdTypes>
<includeDirectories>
<include>src/main/more_proto_imports</include>
</includeDirectories>
<inputDirectories>
<include>src/main/protobuf</include>
</inputDirectories>
</configuration>
</execution>
</executions>
</plugin>
Sample usage - download protoc and plugin binaries from maven repo, multiple output targets (example: gRPC):
<plugin>
<groupId>com.github.os72</groupId>
<artifactId>protoc-jar-maven-plugin</artifactId>
<version>3.5.1.1</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<protocArtifact>com.google.protobuf:protoc:3.0.0</protocArtifact>
<inputDirectories>
<include>src/main/resources</include>
</inputDirectories>
<outputTargets>
<outputTarget>
<type>java</type>
</outputTarget>
<outputTarget>
<type>grpc-java</type>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.0.1</pluginArtifact>
</outputTarget>
</outputTargets>
</configuration>
</execution>
</executions>
</plugin>
Sample usage - compile in test cycle, multiple output targets, don't alter project (<addSources>: none
):
<plugin>
<groupId>com.github.os72</groupId>
<artifactId>protoc-jar-maven-plugin</artifactId>
<version>3.5.1.1</version>
<executions>
<execution>
<phase>generate-test-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<protocVersion>2.4.1</protocVersion>
<inputDirectories>
<include>src/test/resources</include>
</inputDirectories>
<outputTargets>
<outputTarget>
<type>java</type>
<addSources>none</addSources>
<outputDirectory>src/test/java</outputDirectory>
</outputTarget>
<outputTarget>
<type>descriptor</type>
<addSources>none</addSources>
<outputDirectory>src/test/resources</outputDirectory>
</outputTarget>
</outputTargets>
</configuration>
</execution>
</executions>
</plugin>
Sample usage - generate java shaded for use with protobuf-java-shaded-241
, don't alter project:
<plugin>
<groupId>com.github.os72</groupId>
<artifactId>protoc-jar-maven-plugin</artifactId>
<version>3.5.1.1</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<protocVersion>2.4.1</protocVersion>
<type>java-shaded</type>
<addSources>none</addSources>
<outputDirectory>src/main/java</outputDirectory>
<inputDirectories>
<include>src/main/protobuf</include>
</inputDirectories>
</configuration>
</execution>
</executions>
</plugin>
Originally based on