quickbuf-parent
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency> <groupId>us.hebi.quickbuf</groupId> <artifactId>quickbuf-parent</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> <groupId>us.hebi.quickbuf</groupId> <artifactId>quickbuf-parent</artifactId> <packaging>pom</packaging> <version>1.4</version> <name>QuickBuffers</name> <url>https://github.com/HebiRobotics/QuickBuffers</url> <description> Java library for reading and writing Google's Protocol Buffers v2 messages </description> <organization> <name>HEBI Robotics</name> <url>http://www.hebirobotics.com</url> </organization> <inceptionYear>2019</inceptionYear> <!-- Required: license information: --> <licenses> <license> <name>The Apache Software License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> <distribution>repo</distribution> </license> </licenses> <!-- Required: source control information: --> <scm> <url>https://github.com/HebiRobotics/QuickBuffers</url> <connection>scm:git:git://github.com/HebiRobotics/QuickBuffers.git</connection> <developerConnection>scm:git:git@github.com:HebiRobotics/QuickBuffers.git</developerConnection> <tag>HEAD</tag> </scm> <!-- Maven Central Distribution --> <distributionManagement> <snapshotRepository> <id>ossrh</id> <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url> </snapshotRepository> <repository> <id>ossrh</id> <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url> </repository> </distributionManagement> <!-- Required: developer information: --> <developers> <developer> <id>ennerf</id> <name>Florian Enner</name> <email>florian@hebirobotics.com</email> <url>https://github.com/ennerf</url> <organization>HEBI Robotics</organization> <organizationUrl>https://github.com/HebiRobotics</organizationUrl> </developer> </developers> <modules> <module>protoc-gen-request</module> <module>protoc-gen-quickbuf</module> <module>quickbuf-runtime</module> <module>quickbuf-compat</module> <module>conformance</module> <module>benchmarks</module> </modules> <properties> <!-- Default Java configuration --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <maven.compiler.testSource>8</maven.compiler.testSource> <maven.compiler.testTarget>8</maven.compiler.testTarget> <!-- Common directories/plugins --> <proto.dir>${project.basedir}/../quickbuf-runtime/src/test/resources/protos</proto.dir> <protoc.pluginExt><!-- empty for macOS/linux --></protoc.pluginExt> <protoc.requestPlugin>${project.basedir}/../protoc-gen-request/target/protoc-gen-request${protoc.pluginExt}</protoc.requestPlugin> <protoc.quickbufPlugin>${project.basedir}/../protoc-gen-quickbuf/target/protoc-gen-quickbuf${protoc.pluginExt}</protoc.quickbufPlugin> <scriptsDir>${project.basedir}/../protoc-gen-quickbuf/src/main/scripts</scriptsDir> <!-- Default settings --> <protobuf.version>3.21.12</protobuf.version> <protoc.jar.version>3.11.4</protoc.jar.version> <autoReleaseAfterClose>true</autoReleaseAfterClose> <graalvm.tools.version>0.9.27</graalvm.tools.version> <native.staticArg>--static</native.staticArg> <native.extension>.exe</native.extension> <protoc.os>determined-via-profile</protoc.os> <protoc.arch>x86_64</protoc.arch> <!-- Common defines that are used here, but maybe set by modules --> <protocPluginName>${project.artifactId}</protocPluginName> <finalName>${protocPluginName}-${project.version}</finalName> <shadedName>${finalName}-shaded</shadedName> <javaModuleName /> <!-- Jigsaw module name --> <gpg.keyname /> <!-- set via settings.xml to sign release artifacts--> <mainClass /> <!-- executable main --> <!-- License Headers (http://www.mojohaus.org/license-maven-plugin/update-file-header-mojo.html) --> <license.licenseName>apache_v2</license.licenseName> <license.addJavaLicenseAfterPackage>false</license.addJavaLicenseAfterPackage> <license.trimHeaderLine>true</license.trimHeaderLine> <license.excludes>**/*.json,**/*.xml,**/*.sh,**/*.bat</license.excludes> <!-- For now, disable 'missing' warnings about undocumented @param and @throws --> <doclint>html,syntax,accessibility,reference</doclint> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.13.1</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> <version>${protobuf.version}</version> </dependency> <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java-util</artifactId> <version>${protobuf.version}</version> </dependency> <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-javalite</artifactId> <version>${protobuf.version}</version> </dependency> <dependency> <groupId>com.squareup</groupId> <artifactId>javapoet</artifactId> <version>1.13.0</version> </dependency> <dependency> <groupId>org.openjdk.jmh</groupId> <artifactId>jmh-core</artifactId> <version>1.21</version> </dependency> <dependency> <groupId>org.openjdk.jmh</groupId> <artifactId>jmh-generator-annprocess</artifactId> <version>1.21</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.9</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.1</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement> <build> <!-- Common plugin configurations --> <pluginManagement> <plugins> <!-- Shade plugins as uber-jars, so we can call them without dependencies --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <shadedArtifactAttached>true</shadedArtifactAttached> <shadedArtifactId>${project.artifactId}</shadedArtifactId> <minimizeJar>true</minimizeJar> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>${mainClass}</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> <!-- Add scripts that call the uber-jar and look like a protoc plugin --> <plugin> <artifactId>maven-antrun-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <id>copy-plugin-scripts</id> <phase>package</phase> <goals> <goal>run</goal> </goals> <configuration> <target> <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="maven.plugin.classpath"/> <if> <available file="${project.build.directory}/${shadedName}.jar"/> <then> <!-- Windows Script--> <mkdir dir="target"/> <copy file="${scriptsDir}/windows.bat" tofile="${project.build.directory}/${protocPluginName}.bat"/> <replace file="${project.build.directory}/${protocPluginName}.bat" token="{jarfile}" value="${shadedName}"/> <fixcrlf file="${project.build.directory}/${protocPluginName}.bat" eol="dos"/> <!-- Unix Script --> <copy file="${scriptsDir}/unix.sh" tofile="${project.build.directory}/${protocPluginName}"/> <replace file="${project.build.directory}/${protocPluginName}" token="{jarfile}" value="${shadedName}"/> <fixcrlf file="${project.build.directory}/${protocPluginName}" eol="unix"/> <chmod file="${project.build.directory}/${protocPluginName}" perm="775" type="file"/> <!-- Fix executable permissions of native executables: The native executables are built on different CI systems and then placed in the projects before building, and we need to ensure executable bits before packaging them with Conveyor. It's a bit of an odd place to place this with the scripts, but it seems like a waste to create a whole new task configuration for one line. --> <chmod dir="${project.build.directory}" perm="775" includes="**/*.exe"/> </then> </if> </target> </configuration> </execution> </executions> <dependencies> <dependency> <groupId>ant-contrib</groupId> <artifactId>ant-contrib</artifactId> <version>1.0b3</version> <exclusions> <exclusion> <groupId>ant</groupId> <artifactId>ant</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </plugin> <!-- Create a native image of the shaded uber-jar --> <plugin> <groupId>org.graalvm.buildtools</groupId> <artifactId>native-maven-plugin</artifactId> <version>${graalvm.tools.version}</version> <extensions>true</extensions> <executions> <execution> <id>build-native</id> <goals> <goal>compile-no-fork</goal> </goals> <phase>package</phase> </execution> </executions> <configuration> <skip>false</skip> <skipNativeTests>true</skipNativeTests> <!-- TODO: change to junit platform >5.8 --> <useArgFile>false</useArgFile> <imageName>${finalName}-${protoc.os}-${protoc.arch}${native.extension}</imageName> <classpath> <param>${project.build.directory}/${shadedName}.jar</param> </classpath> <buildArgs> <arg>-march=compatibility</arg> <!-- support older processors (see #54) --> <arg>--no-fallback</arg> <arg>--verbose</arg> <arg>${native.staticArg}</arg> </buildArgs> </configuration> </plugin> <!-- Add native image executables as project artifacts. Can't be shared here because runtime uses the same plugin --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>3.4.0</version> </plugin> </plugins> </pluginManagement> <!-- Plugins that run for all modules --> <plugins> <!-- Add licenses to files --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>license-maven-plugin</artifactId> <version>2.0.0</version> <executions> <execution> <id>first</id> <goals> <goal>update-file-header</goal> </goals> <phase>process-sources</phase> </execution> </executions> </plugin> <!-- Optional: ensure the manifest contains artifact version information: --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <configuration> <archive> <manifest> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> </manifest> <manifestEntries> <Automatic-Module-Name>${javaModuleName}</Automatic-Module-Name> </manifestEntries> </archive> </configuration> </plugin> </plugins> </build> <profiles> <!-- Other plugins required for publishing to Maven Central --> <profile> <id>release</id> <build> <plugins> <!-- Required: Source Jar --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <id>attach-sources</id> <phase>package</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <!-- Required: Javadoc Jar --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.6.3</version> <executions> <execution> <id>attach-javadoc</id> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <!-- Required: Sign Artifacts --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> <configuration> <keyname>${gpg.keyname}</keyname> <passphraseServerId>${gpg.keyname}</passphraseServerId> <gpgArguments> <!-- Prevent gpg from using pinentry programs --> <arg>--pinentry-mode</arg> <arg>loopback</arg> </gpgArguments> </configuration> </execution> </executions> </plugin> <!-- Deploy selected modules --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>3.0.0-M1</version> </plugin> <!-- Nexus Staging --> <plugin> <groupId>org.sonatype.plugins</groupId> <artifactId>nexus-staging-maven-plugin</artifactId> <version>1.6.13</version> <extensions>true</extensions> <configuration> <serverId>ossrh</serverId> <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl> <autoReleaseAfterClose>${autoReleaseAfterClose}</autoReleaseAfterClose> </configuration> </plugin> </plugins> </build> </profile> <!-- OS specific properties --> <profile> <id>platform-windows</id> <activation> <os> <family>windows</family> </os> </activation> <properties> <protoc.pluginExt>.bat</protoc.pluginExt> <protoc.os>windows</protoc.os> <native.extension><!-- added automatically --></native.extension> </properties> </profile> <profile> <id>platform-linux</id> <activation> <os> <name>linux</name> </os> </activation> <properties> <protoc.os>linux</protoc.os> </properties> </profile> <profile> <id>platform-osx</id> <activation> <os> <name>mac os x</name> </os> </activation> <properties> <protoc.os>osx</protoc.os> <native.staticArg>--verbose</native.staticArg> <!-- unsupported on osx --> </properties> </profile> <profile> <id>arch-aarch64</id> <activation> <os> <arch>aarch64</arch> </os> </activation> <properties> <protoc.arch>aarch_64</protoc.arch> </properties> </profile> <!-- uses the generated native generator --> <profile> <id>useNative</id> <properties> <protoc.pluginExt>-${project.version}-${protoc.os}-${protoc.arch}.exe</protoc.pluginExt> </properties> </profile> </profiles> </project>