<?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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>21</version>
    <relativePath/>
    <!-- fixes dumb maven warning -->
  </parent>
  <groupId>org.apache.datasketches</groupId>
  <artifactId>memory</artifactId>
  <version>1.1.0-incubating</version>
  <name>${project.artifactId}</name>
  <description>High-performance native memory access.</description>
  <url>https://datasketches.apache.org/</url>
  <inceptionYear>2015</inceptionYear>
  <packaging>jar</packaging>
  <!-- jar is the default -->
  <!-- With the 3.6.1 version of Maven this causes a warning to obsolete this in
         favor of using the enforcer plugin (which we do).  But removing this
         causes the command "mvn versions:display-plugin-updates" to issue an error 
         and not work properly. So this will stay for the time being. 
  -->
  <prerequisites>
    <maven>3.2.0</maven>
  </prerequisites>
  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <scm>
    <connection>scm:git:ssh://git@github.com/apache/incubator-datasketches-memory.git</connection>
    <developerConnection>scm:git:ssh://git@github.com/apache/incubator-datasketches-memory.git</developerConnection>
    <url>https://github.com/apache/incubator-datasketches-memory</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/incubator-datasketches-memory/issues</url>
  </issueManagement>
  <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 Commits</name>
      <subscribe>commits-subscribe@datasketches.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@datasketches.apache.org</unsubscribe>
      <post>commits@datasketches.apache.org</post>
      <archive>http://www.mail-archive.com/commits%datasketches.apache.org</archive>
    </mailingList>
    <mailingList>
      <name>sketches-user</name>
      <archive>https://groups.google.com/forum/#!forum/sketches-user</archive>
      <subscribe>mailto:sketches-user%2Bsubscribe@googlegroups.com</subscribe>
      <unsubscribe>mailto:sketches-user%2Bunsubscribe@googlegroups.com</unsubscribe>
      <post>mailto:sketches-user@googlegroups.com</post>
    </mailingList>
  </mailingLists>
  <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>
    <!-- System-wide properties -->
    <argLine>-Xmx4g -Duser.language=en -Duser.country=US -Dfile.encoding=UTF-8</argLine>
    <charset.encoding>UTF-8</charset.encoding>
    <project.build.sourceEncoding>${charset.encoding}</project.build.sourceEncoding>
    <project.build.resourceEncoding>${charset.encoding}</project.build.resourceEncoding>
    <project.reporting.outputEncoding>${charset.encoding}</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
    <!-- Dependencies -->
    <testng.version>6.14.3</testng.version>
    <slf4j-api.version>1.7.27</slf4j-api.version>
    <protobuf-java.version>3.6.0</protobuf-java.version>
    <!-- Used for UTF8 testing -->
    <zero-allocation-hashing.version>0.8</zero-allocation-hashing.version>
    <!-- org.codehaus.plexus used for strict profile testing-->
    <plexus-compiler-javac-errorprone.version>2.8.5</plexus-compiler-javac-errorprone.version>
    <!--  Maven Plugins -->
    <maven-assembly-plugin.version>3.1.1</maven-assembly-plugin.version>
    <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
    <maven-deploy-plugin.version>3.0.0-M1</maven-deploy-plugin.version>
    <maven-enforcer-plugin.version>3.0.0-M2</maven-enforcer-plugin.version>
    <maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
    <maven-jar-plugin.version>3.1.2</maven-jar-plugin.version>
    <maven-javadoc-plugin.version>3.1.1</maven-javadoc-plugin.version>
    <maven-release-plugin.version>2.5.3</maven-release-plugin.version>
    <maven-remote-resources-plugin.version>[1.0,)</maven-remote-resources-plugin.version>
    <maven-source-plugin.version>3.1.0</maven-source-plugin.version>
    <maven-surefire-plugin.version>3.0.0-M3</maven-surefire-plugin.version>
    <!-- Apache Plugins -->
    <apache-rat-plugin.version>0.13</apache-rat-plugin.version>
    <!-- org.jacoco Maven Plugins -->
    <jacoco-maven-plugin.version>0.8.4</jacoco-maven-plugin.version>
    <!-- org.eluder Maven Plugins -->
    <coveralls-maven-plugin.version>4.3.0</coveralls-maven-plugin.version>
    <!-- other -->
    <reproducible-build-maven-plugin.version>0.4</reproducible-build-maven-plugin.version>
    <lifecycle-mapping.version>1.0.0</lifecycle-mapping.version>
    <git-commit-id-plugin.version>3.0.0</git-commit-id-plugin.version>
  </properties>
  <repositories>
    <repository>
      <id>apache.snapshots</id>
      <name>Apache Snapshot Repository</name>
      <url>https://repository.apache.org/content/groups/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>apache</id>
      <name>Apache Repository</name>
      <url>https://repository.apache.org/content/repositories/releases/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>
  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j-api.version}</version>
    </dependency>
    <!-- Test Scope -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-simple</artifactId>
      <version>${slf4j-api.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>${testng.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>
  </dependencies>
  <build>
    <pluginManagement>
      <plugins>
        <!-- We want to deploy the artifacts to a staging location for perusal -->
        <!-- Apache Parent pom: apache-release profile -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>${maven-deploy-plugin.version}</version>
          <configuration>
            <updateReleaseInfo>true</updateReleaseInfo>
            <!-- see maven-install-plugin -->
          </configuration>
        </plugin>
        <!-- Apache Parent pom, pluginManagement-->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>${maven-release-plugin.version}</version>
        </plugin>
        <!-- Extends Apache Parent pom, pluginManagement-->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>${maven-jar-plugin.version}</version>
          <executions>
            <execution>
              <id>default-jar</id>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
            <execution>
              <id>default-test-jar</id>
              <goals>
                <goal>test-jar</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <!-- Extends Apache Parent pom, apache-release profile -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>${maven-javadoc-plugin.version}</version>
          <configuration>
            <docfilessubdirs>true</docfilessubdirs>
          </configuration>
          <executions>
            <execution>
              <id>attach-javadocs</id>
              <goals>
                <goal>jar</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.0</version>
                  </requireJavaVersion>
                  <requireMavenVersion>
                    <version>3.2,</version>
                  </requireMavenVersion>
                  <bannedDependencies>
                    <excludes>
                      <!--LGPL licenced library-->
                      <exclude>com.google.code.findbugs:annotations</exclude>
                    </excludes>
                  </bannedDependencies>
                </rules>
                <fail>true</fail>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <!-- Apache Parent pom, pluginManagement-->
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <version>${apache-rat-plugin.version}</version>
          <executions>
            <execution>
              <phase>verify</phase>
              <goals>
                <goal>check</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <outputDirectory>${project.basedir}/rat</outputDirectory>
            <consoleOutput>true</consoleOutput>
            <useDefaultExcludes>true</useDefaultExcludes>
            <excludes>
              <!-- rat uses .gitignore for excludes by default -->
              <exclude>**/test/resources/**/*.txt</exclude>
              <exclude>LICENSE</exclude>
              <exclude>NOTICE</exclude>
              <exclude>DISCLAIMER</exclude>
            </excludes>
          </configuration>
        </plugin>
        <!-- Extends Apache Parent pom, apache-release profile -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>${maven-source-plugin.version}</version>
          <executions>
            <execution>
              <id>attach-sources</id>
              <phase>package</phase>
              <goals>
                <goal>jar-no-fork</goal>
              </goals>
            </execution>
            <execution>
              <id>attach-test-sources</id>
              <phase>package</phase>
              <goals>
                <goal>test-jar-no-fork</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <!-- Apache Parent pom, pluginManagement-->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${maven-surefire-plugin.version}</version>
          <configuration>
            <trimStackTrace>false</trimStackTrace>
            <useManifestOnlyJar>false</useManifestOnlyJar>
            <redirectTestOutputToFile>true</redirectTestOutputToFile>
          </configuration>
        </plugin>
        <!-- Generates code coverage report from website. -->
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>${jacoco-maven-plugin.version}</version>
          <executions>
            <execution>
              <id>prepare-agent</id>
              <goals>
                <goal>prepare-agent</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <!-- Submit code coverage report to Coveralls.io. -->
        <plugin>
          <groupId>org.eluder.coveralls</groupId>
          <artifactId>coveralls-maven-plugin</artifactId>
          <version>${coveralls-maven-plugin.version}</version>
          <configuration>
            <!-- Since we use Travis CI we do not have to put a Coveralls token here. -->
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-deploy-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.eluder.coveralls</groupId>
        <artifactId>coveralls-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <!-- Ignore nuisance warning from Apache parent plugin: 
          "maven-remote-resources-plugin (goal "process") is ignored by m2e".
          This also should fix the Maven warning that it can't find the lifecycle-mapping jar.
          This profile is only active when the property "m2e.version" is set, 
          which is the case when building in Eclipse with m2e.
          The ignore below tells m2eclipse to skip the execution.
    -->
    <profile>
      <id>m2e</id>
      <activation>
        <property>
          <name>m2e.version</name>
        </property>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.eclipse.m2e</groupId>
              <artifactId>lifecycle-mapping</artifactId>
              <version>${lifecycle-mapping.version}</version>
              <configuration>
                <lifecycleMappingMetadata>
                  <pluginExecutions>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-remote-resources-plugin</artifactId>
                        <versionRange>${maven-remote-resources-plugin.version}</versionRange>
                        <goals>
                          <goal>process</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore/>
                      </action>
                    </pluginExecution>
                  </pluginExecutions>
                </lifecycleMappingMetadata>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>strict</id>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>${maven-compiler-plugin.version}</version>
              <dependencies>
                <dependency>
                  <groupId>org.codehaus.plexus</groupId>
                  <artifactId>plexus-compiler-javac-errorprone</artifactId>
                  <version>${plexus-compiler-javac-errorprone.version}</version>
                </dependency>
              </dependencies>
              <configuration>
                <source>${maven.compiler.source}</source>
                <target>${maven.compiler.target}</target>
                <compilerId>javac-with-errorprone</compilerId>
                <forceJavacCompilerUse>true</forceJavacCompilerUse>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <!-- 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-incubating) 
             and at a Release Candidate tag (e.g., 1.1.0-incubating-RC1).
             The pom version in the release branch must be properly set to something like: "1.1.0-incubating".
             The pom version in the master would be set to something like: "1.2.0-incubating-SNAPSHOT".
             Test Command: mvn clean verify -Pnexus-jars -Dmaven.test.skip=true
             Command: mvn clean deploy -Dnexus-jars
             Verify Command (from terminal): gpg -v &#45;&#45;verify $ASC $FILE 
    -->
    <profile>
      <id>nexus-jars</id>
      <build>
        <pluginManagement>
          <plugins>
            <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>
                <failOnNoGitDirectory>true</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>
            <!-- Extends Apache Parent pom, pluginManagement-->
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-jar-plugin</artifactId>
              <version>${maven-jar-plugin.version}</version>
              <executions>
                <execution>
                  <id>default-jar</id>
                  <goals>
                    <goal>jar</goal>
                  </goals>
                </execution>
                <execution>
                  <id>default-test-jar</id>
                  <goals>
                    <goal>test-jar</goal>
                  </goals>
                </execution>
              </executions>
              <configuration>
                <injectAllReactorProjects>true</injectAllReactorProjects>
                <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>
                    <git-branch>${git.branch}</git-branch>
                    <git-commit-id>${git.commit.id.full}</git-commit-id>
                    <git-commit-time>${git.commit.time}</git-commit-time>
                    <git-commit-user-email>${git.commit.user.email}</git-commit-user-email>
                    <git-commit-tag>${git.tags}</git-commit-tag>
                  </manifestEntries>
                </archive>
              </configuration>
            </plugin>
            <!-- 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-jar-plugin</artifactId>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!-- Disable source release assembly for 'apache-release' profile. 
             This is performed from a script outside Maven
    -->
    <profile>
      <id>apache-release</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>${maven-assembly-plugin.version}</version>
            <executions>
              <execution>
                <id>source-release-assembly</id>
                <phase>none</phase>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
