blob: d0364662b40f0b3fee396c3c3772af06a41b8241 [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
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache</groupId>
<artifactId>apache</artifactId>
<version>32</version>
</parent>
<groupId>org.apache.datasketches</groupId>
<artifactId>datasketches-java</artifactId>
<version>9.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>${project.artifactId}</name>
<description>Core sketch algorithms used alone and by other Java repositories in the Apache DataSketches Project.</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>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>
<!-- Test -->
<testng.version>7.11.0</testng.version>
<!-- these are TestNG groups used for excluding / including groups of tests. See profiles section. -->
<testng.generate-java-files>generate_java_files</testng.generate-java-files>
<testng.check-cpp-files>check_cpp_files</testng.check-cpp-files>
<testng.check-go-files>check_go_files</testng.check-go-files>
<testng.check-cpp-historical-files>check_cpp_historical_files</testng.check-cpp-historical-files>
<!-- System-wide properties -->
<maven.version>3.9.11</maven.version>
<java.version>25</java.version>
<!-- Reproducable Builds, arbitrary, fixed date
<project.build.outputTimestamp>2025-12-01T00:00:00Z</project.build.outputTimestamp> -->
<!-- removed: g -Duser.language=en -Duser.country=US -Dfile.encoding=UTF-8 -->
<jvm.options>-Xmx4g</jvm.options> <!-- use space to separate args -->
<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>
<maven.build.timestamp.format>yyyy-MM-dd'T'HH-mm-ss'Z'</maven.build.timestamp.format>
<!-- org.apache.maven plugins -->
<maven-assembly-plugin.version>3.7.1</maven-assembly-plugin.version>
<maven-compiler-plugin.version>3.14.1</maven-compiler-plugin.version>
<maven-dependency-plugin.version>3.9.0</maven-dependency-plugin.version>
<maven-deploy-plugin.version>3.1.4</maven-deploy-plugin.version>
<maven-enforcer-plugin.version>3.6.2</maven-enforcer-plugin.version>
<maven-gpg-plugin.version>3.2.8</maven-gpg-plugin.version>
<maven-jar-plugin.version>3.4.2</maven-jar-plugin.version> <!--3.5.0 fails -->
<maven-javadoc-plugin.version>3.12.0</maven-javadoc-plugin.version>
<maven-release-plugin.version>3.2.0</maven-release-plugin.version>
<maven-source-plugin.version>3.3.1</maven-source-plugin.version>
<!-- for surefire, failsafe and surefire-report: -->
<maven-surefire-failsafe-plugins.version>3.5.4</maven-surefire-failsafe-plugins.version>
<maven-toolchains-plugin.version>3.2.0</maven-toolchains-plugin.version>
<!-- com.github plugins -->
<git-commit-id-plugin.version>4.9.10</git-commit-id-plugin.version>
<!-- org.apache.creadur plugins -->
<apache-rat-plugin.version>0.17</apache-rat-plugin.version>
<!-- org.eluder maven plugins -->
<coveralls-repo-token></coveralls-repo-token>
<coveralls-maven-plugin.version>4.3.0</coveralls-maven-plugin.version>
<!-- org.jacoco.maven plugins -->
<jacoco-maven-plugin.version>0.8.14</jacoco-maven-plugin.version>
<!-- org.mojohaus plugins -->
<versions-maven-plugin.version>2.19.1</versions-maven-plugin.version>
<!-- other -->
<lifecycle-mapping.version>1.0.0</lifecycle-mapping.version>
</properties>
<dependencies>
<!-- Test Scope -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>${testng.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${maven-assembly-plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<fork>true</fork>
<release>${java.version}</release>
<compilerArgs>
<arg>-J${jvm.options}</arg> <!-- comma separated or separate args -->
</compilerArgs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${maven-dependency-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>
<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>[25,)</version>
</requireJavaVersion>
<requireMavenVersion>
<version>[${maven.version},)</version>
</requireMavenVersion>
<!-- <dependencyConvergence /> -->
<bannedDependencies>
<excludes>
<!--LGPL licensed library-->
<exclude>com.google.code.findbugs:annotations</exclude>
</excludes>
</bannedDependencies>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<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>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-javadoc-plugin.version}</version>
<configuration>
<outputDirectory>${project.reporting.outputDirectory}</outputDirectory>
<reportOutputDirectory>${project.reporting.outputDirectory}</reportOutputDirectory>
<jarOutputDirectory>${project.reporting.outputDirectory}</jarOutputDirectory>
<destDir>apidocs</destDir>
<docfilessubdirs>true</docfilessubdirs>
<show>public</show>
<doclint>all,-missing</doclint>
<release>${java.version}</release>
<additionalJOptions> <!-- requires -J prefix -->
<additionalJoption>-J${jvm.options}</additionalJoption>
</additionalJOptions>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${maven-release-plugin.version}</version>
</plugin>
<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>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-failsafe-plugins.version}</version>
<configuration>
<forkCount>1</forkCount>
<reuseForks>true</reuseForks>
<argLine>${argLine} ${jvm.options}</argLine> <!-- use space to separate args -->
<trimStackTrace>false</trimStackTrace>
<useManifestOnlyJar>false</useManifestOnlyJar>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
<reportsDirectory>${project.build.directory}/test-output/${maven.build.timestamp}</reportsDirectory>
<excludedGroups>${testng.generate-java-files},${testng.check-cpp-files},${testng.check-go-files},
${testng.check-cpp-historical-files}</excludedGroups> <!-- do not indent -->
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<version>${maven-toolchains-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>toolchain</goal>
</goals>
</execution>
</executions>
<configuration>
<toolchains>
<jdk>
<version>${java.version}</version>
</jdk>
</toolchains>
</configuration>
</plugin>
<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>
<inputExcludes>
<!-- I think rat uses .gitignore for excludes by default -->
<inputExcludeStd>StandardCollection</inputExcludeStd>
<inputExclude>**/*.yaml</inputExclude>
<inputExclude>**/*.yml</inputExclude>
<inputExclude>**/.*</inputExclude>
<inputExclude>**/test/resources/**/*.txt</inputExclude>
<inputExclude>**/git.properties</inputExclude>
<inputExclude>**/doc/**</inputExclude>
<inputExclude>**/*.sk</inputExclude>
<inputExclude>LICENSE</inputExclude>
<inputExclude>NOTICE</inputExclude>
<inputExclude>**/*.code-workspace</inputExclude>
</inputExcludes>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>${versions-maven-plugin.version}</version>
</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>
<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>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>${git-commit-id-plugin.version}</version>
</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>
<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> remove for reproducible builds-->
<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>
<!-- 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>
</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>
<profile>
<id>generate-java-files</id>
<build>
<pluginManagement>
<plugins>
<plugin>
<!-- Apache Parent pom, pluginManagement-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<groups>${testng.generate-java-files}</groups>
<excludedGroups>${testng.check-cpp-files},${testng.check-go-files},${testng.check-cpp-historical-files}</excludedGroups>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
<profile>
<id>check-cpp-files</id>
<build>
<pluginManagement>
<plugins>
<plugin>
<!-- Apache Parent pom, pluginManagement-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<groups>${testng.check-cpp-files}</groups>
<excludedGroups>${testng.generate-java-files},${testng.check-go-files},${testng.check-cpp-historical-files}</excludedGroups>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
<profile>
<id>check-go-files</id>
<build>
<pluginManagement>
<plugins>
<plugin>
<!-- Apache Parent pom, pluginManagement-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<groups>${testng.check-go-files}</groups>
<excludedGroups>${testng.generate-java-files},${testng.check-cpp-files},${testng.check-cpp-historical-files}
</excludedGroups>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
<profile>
<id>check-cpp-historical-files</id>
<build>
<pluginManagement>
<plugins>
<plugin>
<!-- Apache Parent pom, pluginManagement-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<groups>${testng.check-cpp-historical-files}</groups>
<excludedGroups>${testng.generate-java-files},${testng.check-go-files},${testng.check-cpp-files}</excludedGroups>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
</profiles>
</project>