<?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>23</version>
  </parent>

  <groupId>org.apache.datasketches</groupId>
  <artifactId>datasketches-characterization</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>${project.artifactId}</name>
  <description>Characterization code for the DataSketches library.</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>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>

  <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 -->
    <datasketches-memory.version>2.0.0</datasketches-memory.version>
    <datasketches-java.version>3.2.0</datasketches-java.version>
    <druid-momentsketch.version>0.16.0-incubating</druid-momentsketch.version>
    <druid-histogram.version>0.16.0-incubating</druid-histogram.version>
    <druid-hll.version>0.16.0-incubating</druid-hll.version>
    <zetasketch.version>0.1.0</zetasketch.version>
    <t-digest.version>3.2</t-digest.version>
    <!-- END:UNIQUE FOR THIS JAVA COMPONENT -->

    <!-- Test -->
    <testng.version>7.5.1</testng.version>

    <!-- System-wide properties -->
    <maven.version>3.5.0</maven.version>
    <java.version>11</java.version>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
    <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>

    <!-- org.codehaus plugins -->
    <!-- used for strict profile testing-->
    <plexus-compiler-javac-errorprone.version>2.8.5</plexus-compiler-javac-errorprone.version>
    <versions-maven-plugin.version>2.8.1</versions-maven-plugin.version>

    <!--  Maven Plugins -->
    <maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version> <!-- overrides parent -->
    <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version> <!-- overrides parent -->
    <maven-deploy-plugin.version>3.0.0-M1</maven-deploy-plugin.version> <!-- overrides parent -->
    <maven-enforcer-plugin.version>3.0.0-M2</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-javadoc-plugin.version>3.3.1</maven-javadoc-plugin.version> <!-- overrides parent -->
    <maven-release-plugin.version>3.0.0-M4</maven-release-plugin.version> <!-- overrides parent -->
    <maven-remote-resources-plugin.version>[1.7.0,)</maven-remote-resources-plugin.version> <!-- overrides parent -->
    <maven-source-plugin.version>3.2.1</maven-source-plugin.version> <!-- overrides parent -->
    <maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version> <!-- overrides parent -->
    <!-- Apache Plugins -->
    <apache-rat-plugin.version>0.13</apache-rat-plugin.version> <!-- overrides parent -->
    <!-- org.jacoco Maven Plugins -->
    <jacoco-maven-plugin.version>0.8.7</jacoco-maven-plugin.version>
    <!-- org.eluder Maven Plugins -->
    <coveralls-repo-token></coveralls-repo-token>
    <coveralls-maven-plugin.version>4.3.0</coveralls-maven-plugin.version>
    <!-- other -->
    <lifecycle-mapping.version>1.0.0</lifecycle-mapping.version>
    <git-commit-id-plugin.version>4.9.10</git-commit-id-plugin.version>
  </properties>

  <dependencies>
    <!-- UNIQUE FOR THIS JAVA COMPONENT -->
    <dependency>
      <groupId>org.apache.datasketches</groupId>
      <artifactId>datasketches-memory</artifactId>
      <version>${datasketches-memory.version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.datasketches</groupId>
        <artifactId>datasketches-java</artifactId>
        <version>${datasketches-java.version}</version>
    </dependency>

    <!-- Druid HLL Sketch -->
    <dependency>
        <groupId>org.apache.druid</groupId>
        <artifactId>druid-hll</artifactId>
        <version>${druid-hll.version}</version>
    </dependency>

    <!-- Druid Moment Sketch -->
    <dependency>
      <groupId>org.apache.druid.extensions.contrib</groupId>
      <artifactId>druid-momentsketch</artifactId>
      <version>${druid-momentsketch.version}</version>
    </dependency>

    <!-- Druid Histogram -->
    <dependency>
      <groupId>org.apache.druid.extensions</groupId>
      <artifactId>druid-histogram</artifactId>
      <version>${druid-histogram.version}</version>
    </dependency>
    
    <!-- ZetaSketch -->
    <dependency>
      <groupId>com.google.zetasketch</groupId>
      <artifactId>zetasketch</artifactId>
      <version>${zetasketch.version}</version>
    </dependency>

    <!-- t-Digest -->
    <dependency>
        <groupId>com.tdunning</groupId>
        <artifactId>t-digest</artifactId>
        <version>${t-digest.version}</version>
    </dependency>

    <!-- Dependency on Test code -->
    <dependency>
        <groupId>org.apache.datasketches</groupId>
        <artifactId>datasketches-java</artifactId>
        <version>${datasketches-java.version}</version>
        <type>test-jar</type>
    </dependency>

    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>${testng.version}</version>
      <!-- <scope>test</scope> so we can run from main -->
    </dependency>
    <!-- END: UNIQUE FOR THIS JAVA COMPONENT -->
  </dependencies>

  <build>
    <pluginManagement>
      <plugins>

        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>versions-maven-plugin</artifactId>
          <version>${versions-maven-plugin.version}</version>
        </plugin>

        <plugin>
          <!-- We want to deploy the artifacts to a staging location for perusal -->
          <!-- Apache Parent pom: apache-release profile -->
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>${maven-deploy-plugin.version}</version>
        </plugin>

        <plugin>
          <!-- Apache Parent pom, pluginManagement-->
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>${maven-release-plugin.version}</version>
        </plugin>

        <plugin>
          <!-- Extends Apache Parent pom, pluginManagement-->
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>${maven-jar-plugin.version}</version>
          <executions>
            <execution>
              <id>default-jar</id>
              <phase>package</phase>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
            <execution>
              <id>default-test-jar</id>
              <phase>package</phase>
              <goals>
                <goal>test-jar</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <!-- Extends Apache Parent pom, apache-release profile -->
          <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>${java.version}</version>
                  </requireJavaVersion>
                  <requireMavenVersion>
                    <version>${maven.version},</version>
                  </requireMavenVersion>
                  <bannedDependencies>
                    <excludes>
                      <!--LGPL licenced library-->
                      <exclude>com.google.code.findbugs:annotations</exclude>
                    </excludes>
                  </bannedDependencies>
                </rules>
                <fail>true</fail>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <!-- Apache Parent pom, pluginManagement-->
          <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>**/*.yaml</exclude>
              <exclude>**/*.yml</exclude>
              <exclude>**/.*</exclude>
              <exclude>**/test/resources/**/*.txt</exclude>
              <exclude>LICENSE</exclude>
              <exclude>NOTICE</exclude>
            </excludes>
          </configuration>
        </plugin>

        <plugin>
          <!-- Extends Apache Parent pom, apache-release profile -->
          <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>

        <plugin>
          <!-- Apache Parent pom, pluginManagement-->
          <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>

        <plugin>
          <!-- Generates code coverage report from website. -->
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>${jacoco-maven-plugin.version}</version>
          <executions>
            <execution>
              <id>default-prepare-agent</id>
              <goals>
                <goal>prepare-agent</goal>
              </goals>
            </execution>
            <execution>
              <id>default-report</id>
              <goals>
                <goal>report</goal>
              </goals>
            </execution>  
          </executions>
        </plugin>

        <plugin>
          <!-- Submit code coverage report to Coveralls.io. -->
          <groupId>org.eluder.coveralls</groupId>
          <artifactId>coveralls-maven-plugin</artifactId>
          <version>${coveralls-maven-plugin.version}</version>
          <configuration>
            <repoToken>${coveralls-repo-token}</repoToken>
          </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) 
          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>
            <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>
                <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>
