blob: c82163a1802c441cba72b4ece11f03b4b6c7cd6d [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<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>
<groupId>org.apache</groupId>
<artifactId>apache</artifactId>
<version>23</version>
<!-- Bypass resolution within source directory and resolve parent from remote repository instead -->
<relativePath />
</parent>
<!-- datasketches-memory assembly module
NOTE:
This uses the Maven project-aggregation feature and does not inherit from the parent
so that there is no runtime dependency on the parent project (root module).
As a result, some properties from the root POM are duplicated here for inclusion in
the assembled artifacts. For more information, see:
https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Aggregation -->
<groupId>org.apache.datasketches</groupId>
<artifactId>datasketches-memory</artifactId>
<version>2.1.0</version>
<name>${project.artifactId}</name>
<description>High-performance native memory access.</description>
<url>https://datasketches.apache.org/</url>
<inceptionYear>2015</inceptionYear>
<mailingLists>
<mailingList>
<name>DataSketches Developers</name>
<subscribe>dev-subscribe@datasketches.apache.org</subscribe>
<unsubscribe>dev-unsubscribe@datasketches.apache.org</unsubscribe>
<post>dev@datasketches.apache.org</post>
<archive>https://mail-archives.apache.org/mod_mbox/datasketches-dev</archive>
</mailingList>
<mailingList>
<name>DataSketches Users</name>
<subscribe>user-subscribe@datasketches.apache.org</subscribe>
<unsubscribe>user-unsubscribe@datasketches.apache.org</unsubscribe>
<post>user@datasketches.apache.org</post>
<archive>https://mail-archives.apache.org/mod_mbox/datasketches-user</archive>
</mailingList>
</mailingLists>
<scm>
<connection>scm:git:ssh://git@github.com/apache/${project.artifactId}.git</connection>
<developerConnection>scm:git:ssh://git@github.com/apache/${project.artifactId}.git</developerConnection>
<url>https://github.com/apache/${project.artifactId}</url>
<tag>HEAD</tag>
</scm>
<issueManagement>
<!-- <system>jira</system>
<url>https://issues.apache.org/jira/browse/DATASKETCHES</url> -->
<system>GitHub</system>
<url>https://github.com/apache/${project.artifactId}/issues</url>
</issueManagement>
<developers>
<developer>
<name>The Apache DataSketches Team</name>
<email>dev@datasketches.apache.org</email>
<url>https://datasketches.apache.org</url>
<organization>Apache Software Foundation</organization>
<organizationUrl>http://www.apache.org</organizationUrl>
</developer>
</developers>
<properties>
<!-- UNIQUE FOR THIS JAVA COMPONENT -->
<protobuf-java.version>4.0.0-rc-2</protobuf-java.version>
<!-- Used for UTF8 testing -->
<zero-allocation-hashing.version>0.15</zero-allocation-hashing.version>
<!-- END:UNIQUE FOR THIS JAVA COMPONENT -->
<!-- Test -->
<testng.version>7.5</testng.version>
<!-- System-wide properties -->
<maven.version>3.5.0</maven.version>
<java.version>1.8</java.version>
<maven.source.skip>true</maven.source.skip>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<!-- deploy artifacts to nexus from this module only -->
<maven.deploy.skip>false</maven.deploy.skip>
<maven.install.skip>false</maven.install.skip>
<maven.javadoc.skip>true</maven.javadoc.skip>
<!-- Maven Plugins -->
<maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version> <!-- overrides parent -->
<maven-enforcer-plugin.version>3.0.0</maven-enforcer-plugin.version> <!-- overrides parent -->
<maven-gpg-plugin.version>3.0.1</maven-gpg-plugin.version> <!-- overrides parent -->
<maven-jar-plugin.version>3.2.0</maven-jar-plugin.version> <!-- overrides parent -->
<maven-remote-resources-plugin.version>1.7.0</maven-remote-resources-plugin.version> <!-- overrides parent -->
<!-- org.jacoco Maven Plugins -->
<jacoco-maven-plugin.version>0.8.6</jacoco-maven-plugin.version>
<!-- git plugin -->
<git-commit-id-plugin.version>4.0.4</git-commit-id-plugin.version>
</properties>
<dependencies>
<!-- These dependencies are required during assembly but not runtime -->
<dependency>
<groupId>org.apache.datasketches</groupId>
<artifactId>datasketches-memory-java8</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.datasketches</groupId>
<artifactId>datasketches-memory-java11</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<!-- Test Scope -->
<dependency>
<groupId>org.apache.datasketches</groupId>
<artifactId>datasketches-memory-java8-tests</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<!-- Used for UTF8 testing -->
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>${protobuf-java.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<!-- Used for xxHash testing -->
<groupId>net.openhft</groupId>
<artifactId>zero-allocation-hashing</artifactId>
<version>${zero-allocation-hashing.version}</version>
<scope>test</scope>
</dependency>
<!-- END: UNIQUE FOR THIS JAVA COMPONENT -->
</dependencies>
<build>
<pluginManagement>
<plugins>
<!-- The assembly plugin builds all artifacts for this project from the other modules
within the project. These modules are complementary and not standalone. Therefore,
they are not installed and downloaded independently by the end user.
Instead, the maven-assembly plugin builds all jars, and hides the multi-module
configuration from the end user. -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>${maven-assembly-plugin.version}</version>
<!--suppress MavenModelInspection -->
<configuration>
<archive>
<manifest>
<addDefaultEntries>false</addDefaultEntries>
<addDefaultSpecificationEntries>false</addDefaultSpecificationEntries>
<addDefaultImplementationEntries>false</addDefaultImplementationEntries>
</manifest>
<manifestEntries>
<Build-Jdk>${java.version} (${java.vendor} ${java.vm.version})</Build-Jdk>
<Build-OS>${os.name} ${os.arch} ${os.version}</Build-OS>
<Implementation-Vendor>The Apache Software Foundation</Implementation-Vendor>
<GroupId-ArtifactId>${project.groupId}:${project.artifactId}</GroupId-ArtifactId>
<!-- these properties are generated by the git-commit-id-plugin during initialize -->
<!--suppress UnresolvedMavenProperty -->
<git-branch>${git.branch}</git-branch>
<!--suppress UnresolvedMavenProperty -->
<git-commit-id>${git.commit.id.full}</git-commit-id>
<!--suppress UnresolvedMavenProperty -->
<git-commit-time>${git.commit.time}</git-commit-time>
<!--suppress UnresolvedMavenProperty -->
<git-commit-user-email>${git.commit.user.email}</git-commit-user-email>
<!--suppress UnresolvedMavenProperty -->
<git-commit-tag>${git.tags}</git-commit-tag>
</manifestEntries>
</archive>
</configuration>
<executions>
<!-- multi-release (MR) jar -->
<execution>
<id>assemble-jar</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<attach>true</attach>
<descriptors>
<descriptor>src/assembly/assemble-mr-jar.xml</descriptor>
</descriptors>
<!-- The class loader requires this to be set in a multi-release JAR's manifest -->
<archive>
<manifestEntries>
<Multi-Release>true</Multi-Release>
</manifestEntries>
</archive>
</configuration>
</execution>
<!-- sources, tests and javadocs jars -->
<execution>
<id>assemble-sources-tests-javadocs</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>true</appendAssemblyId>
<attach>true</attach>
<descriptors>
<!-- tests jar -->
<descriptor>src/assembly/assemble-test-jar.xml</descriptor>
<!-- sources.jar -->
<descriptor>src/assembly/assemble-sources.xml</descriptor>
<!-- test-sources.jar -->
<descriptor>src/assembly/assemble-test-sources.xml</descriptor>
<!-- javadoc jar -->
<descriptor>src/assembly/assemble-javadoc.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<!-- Generates aggregate code coverage report from website.
This applies across all Maven submodules. -->
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco-maven-plugin.version}</version>
<executions>
<execution>
<id>default-report</id>
<phase>verify</phase>
<goals>
<goal>report-aggregate</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${maven-enforcer-plugin.version}</version>
<executions>
<execution>
<id>enforce-banned-dependencies</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>[1.8, 1.9),[8],[11,14),[17,18)</version>
</requireJavaVersion>
<requireMavenVersion>
<version>[${maven.version},)</version>
</requireMavenVersion>
<bannedDependencies>
<excludes>
<!--LGPL licensed library-->
<exclude>com.google.code.findbugs:annotations</exclude>
</excludes>
</bannedDependencies>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>${git-commit-id-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>revision</goal>
</goals>
<phase>initialize</phase>
</execution>
</executions>
<configuration>
<dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
<dateFormatTimeZone>UTC</dateFormatTimeZone>
<verbose>false</verbose>
<skipPoms>false</skipPoms>
<format>json</format>
<generateGitPropertiesFile>true</generateGitPropertiesFile>
<generateGitPropertiesFilename>${project.build.directory}/git.properties</generateGitPropertiesFilename>
<!-- Maven commands are sometimes run on the release artifact directly, which is not a Git repository -->
<failOnNoGitDirectory>false</failOnNoGitDirectory>
<failOnUnableToExtractRepoInfo>true</failOnUnableToExtractRepoInfo>
<commitIdGenerationMode>full</commitIdGenerationMode>
<includeOnlyProperties>
<includeProperty>git.branch</includeProperty>
<includeProperty>git.commit.id.full</includeProperty>
<includeProperty>git.commit.time</includeProperty>
<includeProperty>git.commit.user.email</includeProperty>
<includeProperty>git.tags</includeProperty>
</includeOnlyProperties>
<gitDescribe>
<skip>false</skip>
<always>true</always>
<abbrev>7</abbrev>
<dirty>-dirty</dirty>
<tags>true</tags>
<forceLongFormat>true</forceLongFormat>
</gitDescribe>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven-jar-plugin.version}</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
</plugin>
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
</plugin>
</plugins>
</build>
<profiles>
<!-- This profile is used to release signed jars to the Apache Nexus repository.
This must be executed from a git repository set at the proper Release branch (e.g., 1.1.X)
and at a Release Candidate tag (e.g., 1.1.0-RC1).
The pom version in the release branch must be properly set to something like: "1.1.0".
The pom version in the master would be set to something like: "1.2.0-SNAPSHOT".
Test Command: mvn clean verify -Pnexus-jars -DskipTests=true
Command: mvn clean deploy -Dnexus-jars
Verify Command (from terminal): gpg -v &#45;&#45;verify $ASC $FILE # dashdashverify
-->
<profile>
<id>nexus-jars</id>
<build>
<pluginManagement>
<plugins>
<!-- We want to sign the artifacts, POM, and all attached artifacts -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${maven-gpg-plugin.version}</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<gpgArguments>
<arg>--verbose</arg>
<!-- prints the algorithm used -->
<arg>--personal-digest-preferences=SHA512</arg>
</gpgArguments>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>only-eclipse</id>
<activation>
<property>
<name>m2e.version</name>
</property>
</activation>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
<version>${maven-remote-resources-plugin.version}</version>
<executions>
<execution>
<id>process-resource-bundles</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>