diff --git a/pom.xml b/pom.xml index b799caf89..a2791d417 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ under the License. org.apache.datasketches datasketches-java - 9.0.1-SNAPSHOT + 9.1.0-SNAPSHOT jar ${project.artifactId} @@ -95,34 +95,70 @@ under the License. + + + apache.snapshots + Apache Snapshot Repository + https://repository.apache.org/content/groups/snapshots + + false + + + true + + + + apache + Apache Releases Repository + https://repository.apache.org/content/groups/public + + true + + + false + + + + - + + 3.9.12 + 2026-01-01T00:00:00Z + yyyy-MM-dd'T'HH-mm-ss'Z' + + + 25 + ${java.version} + true + + 7.12.0 + 2.0.12 generate_java_files check_cpp_files check_go_files check_cpp_historical_files - - 3.9.12 - 25 - ${java.version} + -Xmx4g -Duser.language=en -Duser.country=US -Dfile.encoding=UTF-8 ${jvm.mem} ${jvm.locale.language} ${jvm.locale.country} ${jvm.locale.encoding} + + + UTF-8 - 2026-01-09T19:00:20Z ${charset.encoding} ${charset.encoding} ${charset.encoding} ${charset.encoding} ${project.build.directory}/site - yyyy-MM-dd'T'HH-mm-ss'Z' + 3.8.0 + 3.5.0 3.15.0 3.1.4 3.6.2 @@ -131,67 +167,77 @@ under the License. 3.4.2 3.12.0 3.3.1 + 3.5.0 3.4.0 3.5.4 3.2.0 - - 0.17 + + + + 0.18 + 1.8 - + 5.0.0 - - 9.0.2 - - + 0.8.14 - - 1.0.0 - - + + 1.7.0 - - - apache.snapshots - Apache Snapshot Repository - https://repository.apache.org/content/groups/snapshots - - false - - - true - - - - apache - Apache Releases Repository - https://repository.apache.org/content/groups/public - - true - - - false - - - + - org.testng testng ${testng.version} test + + org.slf4j + slf4j-simple + ${org-slf4j.version} + test + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven-assembly-plugin.version} + false + + + source-release-assembly + package + + single + + + true + + src/assembly/source-release.xml + + posix + + + + + + + org.apache.maven.plugins + maven-clean-plugin + ${maven-clean-plugin.version} + + org.apache.maven.plugins maven-compiler-plugin @@ -219,11 +265,11 @@ under the License. - [${maven.version},4.0.0) @@ -241,6 +287,25 @@ under the License. + + org.apache.maven.plugins + maven-gpg-plugin + ${maven-gpg-plugin.version} + + + sign-artifacts + verify + sign + + + + + --verbose + --personal-digest-preferences=SHA512 + + + + org.apache.maven.plugins maven-install-plugin @@ -255,18 +320,48 @@ under the License. default-jar package - - jar - + jar + + true + + + org.apache.datasketches_java + + + default-test-jar package - - test-jar - + test-jar + + true + + + org.apache.datasketches_java.tests + + + + + + + + ${java.runtime.version} + ${os.name} ${os.arch} ${os.version} + The Apache Software Foundation + ${project.groupId}:${project.artifactId} + ${git.branch} + ${git.commit.id.full} + ${git.commit.time} + ${git.build.user.email} + + + @@ -274,23 +369,45 @@ under the License. maven-javadoc-plugin ${maven-javadoc-plugin.version} + en_US ${project.reporting.outputDirectory} true public none + true -J${jvm.mem} -J${jvm.locale.language} -J${jvm.locale.country} -J${jvm.locale.encoding} + + + + ${java.runtime.version} + ${os.name} ${os.arch} ${os.version} + The Apache Software Foundation + ${project.groupId}:${project.artifactId} + ${git.branch} + ${git.commit.id.full} + ${git.commit.time} + ${git.build.user.email} + + + + + attach-javadocs - - jar - + package + jar @@ -301,6 +418,12 @@ under the License. ${maven-release-plugin.version} + + org.apache.maven.plugins + maven-resources-plugin + ${maven-resources-plugin.version} + + org.apache.maven.plugins maven-source-plugin @@ -309,18 +432,31 @@ under the License. attach-sources package - - jar-no-fork - + jar-no-fork attach-test-sources package - - test-jar-no-fork - + test-jar-no-fork + + + + + ${java.runtime.version} + ${os.name} ${os.arch} ${os.version} + The Apache Software Foundation + ${project.groupId}:${project.artifactId} + ${git.branch} + ${git.commit.id.full} + ${git.commit.time} + ${git.build.user.email} + + + @@ -328,16 +464,19 @@ under the License. maven-surefire-plugin ${maven-surefire-failsafe-plugins.version} - @{argLine} ${jvm.args} + @{argLine} ${jvm.args} -Dorg.slf4j.simpleLogger.log.org.testng=warn false + true false - false - ${project.build.directory}/test-output - - src/test/resources/testng.xml - - ${testng.generate-java-files},${testng.check-cpp-files},${testng.check-go-files},${testng.check-cpp-historical-files} + true + ${project.build.directory}/test-output/${maven.build.timestamp} false + + + verbose + 0 + + @@ -347,9 +486,7 @@ under the License. ${maven-toolchains-plugin.version} - - toolchain - + toolchain @@ -361,34 +498,39 @@ under the License. + + org.apache.rat apache-rat-plugin ${apache-rat-plugin.version} + true verify - - check - + check - ${project.basedir}/rat + false + ${project.build.directory}/rat true - - StandardCollection + StandardCollection **/*.yaml **/*.yml **/.* - **/test/resources/**/*.txt - **/git.properties + **/test-output/**/* + **/doc/** + **/docs/** **/*.sk LICENSE NOTICE **/*.code-workspace + **/*.txt + **/*.html + **/api-links.bin @@ -403,12 +545,6 @@ under the License. - - io.github.git-commit-id - git-commit-id-maven-plugin - ${git-commit-id-maven-plugin.version} - - org.jacoco @@ -431,6 +567,16 @@ under the License. + + org.sonatype.plugins + nexus-staging-maven-plugin + ${nexus-staging-maven-plugin.version} + + apache.releases.https + https://repository.apache.org/ + false + + @@ -438,19 +584,27 @@ under the License. org.apache.maven.plugins - maven-compiler-plugin + maven-assembly-plugin org.apache.maven.plugins - maven-deploy-plugin + maven-clean-plugin + + + + org.apache.maven.plugins maven-enforcer-plugin + + + + org.apache.maven.plugins maven-jar-plugin @@ -466,34 +620,32 @@ under the License. maven-release-plugin + + org.apache.maven.plugins maven-source-plugin - - org.apache.maven.plugins - maven-surefire-plugin - + org.apache.maven.plugins maven-toolchains-plugin - - org.apache.rat - apache-rat-plugin - + com.github.hazendaz.maven coveralls-maven-plugin + + - io.github.git-commit-id - git-commit-id-maven-plugin + org.apache.rat + apache-rat-plugin @@ -501,6 +653,8 @@ under the License. jacoco-maven-plugin + + @@ -512,141 +666,23 @@ under the License. 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 + Command: mvn clean deploy -Pnexus-jars -DskipTests=true Verify Command (from terminal): gpg -v --verify $ASC $FILE # dashdashverify --> nexus-jars - - - - io.github.git-commit-id - git-commit-id-maven-plugin - ${git-commit-id-maven-plugin.version} - - - get-the-git-infos - - revision - - initialize - - - - ${project.basedir}/.git - UTC - false - false - json - true - ${project.build.directory}/git.properties - - false - true - full - - git.branch - git.commit.id.full - git.commit.time - git.commit.user.email - git.tags - - - false - true - 7 - -dirty - true - true - - - - - - - org.apache.maven.plugins - maven-jar-plugin - ${maven-jar-plugin.version} - - - default-jar - - jar - - - - default-test-jar - - test-jar - - - - - - - false - false - true - true - - - org.apache.datasketches - The Apache Software Foundation - ${project.groupId}:${project.artifactId} - - - ${git.branch} - - ${git.commit.id.full} - - ${git.commit.time} - - ${git.commit.user.email} - - ${git.tags} - - - - - - - - org.apache.maven.plugins - maven-gpg-plugin - ${maven-gpg-plugin.version} - - - sign-artifacts - verify - - sign - - - - - - --verbose - - --personal-digest-preferences=SHA512 - - - - - - - - io.github.git-commit-id - git-commit-id-maven-plugin - + org.apache.maven.plugins - maven-jar-plugin + maven-gpg-plugin + - org.apache.maven.plugins - maven-gpg-plugin + org.sonatype.plugins + nexus-staging-maven-plugin + true @@ -655,73 +691,64 @@ under the License. generate-java-files - - - - org.apache.maven.plugins - maven-surefire-plugin - - ${testng.generate-java-files} - ${testng.check-cpp-files},${testng.check-go-files},${testng.check-cpp-historical-files} - - - - + + + org.apache.maven.plugins + maven-surefire-plugin + + ${testng.generate-java-files} + ${testng.check-cpp-files},${testng.check-go-files},${testng.check-cpp-historical-files} + + + check-cpp-files - - - - org.apache.maven.plugins - maven-surefire-plugin - - ${testng.check-cpp-files} - ${testng.generate-java-files},${testng.check-go-files},${testng.check-cpp-historical-files} - - - - + + + org.apache.maven.plugins + maven-surefire-plugin + + ${testng.check-cpp-files} + ${testng.generate-java-files},${testng.check-go-files},${testng.check-cpp-historical-files} + + + check-go-files - - - - org.apache.maven.plugins - maven-surefire-plugin - - ${testng.check-go-files} - ${testng.generate-java-files},${testng.check-cpp-files},${testng.check-cpp-historical-files} - - - - - + + + org.apache.maven.plugins + maven-surefire-plugin + + ${testng.check-go-files} + ${testng.generate-java-files},${testng.check-cpp-files},${testng.check-cpp-historical-files} + + + check-cpp-historical-files - - - - org.apache.maven.plugins - maven-surefire-plugin - - ${testng.check-cpp-historical-files} - ${testng.generate-java-files},${testng.check-go-files},${testng.check-cpp-files} - - - - + + + org.apache.maven.plugins + maven-surefire-plugin + + ${testng.check-cpp-historical-files} + ${testng.generate-java-files},${testng.check-go-files},${testng.check-cpp-files} + + + diff --git a/src/assembly/source-release.xml b/src/assembly/source-release.xml new file mode 100644 index 000000000..1d8d7ecb6 --- /dev/null +++ b/src/assembly/source-release.xml @@ -0,0 +1,46 @@ + + + source-release + + zip + + + + ${project.basedir} + / + true + + + **/.git/** + **/target/** + + + **/.vscode/** + **/.settings/** + **/.asf.yaml + **/.classpath + **/.project + **/serialization_test_data/** + + + + diff --git a/src/main/java/org/apache/datasketches/PackageDocumentation.java b/src/main/java/org/apache/datasketches/PackageDocumentation.java new file mode 100644 index 000000000..8b4d678e2 --- /dev/null +++ b/src/main/java/org/apache/datasketches/PackageDocumentation.java @@ -0,0 +1,25 @@ +/* + * 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. + */ +package org.apache.datasketches; + +/** + * Internal package marker to satisfy JDK Javadoc source requirements for empty packages in jar files. + */ +@SuppressWarnings("unused") +interface PackageDocumentation {} diff --git a/src/main/java/org/apache/datasketches/filters/PackageDocumentation.java b/src/main/java/org/apache/datasketches/filters/PackageDocumentation.java new file mode 100644 index 000000000..04d6e2544 --- /dev/null +++ b/src/main/java/org/apache/datasketches/filters/PackageDocumentation.java @@ -0,0 +1,25 @@ +/* + * 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. + */ +package org.apache.datasketches.filters; + +/** + * Internal package marker to satisfy JDK Javadoc source requirements for empty packages in jar files. + */ +@SuppressWarnings("unused") +interface PackageDocumentation {} diff --git a/tools/mvn_clean_install_or_deploy.sh b/tools/mvn_clean_install_or_deploy.sh new file mode 100755 index 000000000..ff3463175 --- /dev/null +++ b/tools/mvn_clean_install_or_deploy.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +set -e + +# Default goal to 'install' if no argument provided +# Otherwise specify 'deploy', in which case it also adds: -DskipTests" -Pnexus-jars +GOAL="${1:-install}" +shift 1 2>/dev/null || true + +# Set goal-specific defaults +EXTRA_ARGS=() +if [ "$GOAL" = "deploy" ]; then + EXTRA_ARGS=("-DskipTests" "-Pnexus-jars") +fi + +# Safe Git metadata extraction with fallbacks for non-git builds +if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then + BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) + [ "$BRANCH" = "HEAD" ] && BRANCH=$(git name-rev --name-only HEAD 2>/dev/null) + + COMMIT=$(git rev-parse HEAD 2>/dev/null || echo "unknown") + TIME=$(git log -1 --format=%cI 2>/dev/null || echo "unknown") + EMAIL=$(git config user.email 2>/dev/null) + [ -z "$EMAIL" ] && EMAIL="unknown" +else + BRANCH="source-release-no-git" + COMMIT="unknown" + TIME="unknown" + EMAIL="unknown" +fi + +# Execute Maven clean + target goal with injected system properties +exec mvn clean "$GOAL" \ + "${EXTRA_ARGS[@]}" \ + -Dgit.branch="${BRANCH:-source-release-no-git}" \ + -Dgit.commit.id.full="${COMMIT:-unknown}" \ + -Dgit.commit.time="${TIME:-unknown}" \ + -Dgit.build.user.email="${EMAIL:-unknown}" \ + "$@"