Protocol Buffers codegen plugin - based on protoc-jar executable JAR
Typically used in following lifecycle phases:
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.11.4</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 .proto files from direct maven dependencies, include additional imports
<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> <configuration> <addProtoSources>all</addProtoSources> <includeMavenTypes>direct</includeMavenTypes> <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.11.4</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 - javalite, multiple output targets:
<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> <configuration> <inputDirectories> <include>src/main/resources</include> </inputDirectories> <outputTargets> <outputTarget> <type>java</type> <outputOptions>lite</outputOptions> </outputTarget> <outputTarget> <type>python</type> <outputOptions>lite</outputOptions> </outputTarget> </outputTargets> </configuration> </execution> </executions> </plugin>
Sample usage - compile in main cycle into src/main/java, don't alter project
<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> <configuration> <protocVersion>2.4.1</protocVersion> <addSources>none</addSources> <outputDirectory>src/main/java</outputDirectory> <inputDirectories> <include>src/main/protobuf</include> </inputDirectories> </configuration> </execution> </executions> </plugin>
Sample usage - compile in test cycle into src/test/java, don't alter project
<plugin> <groupId>com.github.os72</groupId> <artifactId>protoc-jar-maven-plugin</artifactId> <version>3.11.4</version> <executions> <execution> <phase>generate-test-sources</phase> <goals> <goal>run</goal> </goals> <configuration> <protocVersion>2.4.1</protocVersion> <addSources>none</addSources> <outputDirectory>src/test/java</outputDirectory> <inputDirectories> <include>src/test/protobuf</include> </inputDirectories> </configuration> </execution> </executions> </plugin>
Sample usage - generate python, don't alter project
<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> <configuration> <protocVersion>2.4.1</protocVersion> <type>python</type> <addSources>none</addSources> <outputDirectory>src/main/python</outputDirectory> <inputDirectories> <include>src/main/protobuf</include> </inputDirectories> </configuration> </execution> </executions> </plugin>
Sample usage - compile in test cycle, multiple output targets
<plugin> <groupId>com.github.os72</groupId> <artifactId>protoc-jar-maven-plugin</artifactId> <version>3.11.4</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.11.4</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>