quickbuf-runtime
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>us.hebi.quickbuf</groupId>
<artifactId>quickbuf-runtime</artifactId>
<version>1.4</version>
</dependency><?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>
<parent>
<artifactId>quickbuf-parent</artifactId>
<groupId>us.hebi.quickbuf</groupId>
<version>1.4</version>
</parent>
<artifactId>quickbuf-runtime</artifactId>
<properties>
<javaModuleName>us.hebi.quickbuf.runtime</javaModuleName>
<maven.compiler.source>6</maven.compiler.source>
<maven.compiler.target>6</maven.compiler.target>
<apiDirectory>us/hebi/quickbuf</apiDirectory>
<copyFromDir>${basedir}/src/main/java/${apiDirectory}</copyFromDir>
<generatedSourcesDir>${basedir}/target/generated-sources/annotations/</generatedSourcesDir>
<copyToDir>${generatedSourcesDir}/${apiDirectory}</copyToDir>
</properties>
<dependencies>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java-util</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- create a test jar that we can reuse for tests in other modules -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Don't compile sources that we replace with a pre-compiled class file -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<excludes>
<exclude>**/us/hebi/quickbuf/JdkMethods.java</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.1.0</version>
<executions>
<!-- Replace Java9+ sources with pre-compiled class files -->
<execution>
<id>add-java9-classes</id>
<phase>generate-resources</phase> <!-- after 'compile' -->
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<copy file="src/java9/JdkMethods.class" tofile="${project.build.outputDirectory}/us/hebi/quickbuf/JdkMethods.class" overwrite="true" />
</target>
</configuration>
</execution>
<!-- Copy RepeatedFloat implementation to other types. Use float because it's unlikely to collide -->
<execution>
<id>generate-repeated-primitives</id>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<mkdir dir="${copyToDir}"/>
<copy file="${copyFromDir}/RepeatedFloat.java" tofile="${copyToDir}/RepeatedDouble.java" />
<replace file="${copyToDir}/RepeatedDouble.java" token="Float" value="Double"/>
<replace file="${copyToDir}/RepeatedDouble.java" token="float" value="double"/>
<copy file="${copyFromDir}/RepeatedFloat.java" tofile="${copyToDir}/RepeatedLong.java" />
<replace file="${copyToDir}/RepeatedLong.java" token="Float" value="Long"/>
<replace file="${copyToDir}/RepeatedLong.java" token="float" value="long"/>
<copy file="${copyFromDir}/RepeatedFloat.java" tofile="${copyToDir}/RepeatedInt.java" />
<replace file="${copyToDir}/RepeatedInt.java" token="RepeatedFloat" value="RepeatedInt"/>
<replace file="${copyToDir}/RepeatedInt.java" token="Float" value="Integer"/>
<replace file="${copyToDir}/RepeatedInt.java" token="float" value="int"/>
<copy file="${copyFromDir}/RepeatedFloat.java" tofile="${copyToDir}/RepeatedBoolean.java" />
<replace file="${copyToDir}/RepeatedBoolean.java" token="Float" value="Boolean"/>
<replace file="${copyToDir}/RepeatedBoolean.java" token="float" value="boolean"/>
<!-- the 'bytes' type is really the same as a repeated byte in disguise -->
<copy file="${copyFromDir}/RepeatedFloat.java" tofile="${copyToDir}/RepeatedByte.java" overwrite="true"/>
<replace file="${copyToDir}/RepeatedByte.java" token="Float" value="Byte"/>
<replace file="${copyToDir}/RepeatedByte.java" token="float" value="byte"/>
<!-- Add a few extra methods for simplifying JSON writes -->
<replace file="${copyToDir}/RepeatedByte.java" token="} // RepeatedByte" value=""/>
<concat destfile="${copyToDir}/RepeatedByte.java" append="true">
<fileset file="src/test/resources/concat/RepeatedByte.txt" />
</concat>
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.4.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${generatedSourcesDir}</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<!-- Generate test sources via protobuf-plugin -->
<plugin>
<groupId>com.github.os72</groupId>
<artifactId>protoc-jar-maven-plugin</artifactId>
<version>${protoc.jar.version}</version>
<configuration>
<!-- don't cache because it breaks multi-executions -->
<optimizeCodegen>false</optimizeCodegen>
</configuration>
<executions>
<execution>
<id>generate-eager-protos</id>
<phase>generate-test-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<protocVersion>${protobuf.version}</protocVersion>
<inputDirectories>
<include>${proto.dir}/</include>
</inputDirectories>
<outputTargets>
<!-- Generate sources (override package so we don't have name collisions with gen-java) -->
<outputTarget>
<!-- Linux finds absolute file, Windows finds it via executing PATH -->
<pluginPath>${protoc.quickbufPlugin}</pluginPath>
<type>quickbuf</type>
<outputOptions>
replace_package=(protobuf)=quickbuf,indent=4,store_unknown_fields=true,enforce_has_checks=false,input_order=quickbuf,allocation=eager,gen_descriptors=true
</outputOptions>
<addSources>test</addSources>
</outputTarget>
<!-- Generate Java sources for sanity checks -->
<outputTarget>
<type>java</type>
<addSources>test</addSources>
</outputTarget>
</outputTargets>
</configuration>
</execution>
<execution>
<id>generate-lazy-protos</id>
<phase>generate-test-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<protocVersion>${protobuf.version}</protocVersion>
<inputDirectories>
<include>${proto.dir}/../lazy/</include>
</inputDirectories>
<outputTargets>
<!-- Generate sources with lazy option -->
<outputTarget>
<pluginPath>${protoc.quickbufPlugin}</pluginPath>
<type>quickbuf</type>
<outputOptions>
replace_package=(protobuf)=quickbuf,indent=4,store_unknown_fields=true,enforce_has_checks=true,allocation=lazy,extensions=embedded,gen_descriptors=true
</outputOptions>
<addSources>test</addSources>
</outputTarget>
</outputTargets>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<!-- Increases the language level for recent jdks to allow compiling. Release with jdk 8 -->
<profile>
<id>jdk17compat</id>
<activation>
<jdk>(11,)</jdk>
</activation>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</profile>
</profiles>
</project>