From 24840a5888f4800a9c567e090b3118ecb7129a6d Mon Sep 17 00:00:00 2001 From: Michael Grosse Huelsewiesche Date: Wed, 3 Dec 2025 15:03:35 -0500 Subject: [PATCH 01/16] [maven-release-plugin] prepare release analytics-parent-3.5.3 --- analytics-cli/pom.xml | 2 +- analytics-core/pom.xml | 2 +- analytics-sample/pom.xml | 2 +- analytics-spring-boot-starter/pom.xml | 2 +- analytics/pom.xml | 2 +- pom.xml | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/analytics-cli/pom.xml b/analytics-cli/pom.xml index d4341f18..4e706fc2 100644 --- a/analytics-cli/pom.xml +++ b/analytics-cli/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.3-SNAPSHOT + 3.5.3 analytics-cli diff --git a/analytics-core/pom.xml b/analytics-core/pom.xml index f3dc3d23..9f41b50d 100644 --- a/analytics-core/pom.xml +++ b/analytics-core/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.3-SNAPSHOT + 3.5.3 analytics-core diff --git a/analytics-sample/pom.xml b/analytics-sample/pom.xml index 8151af27..2f869b43 100644 --- a/analytics-sample/pom.xml +++ b/analytics-sample/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.3-SNAPSHOT + 3.5.3 analytics-sample diff --git a/analytics-spring-boot-starter/pom.xml b/analytics-spring-boot-starter/pom.xml index d5d70478..eb379552 100644 --- a/analytics-spring-boot-starter/pom.xml +++ b/analytics-spring-boot-starter/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.3-SNAPSHOT + 3.5.3 analytics-spring-boot-starter diff --git a/analytics/pom.xml b/analytics/pom.xml index 0ef7606b..6c56806c 100644 --- a/analytics/pom.xml +++ b/analytics/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.3-SNAPSHOT + 3.5.3 analytics diff --git a/pom.xml b/pom.xml index 22316d4b..ab9b4b1a 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ com.segment.analytics.java analytics-parent - 3.5.3-SNAPSHOT + 3.5.3 pom Analytics for Java (Parent) The hassle-free way to add analytics to your Android app. @@ -53,7 +53,7 @@ https://github.com/segmentio/analytics-java/ scm:git:https://github.com/segmentio/analytics-java.git scm:git:git@github.com:segmentio/analytics-java.git - HEAD + analytics-parent-3.5.3 From 4c641ba10c43bed4cd0ad96c292e3bc40be61574 Mon Sep 17 00:00:00 2001 From: Michael Grosse Huelsewiesche Date: Fri, 5 Dec 2025 05:39:27 -0500 Subject: [PATCH 02/16] Updating release for new sonatype repository --- .buildscript/settings.xml | 7 +------ analytics-cli/pom.xml | 2 +- analytics-core/pom.xml | 2 +- analytics-sample/pom.xml | 2 +- analytics-spring-boot-starter/pom.xml | 2 +- analytics/pom.xml | 2 +- pom.xml | 16 ++++++++++++++-- 7 files changed, 20 insertions(+), 13 deletions(-) diff --git a/.buildscript/settings.xml b/.buildscript/settings.xml index 97ec83d7..c75472b5 100644 --- a/.buildscript/settings.xml +++ b/.buildscript/settings.xml @@ -1,12 +1,7 @@ - sonatype-nexus-snapshots - ${env.CI_DEPLOY_USERNAME} - ${env.CI_DEPLOY_PASSWORD} - - - sonatype-nexus-staging + ossrh ${env.CI_DEPLOY_USERNAME} ${env.CI_DEPLOY_PASSWORD} diff --git a/analytics-cli/pom.xml b/analytics-cli/pom.xml index 4e706fc2..6bb39549 100644 --- a/analytics-cli/pom.xml +++ b/analytics-cli/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.3 + 3.5.4-SNAPSHOT analytics-cli diff --git a/analytics-core/pom.xml b/analytics-core/pom.xml index 9f41b50d..39a13b14 100644 --- a/analytics-core/pom.xml +++ b/analytics-core/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.3 + 3.5.4-SNAPSHOT analytics-core diff --git a/analytics-sample/pom.xml b/analytics-sample/pom.xml index 2f869b43..655b0fad 100644 --- a/analytics-sample/pom.xml +++ b/analytics-sample/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.3 + 3.5.4-SNAPSHOT analytics-sample diff --git a/analytics-spring-boot-starter/pom.xml b/analytics-spring-boot-starter/pom.xml index eb379552..8a08e83d 100644 --- a/analytics-spring-boot-starter/pom.xml +++ b/analytics-spring-boot-starter/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.3 + 3.5.4-SNAPSHOT analytics-spring-boot-starter diff --git a/analytics/pom.xml b/analytics/pom.xml index 6c56806c..64f0a53e 100644 --- a/analytics/pom.xml +++ b/analytics/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.3 + 3.5.4-SNAPSHOT analytics diff --git a/pom.xml b/pom.xml index ab9b4b1a..80a9df16 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ com.segment.analytics.java analytics-parent - 3.5.3 + 3.5.4-SNAPSHOT pom Analytics for Java (Parent) The hassle-free way to add analytics to your Android app. @@ -68,6 +68,18 @@ + + + ossrh + https://central.sonatype.com/repository/maven-snapshots/ + + + ossrh + https://ossrh-staging-api.central.sonatype.com/service/local/ + + + + @@ -243,7 +255,7 @@ org.apache.maven.plugins maven-release-plugin - 2.5.3 + 3.3.0 true From de5092a3965610a7c465113298bd442896c8584f Mon Sep 17 00:00:00 2001 From: Michael Grosse Huelsewiesche Date: Fri, 5 Dec 2025 05:40:07 -0500 Subject: [PATCH 03/16] Updating changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32676a9e..74b4fe12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +# Version 3.5.4 (Dec 5, 2025) +- Updating release for new sonatype repository + # Version 3.5.3 (Dec 3, 2025) - [New](https://github.com/segmentio/analytics-java/pull/526) Improved shutdown process - [New](https://github.com/segmentio/analytics-java/pull/517) Support (de)serializing Instant objects to support newer java versions From 39642e844aa82b2d2fce1d54e4502c7693954353 Mon Sep 17 00:00:00 2001 From: Michael Grosse Huelsewiesche Date: Fri, 5 Dec 2025 05:42:52 -0500 Subject: [PATCH 04/16] [maven-release-plugin] prepare release analytics-parent-3.5.4 [ci skip] --- analytics-cli/pom.xml | 2 +- analytics-core/pom.xml | 2 +- analytics-sample/pom.xml | 2 +- analytics-spring-boot-starter/pom.xml | 2 +- analytics/pom.xml | 2 +- pom.xml | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/analytics-cli/pom.xml b/analytics-cli/pom.xml index 6bb39549..a21aff93 100644 --- a/analytics-cli/pom.xml +++ b/analytics-cli/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.4-SNAPSHOT + 3.5.4 analytics-cli diff --git a/analytics-core/pom.xml b/analytics-core/pom.xml index 39a13b14..c3085782 100644 --- a/analytics-core/pom.xml +++ b/analytics-core/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4-SNAPSHOT + 3.5.4 analytics-core diff --git a/analytics-sample/pom.xml b/analytics-sample/pom.xml index 655b0fad..67f24a68 100644 --- a/analytics-sample/pom.xml +++ b/analytics-sample/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.4-SNAPSHOT + 3.5.4 analytics-sample diff --git a/analytics-spring-boot-starter/pom.xml b/analytics-spring-boot-starter/pom.xml index 8a08e83d..39621385 100644 --- a/analytics-spring-boot-starter/pom.xml +++ b/analytics-spring-boot-starter/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4-SNAPSHOT + 3.5.4 analytics-spring-boot-starter diff --git a/analytics/pom.xml b/analytics/pom.xml index 64f0a53e..554faf8e 100644 --- a/analytics/pom.xml +++ b/analytics/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4-SNAPSHOT + 3.5.4 analytics diff --git a/pom.xml b/pom.xml index 80a9df16..06e9d661 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ com.segment.analytics.java analytics-parent - 3.5.4-SNAPSHOT + 3.5.4 pom Analytics for Java (Parent) The hassle-free way to add analytics to your Android app. @@ -53,7 +53,7 @@ https://github.com/segmentio/analytics-java/ scm:git:https://github.com/segmentio/analytics-java.git scm:git:git@github.com:segmentio/analytics-java.git - analytics-parent-3.5.3 + analytics-parent-3.5.4 From 0da836eac82ef607d56a5fee317e199fb25f1037 Mon Sep 17 00:00:00 2001 From: Michael Grosse Huelsewiesche Date: Fri, 5 Dec 2025 05:42:54 -0500 Subject: [PATCH 05/16] [maven-release-plugin] prepare for next development iteration --- analytics-cli/pom.xml | 2 +- analytics-core/pom.xml | 2 +- analytics-sample/pom.xml | 2 +- analytics-spring-boot-starter/pom.xml | 2 +- analytics/pom.xml | 2 +- pom.xml | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/analytics-cli/pom.xml b/analytics-cli/pom.xml index a21aff93..2576cdbb 100644 --- a/analytics-cli/pom.xml +++ b/analytics-cli/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.4 + 3.5.5-SNAPSHOT analytics-cli diff --git a/analytics-core/pom.xml b/analytics-core/pom.xml index c3085782..29f007d3 100644 --- a/analytics-core/pom.xml +++ b/analytics-core/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4 + 3.5.5-SNAPSHOT analytics-core diff --git a/analytics-sample/pom.xml b/analytics-sample/pom.xml index 67f24a68..c54ab84f 100644 --- a/analytics-sample/pom.xml +++ b/analytics-sample/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.4 + 3.5.5-SNAPSHOT analytics-sample diff --git a/analytics-spring-boot-starter/pom.xml b/analytics-spring-boot-starter/pom.xml index 39621385..7eec23ae 100644 --- a/analytics-spring-boot-starter/pom.xml +++ b/analytics-spring-boot-starter/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4 + 3.5.5-SNAPSHOT analytics-spring-boot-starter diff --git a/analytics/pom.xml b/analytics/pom.xml index 554faf8e..faa21a0c 100644 --- a/analytics/pom.xml +++ b/analytics/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4 + 3.5.5-SNAPSHOT analytics diff --git a/pom.xml b/pom.xml index 06e9d661..3a2c6a19 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ com.segment.analytics.java analytics-parent - 3.5.4 + 3.5.5-SNAPSHOT pom Analytics for Java (Parent) The hassle-free way to add analytics to your Android app. @@ -53,7 +53,7 @@ https://github.com/segmentio/analytics-java/ scm:git:https://github.com/segmentio/analytics-java.git scm:git:git@github.com:segmentio/analytics-java.git - analytics-parent-3.5.4 + analytics-parent-3.5.3 From 1cd837f9ff7a9f065ac6f44243e5010942d3b35e Mon Sep 17 00:00:00 2001 From: Michael Grosse Huelsewiesche Date: Fri, 5 Dec 2025 05:58:19 -0500 Subject: [PATCH 06/16] Trying fixed staging url --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3a2c6a19..2025f8b8 100644 --- a/pom.xml +++ b/pom.xml @@ -75,7 +75,7 @@ ossrh - https://ossrh-staging-api.central.sonatype.com/service/local/ + https://ossrh-staging-api.central.sonatype.com/service/local/staging/deploy/maven2/ From 6affaf4aba05e0e7f0adf9a74a2ab43fe28e8a0f Mon Sep 17 00:00:00 2001 From: Michael Grosse Huelsewiesche Date: Wed, 17 Dec 2025 10:35:51 -0500 Subject: [PATCH 07/16] [maven-release-plugin] prepare release analytics-parent-3.5.4 [ci skip] --- analytics-cli/pom.xml | 2 +- analytics-core/pom.xml | 2 +- analytics-sample/pom.xml | 2 +- analytics-spring-boot-starter/pom.xml | 2 +- analytics/pom.xml | 2 +- pom.xml | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/analytics-cli/pom.xml b/analytics-cli/pom.xml index 2576cdbb..a21aff93 100644 --- a/analytics-cli/pom.xml +++ b/analytics-cli/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.5-SNAPSHOT + 3.5.4 analytics-cli diff --git a/analytics-core/pom.xml b/analytics-core/pom.xml index 29f007d3..c3085782 100644 --- a/analytics-core/pom.xml +++ b/analytics-core/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.5-SNAPSHOT + 3.5.4 analytics-core diff --git a/analytics-sample/pom.xml b/analytics-sample/pom.xml index c54ab84f..67f24a68 100644 --- a/analytics-sample/pom.xml +++ b/analytics-sample/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.5-SNAPSHOT + 3.5.4 analytics-sample diff --git a/analytics-spring-boot-starter/pom.xml b/analytics-spring-boot-starter/pom.xml index 7eec23ae..39621385 100644 --- a/analytics-spring-boot-starter/pom.xml +++ b/analytics-spring-boot-starter/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.5-SNAPSHOT + 3.5.4 analytics-spring-boot-starter diff --git a/analytics/pom.xml b/analytics/pom.xml index faa21a0c..554faf8e 100644 --- a/analytics/pom.xml +++ b/analytics/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.5-SNAPSHOT + 3.5.4 analytics diff --git a/pom.xml b/pom.xml index 2025f8b8..d5cca4d3 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ com.segment.analytics.java analytics-parent - 3.5.5-SNAPSHOT + 3.5.4 pom Analytics for Java (Parent) The hassle-free way to add analytics to your Android app. @@ -53,7 +53,7 @@ https://github.com/segmentio/analytics-java/ scm:git:https://github.com/segmentio/analytics-java.git scm:git:git@github.com:segmentio/analytics-java.git - analytics-parent-3.5.3 + analytics-parent-3.5.4 From b56b95605156b89bc6c4f8d221754c2bb89f5c57 Mon Sep 17 00:00:00 2001 From: Michael Grosse Huelsewiesche Date: Wed, 17 Dec 2025 10:40:12 -0500 Subject: [PATCH 08/16] [maven-release-plugin] rollback the release of analytics-parent-3.5.4 --- analytics-cli/pom.xml | 2 +- analytics-core/pom.xml | 2 +- analytics-sample/pom.xml | 2 +- analytics-spring-boot-starter/pom.xml | 2 +- analytics/pom.xml | 2 +- pom.xml | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/analytics-cli/pom.xml b/analytics-cli/pom.xml index a21aff93..2576cdbb 100644 --- a/analytics-cli/pom.xml +++ b/analytics-cli/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.4 + 3.5.5-SNAPSHOT analytics-cli diff --git a/analytics-core/pom.xml b/analytics-core/pom.xml index c3085782..29f007d3 100644 --- a/analytics-core/pom.xml +++ b/analytics-core/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4 + 3.5.5-SNAPSHOT analytics-core diff --git a/analytics-sample/pom.xml b/analytics-sample/pom.xml index 67f24a68..c54ab84f 100644 --- a/analytics-sample/pom.xml +++ b/analytics-sample/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.4 + 3.5.5-SNAPSHOT analytics-sample diff --git a/analytics-spring-boot-starter/pom.xml b/analytics-spring-boot-starter/pom.xml index 39621385..7eec23ae 100644 --- a/analytics-spring-boot-starter/pom.xml +++ b/analytics-spring-boot-starter/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4 + 3.5.5-SNAPSHOT analytics-spring-boot-starter diff --git a/analytics/pom.xml b/analytics/pom.xml index 554faf8e..faa21a0c 100644 --- a/analytics/pom.xml +++ b/analytics/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4 + 3.5.5-SNAPSHOT analytics diff --git a/pom.xml b/pom.xml index d5cca4d3..2025f8b8 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ com.segment.analytics.java analytics-parent - 3.5.4 + 3.5.5-SNAPSHOT pom Analytics for Java (Parent) The hassle-free way to add analytics to your Android app. @@ -53,7 +53,7 @@ https://github.com/segmentio/analytics-java/ scm:git:https://github.com/segmentio/analytics-java.git scm:git:git@github.com:segmentio/analytics-java.git - analytics-parent-3.5.4 + analytics-parent-3.5.3 From 22862ad22886b3ae82b7e9ad438cc4fc354149da Mon Sep 17 00:00:00 2001 From: Michael Grosse Huelsewiesche Date: Wed, 17 Dec 2025 10:51:50 -0500 Subject: [PATCH 09/16] [maven-release-plugin] prepare release analytics-parent-3.5.4 [ci skip] --- analytics-cli/pom.xml | 2 +- analytics-core/pom.xml | 2 +- analytics-sample/pom.xml | 2 +- analytics-spring-boot-starter/pom.xml | 2 +- analytics/pom.xml | 2 +- pom.xml | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/analytics-cli/pom.xml b/analytics-cli/pom.xml index 2576cdbb..a21aff93 100644 --- a/analytics-cli/pom.xml +++ b/analytics-cli/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.5-SNAPSHOT + 3.5.4 analytics-cli diff --git a/analytics-core/pom.xml b/analytics-core/pom.xml index 29f007d3..c3085782 100644 --- a/analytics-core/pom.xml +++ b/analytics-core/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.5-SNAPSHOT + 3.5.4 analytics-core diff --git a/analytics-sample/pom.xml b/analytics-sample/pom.xml index c54ab84f..67f24a68 100644 --- a/analytics-sample/pom.xml +++ b/analytics-sample/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.5-SNAPSHOT + 3.5.4 analytics-sample diff --git a/analytics-spring-boot-starter/pom.xml b/analytics-spring-boot-starter/pom.xml index 7eec23ae..39621385 100644 --- a/analytics-spring-boot-starter/pom.xml +++ b/analytics-spring-boot-starter/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.5-SNAPSHOT + 3.5.4 analytics-spring-boot-starter diff --git a/analytics/pom.xml b/analytics/pom.xml index faa21a0c..554faf8e 100644 --- a/analytics/pom.xml +++ b/analytics/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.5-SNAPSHOT + 3.5.4 analytics diff --git a/pom.xml b/pom.xml index 2025f8b8..d5cca4d3 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ com.segment.analytics.java analytics-parent - 3.5.5-SNAPSHOT + 3.5.4 pom Analytics for Java (Parent) The hassle-free way to add analytics to your Android app. @@ -53,7 +53,7 @@ https://github.com/segmentio/analytics-java/ scm:git:https://github.com/segmentio/analytics-java.git scm:git:git@github.com:segmentio/analytics-java.git - analytics-parent-3.5.3 + analytics-parent-3.5.4 From 6cd445fcd934c8a7ecb3882f903bf990162069d0 Mon Sep 17 00:00:00 2001 From: Michael Grosse Huelsewiesche Date: Wed, 17 Dec 2025 10:51:53 -0500 Subject: [PATCH 10/16] [maven-release-plugin] prepare for next development iteration --- analytics-cli/pom.xml | 2 +- analytics-core/pom.xml | 2 +- analytics-sample/pom.xml | 2 +- analytics-spring-boot-starter/pom.xml | 2 +- analytics/pom.xml | 2 +- pom.xml | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/analytics-cli/pom.xml b/analytics-cli/pom.xml index a21aff93..2576cdbb 100644 --- a/analytics-cli/pom.xml +++ b/analytics-cli/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.4 + 3.5.5-SNAPSHOT analytics-cli diff --git a/analytics-core/pom.xml b/analytics-core/pom.xml index c3085782..29f007d3 100644 --- a/analytics-core/pom.xml +++ b/analytics-core/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4 + 3.5.5-SNAPSHOT analytics-core diff --git a/analytics-sample/pom.xml b/analytics-sample/pom.xml index 67f24a68..c54ab84f 100644 --- a/analytics-sample/pom.xml +++ b/analytics-sample/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.4 + 3.5.5-SNAPSHOT analytics-sample diff --git a/analytics-spring-boot-starter/pom.xml b/analytics-spring-boot-starter/pom.xml index 39621385..7eec23ae 100644 --- a/analytics-spring-boot-starter/pom.xml +++ b/analytics-spring-boot-starter/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4 + 3.5.5-SNAPSHOT analytics-spring-boot-starter diff --git a/analytics/pom.xml b/analytics/pom.xml index 554faf8e..faa21a0c 100644 --- a/analytics/pom.xml +++ b/analytics/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4 + 3.5.5-SNAPSHOT analytics diff --git a/pom.xml b/pom.xml index d5cca4d3..2025f8b8 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ com.segment.analytics.java analytics-parent - 3.5.4 + 3.5.5-SNAPSHOT pom Analytics for Java (Parent) The hassle-free way to add analytics to your Android app. @@ -53,7 +53,7 @@ https://github.com/segmentio/analytics-java/ scm:git:https://github.com/segmentio/analytics-java.git scm:git:git@github.com:segmentio/analytics-java.git - analytics-parent-3.5.4 + analytics-parent-3.5.3 From 9c420e26e1806cbcc64f5b105d3e0f2f071dcb84 Mon Sep 17 00:00:00 2001 From: Michael Grosse Huelsewiesche Date: Wed, 7 Jan 2026 17:01:13 -0500 Subject: [PATCH 11/16] Rolling back to snapshot --- analytics-cli/pom.xml | 2 +- analytics-core/pom.xml | 2 +- analytics-sample/pom.xml | 2 +- analytics-spring-boot-starter/pom.xml | 2 +- analytics/pom.xml | 2 +- pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/analytics-cli/pom.xml b/analytics-cli/pom.xml index 2576cdbb..6bb39549 100644 --- a/analytics-cli/pom.xml +++ b/analytics-cli/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.5-SNAPSHOT + 3.5.4-SNAPSHOT analytics-cli diff --git a/analytics-core/pom.xml b/analytics-core/pom.xml index 29f007d3..39a13b14 100644 --- a/analytics-core/pom.xml +++ b/analytics-core/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.5-SNAPSHOT + 3.5.4-SNAPSHOT analytics-core diff --git a/analytics-sample/pom.xml b/analytics-sample/pom.xml index c54ab84f..655b0fad 100644 --- a/analytics-sample/pom.xml +++ b/analytics-sample/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.5-SNAPSHOT + 3.5.4-SNAPSHOT analytics-sample diff --git a/analytics-spring-boot-starter/pom.xml b/analytics-spring-boot-starter/pom.xml index 7eec23ae..8a08e83d 100644 --- a/analytics-spring-boot-starter/pom.xml +++ b/analytics-spring-boot-starter/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.5-SNAPSHOT + 3.5.4-SNAPSHOT analytics-spring-boot-starter diff --git a/analytics/pom.xml b/analytics/pom.xml index faa21a0c..64f0a53e 100644 --- a/analytics/pom.xml +++ b/analytics/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.5-SNAPSHOT + 3.5.4-SNAPSHOT analytics diff --git a/pom.xml b/pom.xml index 2025f8b8..c3ac80ec 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ com.segment.analytics.java analytics-parent - 3.5.5-SNAPSHOT + 3.5.4-SNAPSHOT pom Analytics for Java (Parent) The hassle-free way to add analytics to your Android app. From bdfed02a661e3fd46e6a2264891987ee39171fcd Mon Sep 17 00:00:00 2001 From: Michael Grosse Huelsewiesche Date: Wed, 7 Jan 2026 17:29:16 -0500 Subject: [PATCH 12/16] [maven-release-plugin] prepare release analytics-parent-3.5.4 [ci skip] --- analytics-cli/pom.xml | 2 +- analytics-core/pom.xml | 7 ++++++- analytics-sample/pom.xml | 2 +- analytics-spring-boot-starter/pom.xml | 2 +- analytics/pom.xml | 2 +- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/analytics-cli/pom.xml b/analytics-cli/pom.xml index 6bb39549..a21aff93 100644 --- a/analytics-cli/pom.xml +++ b/analytics-cli/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.4-SNAPSHOT + 3.5.4 analytics-cli diff --git a/analytics-core/pom.xml b/analytics-core/pom.xml index 39a13b14..8211d48f 100644 --- a/analytics-core/pom.xml +++ b/analytics-core/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4-SNAPSHOT + 3.5.4 analytics-core @@ -45,6 +45,11 @@ jakarta.annotation-api 2.1.1 + + javax.annotation + javax.annotation-api + 1.3.2 + junit diff --git a/analytics-sample/pom.xml b/analytics-sample/pom.xml index 655b0fad..67f24a68 100644 --- a/analytics-sample/pom.xml +++ b/analytics-sample/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.4-SNAPSHOT + 3.5.4 analytics-sample diff --git a/analytics-spring-boot-starter/pom.xml b/analytics-spring-boot-starter/pom.xml index 8a08e83d..39621385 100644 --- a/analytics-spring-boot-starter/pom.xml +++ b/analytics-spring-boot-starter/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4-SNAPSHOT + 3.5.4 analytics-spring-boot-starter diff --git a/analytics/pom.xml b/analytics/pom.xml index 64f0a53e..554faf8e 100644 --- a/analytics/pom.xml +++ b/analytics/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4-SNAPSHOT + 3.5.4 analytics From 8db4c8c914b139b77951cbcfe97c11def006f5cc Mon Sep 17 00:00:00 2001 From: Michael Grosse Huelsewiesche Date: Thu, 8 Jan 2026 10:42:11 -0500 Subject: [PATCH 13/16] Update release plugin (#529) * Changing release plugin * Deploy working * Rolling back to snapshot * [maven-release-plugin] prepare release analytics-parent-3.5.4 * [maven-release-plugin] prepare for next development iteration * putting back release instructions --- .buildscript/settings.xml | 2 +- .gitignore | 4 +- RELEASING.md | 2 +- analytics-cli/pom.xml | 30 ++++++ .../src/main/kotlin/cli/JavadocStub.java | 8 ++ analytics-core/pom.xml | 45 +++++++++ analytics-sample/pom.xml | 28 ++++++ analytics-spring-boot-starter/pom.xml | 28 ++++++ analytics/pom.xml | 39 ++++++++ pom.xml | 91 +++++++++++++------ 10 files changed, 248 insertions(+), 29 deletions(-) create mode 100644 analytics-cli/src/main/kotlin/cli/JavadocStub.java diff --git a/.buildscript/settings.xml b/.buildscript/settings.xml index c75472b5..81d298ff 100644 --- a/.buildscript/settings.xml +++ b/.buildscript/settings.xml @@ -1,7 +1,7 @@ - ossrh + central ${env.CI_DEPLOY_USERNAME} ${env.CI_DEPLOY_PASSWORD} diff --git a/.gitignore b/.gitignore index ea323992..4041df6b 100644 --- a/.gitignore +++ b/.gitignore @@ -128,4 +128,6 @@ atlassian-ide-plugin.xml .classpath .project .settings/ -.factorypath \ No newline at end of file +.factorypath + +.vscode diff --git a/RELEASING.md b/RELEASING.md index 744ce63c..5d59be70 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -5,4 +5,4 @@ Releasing 2. Update the `CHANGELOG.md` for the impending release. 3. `mvn clean release:clean` 4. `mvn release:prepare release:perform` - 5. Visit [Sonatype Nexus](https://oss.sonatype.org/) and promote the artifact. + 4. Visit the [Maven Central Portal](https://central.sonatype.com/publishing/deployments) to review and publish the release. diff --git a/analytics-cli/pom.xml b/analytics-cli/pom.xml index 2576cdbb..67e1d4b9 100644 --- a/analytics-cli/pom.xml +++ b/analytics-cli/pom.xml @@ -9,13 +9,42 @@ 3.5.5-SNAPSHOT + com.segment.analytics.java analytics-cli + 3.5.5-SNAPSHOT Analytics Java CLI + Command-line interface for Segment Analytics for Java. + https://github.com/segmentio/analytics-java + + + + The MIT License (MIT) + http://opensource.org/licenses/MIT + + + + + https://github.com/segmentio/analytics-java/ + scm:git:https://github.com/segmentio/analytics-java.git + scm:git:git@github.com:segmentio/analytics-java.git + analytics-parent-3.5.4 + + + + + segment + Segment + Segment + https://segment.com + + + org.jetbrains.kotlin kotlin-stdlib + ${kotlin.version} com.segment.analytics.java @@ -25,6 +54,7 @@ com.offbytwo docopt + ${docopt.version} diff --git a/analytics-cli/src/main/kotlin/cli/JavadocStub.java b/analytics-cli/src/main/kotlin/cli/JavadocStub.java new file mode 100644 index 00000000..403beaa7 --- /dev/null +++ b/analytics-cli/src/main/kotlin/cli/JavadocStub.java @@ -0,0 +1,8 @@ +package cli; + +/** + * Placeholder class to generate a Javadoc JAR for the CLI artifact. + */ +public final class JavadocStub { + private JavadocStub() {} +} diff --git a/analytics-core/pom.xml b/analytics-core/pom.xml index 29f007d3..2797d93c 100644 --- a/analytics-core/pom.xml +++ b/analytics-core/pom.xml @@ -9,35 +9,69 @@ 3.5.5-SNAPSHOT + com.segment.analytics.java analytics-core + 3.5.5-SNAPSHOT Analytics for Java (Core) + Core runtime for Segment Analytics for Java. + https://github.com/segmentio/analytics-java + + + + The MIT License (MIT) + http://opensource.org/licenses/MIT + + + + + https://github.com/segmentio/analytics-java/ + scm:git:https://github.com/segmentio/analytics-java.git + scm:git:git@github.com:segmentio/analytics-java.git + analytics-parent-3.5.4 + + + + + segment + Segment + Segment + https://segment.com + + + com.squareup.retrofit2 retrofit + ${retrofit.version} com.google.code.gson gson + ${gson.version} com.google.code.findbugs findbugs + ${findbugs.version} provided com.google.auto.value auto-value + ${auto.version} provided com.google.auto.value auto-value-annotations + ${auto.version} com.google.guava guava + ${guava.version} provided @@ -46,29 +80,40 @@ 2.1.1 + + javax.annotation + javax.annotation-api + 1.3.2 + + junit junit + ${junit.version} test com.squareup.burst burst-junit4 + ${burst.version} test com.squareup.burst burst + ${burst.version} test org.assertj assertj-core + ${assertj.version} test org.mockito mockito-core + ${mockito.version} test diff --git a/analytics-sample/pom.xml b/analytics-sample/pom.xml index c54ab84f..4794d406 100644 --- a/analytics-sample/pom.xml +++ b/analytics-sample/pom.xml @@ -9,9 +9,37 @@ 3.5.5-SNAPSHOT + com.segment.analytics.java analytics-sample + 3.5.5-SNAPSHOT Analytics Sample + Sample application demonstrating Segment Analytics for Java. + https://github.com/segmentio/analytics-java + + + + The MIT License (MIT) + http://opensource.org/licenses/MIT + + + + + https://github.com/segmentio/analytics-java/ + scm:git:https://github.com/segmentio/analytics-java.git + scm:git:git@github.com:segmentio/analytics-java.git + analytics-parent-3.5.4 + + + + + segment + Segment + Segment + https://segment.com + + + com.segment.analytics.java diff --git a/analytics-spring-boot-starter/pom.xml b/analytics-spring-boot-starter/pom.xml index 7eec23ae..4ebc8959 100644 --- a/analytics-spring-boot-starter/pom.xml +++ b/analytics-spring-boot-starter/pom.xml @@ -9,9 +9,37 @@ 3.5.5-SNAPSHOT + com.segment.analytics.java analytics-spring-boot-starter + 3.5.5-SNAPSHOT Spring Boot starter for Segment Analytics for Java + Spring Boot auto-configuration for Segment Analytics for Java. + https://github.com/segmentio/analytics-java + + + + The MIT License (MIT) + http://opensource.org/licenses/MIT + + + + + https://github.com/segmentio/analytics-java/ + scm:git:https://github.com/segmentio/analytics-java.git + scm:git:git@github.com:segmentio/analytics-java.git + analytics-parent-3.5.4 + + + + + segment + Segment + Segment + https://segment.com + + + diff --git a/analytics/pom.xml b/analytics/pom.xml index faa21a0c..05e36fbb 100644 --- a/analytics/pom.xml +++ b/analytics/pom.xml @@ -9,9 +9,37 @@ 3.5.5-SNAPSHOT + com.segment.analytics.java analytics + 3.5.5-SNAPSHOT Analytics for Java + The hassle-free way to add analytics to your Java app. + https://github.com/segmentio/analytics-java + + + + The MIT License (MIT) + http://opensource.org/licenses/MIT + + + + + https://github.com/segmentio/analytics-java/ + scm:git:https://github.com/segmentio/analytics-java.git + scm:git:git@github.com:segmentio/analytics-java.git + analytics-parent-3.5.4 + + + + + segment + Segment + Segment + https://segment.com + + + com.segment.analytics.java @@ -21,51 +49,62 @@ com.squareup.okhttp3 okhttp + ${okhttp.version} com.squareup.okhttp3 logging-interceptor + ${logging.version} com.squareup.retrofit2 converter-gson + 2.9.0 com.squareup.retrofit2 retrofit-mock + ${retrofit.version} com.google.code.findbugs findbugs + ${findbugs.version} provided com.segment.backo backo + ${backo.version} junit junit + ${junit.version} test com.squareup.burst burst-junit4 + ${burst.version} test com.squareup.burst burst + ${burst.version} test org.assertj assertj-core + ${assertj.version} test org.mockito mockito-core + ${mockito.version} test diff --git a/pom.xml b/pom.xml index 2025f8b8..74338352 100644 --- a/pom.xml +++ b/pom.xml @@ -3,12 +3,6 @@ 4.0.0 - - org.sonatype.oss - oss-parent - 7 - - com.segment.analytics.java analytics-parent 3.5.5-SNAPSHOT @@ -17,6 +11,15 @@ The hassle-free way to add analytics to your Android app. https://github.com/segmentio/analytics-java + + + segment + Segment + Segment + https://segment.com + + + analytics-core analytics @@ -42,6 +45,9 @@ 2.7.5 0.6.0.20150202 + + true + 4.13.2 1.2.0 @@ -53,7 +59,7 @@ https://github.com/segmentio/analytics-java/ scm:git:https://github.com/segmentio/analytics-java.git scm:git:git@github.com:segmentio/analytics-java.git - analytics-parent-3.5.3 + analytics-parent-3.5.4 @@ -68,18 +74,6 @@ - - - ossrh - https://central.sonatype.com/repository/maven-snapshots/ - - - ossrh - https://ossrh-staging-api.central.sonatype.com/service/local/staging/deploy/maven2/ - - - - @@ -252,16 +246,21 @@ + + org.sonatype.central + central-publishing-maven-plugin + 0.9.0 + true + + central + + org.apache.maven.plugins - maven-release-plugin - 3.3.0 + maven-deploy-plugin + 3.0.0 - true - - pom.xml - .buildscript/settings.xml - + true @@ -299,6 +298,46 @@ false + + org.apache.maven.plugins + maven-source-plugin + 3.3.1 + + + attach-sources + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.6.3 + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 3.2.7 + + + sign-artifacts + verify + + sign + + + + From b8fac6ea3b54179d53d34f14da97f7be85c1959a Mon Sep 17 00:00:00 2001 From: Michael Grosse Huelsewiesche Date: Fri, 9 Jan 2026 16:20:07 -0500 Subject: [PATCH 14/16] Moving gpg signing to release deploy --- .buildscript/deploy_snapshot.sh | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.buildscript/deploy_snapshot.sh b/.buildscript/deploy_snapshot.sh index e02d3c73..2d98a91b 100755 --- a/.buildscript/deploy_snapshot.sh +++ b/.buildscript/deploy_snapshot.sh @@ -23,6 +23,6 @@ elif [ "$CIRCLE_BRANCH" != "$BRANCH" ]; then echo "Skipping snapshot deployment: wrong branch. Expected '$BRANCH' but was '$CIRCLE_BRANCH'." else echo "Deploying snapshot..." - mvn clean source:jar javadoc:jar deploy --settings=".buildscript/settings.xml" -Dmaven.test.skip=true + mvn clean source:jar javadoc:jar deploy --settings=".buildscript/settings.xml" -Dmaven.test.skip=true -Dgpg.skip=true echo "Snapshot deployed!" fi diff --git a/pom.xml b/pom.xml index 9cba4a87..58d2d09f 100644 --- a/pom.xml +++ b/pom.xml @@ -331,7 +331,7 @@ sign-artifacts - verify + deploy sign From f85716cdd4a261e28f21818e16b16ae1cd6590ab Mon Sep 17 00:00:00 2001 From: Michael Grosse Huelsewiesche Date: Fri, 9 Jan 2026 17:27:58 -0500 Subject: [PATCH 15/16] Fixing versions --- analytics-cli/pom.xml | 2 +- analytics-core/effective-analytics-core.xml | 633 ++++++++++++++++++++ analytics-core/pom.xml | 2 +- analytics-sample/pom.xml | 2 +- analytics-spring-boot-starter/pom.xml | 2 +- analytics/pom.xml | 2 +- pom.xml | 2 +- 7 files changed, 639 insertions(+), 6 deletions(-) create mode 100644 analytics-core/effective-analytics-core.xml diff --git a/analytics-cli/pom.xml b/analytics-cli/pom.xml index c9371aba..67e1d4b9 100644 --- a/analytics-cli/pom.xml +++ b/analytics-cli/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.4 + 3.5.5-SNAPSHOT com.segment.analytics.java diff --git a/analytics-core/effective-analytics-core.xml b/analytics-core/effective-analytics-core.xml new file mode 100644 index 00000000..3cb09524 --- /dev/null +++ b/analytics-core/effective-analytics-core.xml @@ -0,0 +1,633 @@ + + + + + + + + + + + + + + + 4.0.0 + + com.segment.analytics.java + analytics-parent + 3.5.4 + + com.segment.analytics.java + analytics-core + 3.5.5-SNAPSHOT + Analytics for Java (Core) + Core runtime for Segment Analytics for Java. + https://github.com/segmentio/analytics-java + + + The MIT License (MIT) + http://opensource.org/licenses/MIT + + + + + segment + Segment + Segment + https://segment.com + + + + scm:git:https://github.com/segmentio/analytics-java.git + scm:git:git@github.com:segmentio/analytics-java.git + analytics-parent-3.5.4 + https://github.com/segmentio/analytics-java/ + + + GitHub Issues + https://github.com/segmentio/analytics-java/issues + + + 3.24.2 + 1.10.1 + 1.0.0 + 1.2.0 + 0.6.0.20150202 + 3.0.1 + 2.9.1 + 33.4.0-jre + 8 + 4.13.2 + 1.9.0 + 4.10.0 + true + 4.11.0 + 4.12.0 + UTF-8 + 2.11.0 + 2.27.2 + 2.7.5 + + + + + com.squareup.retrofit2 + retrofit + 2.11.0 + + + com.squareup.retrofit2 + converter-gson + 2.9.0 + + + com.squareup.retrofit2 + retrofit-mock + 2.11.0 + + + com.google.auto.value + auto-value + 1.10.1 + provided + + + com.google.auto.value + auto-value-annotations + 1.10.1 + + + com.google.code.findbugs + findbugs + 3.0.1 + + + com.google.code.gson + gson + 2.9.1 + + + com.squareup.okhttp3 + okhttp + 4.12.0 + + + com.squareup.okhttp3 + logging-interceptor + 4.10.0 + + + com.google.guava + guava + 33.4.0-jre + + + com.segment.backo + backo + 1.0.0 + + + junit + junit + 4.13.2 + + + com.squareup.burst + burst-junit4 + 1.2.0 + + + com.squareup.burst + burst + 1.2.0 + + + org.assertj + assertj-core + 3.24.2 + + + org.mockito + mockito-core + 4.11.0 + + + com.offbytwo + docopt + 0.6.0.20150202 + + + org.jetbrains.kotlin + kotlin-stdlib + 1.9.0 + + + + + + com.squareup.retrofit2 + retrofit + 2.11.0 + compile + + + com.google.code.gson + gson + 2.9.1 + compile + + + com.google.code.findbugs + findbugs + 3.0.1 + provided + + + com.google.auto.value + auto-value + 1.10.1 + provided + + + com.google.auto.value + auto-value-annotations + 1.10.1 + compile + + + com.google.guava + guava + 33.4.0-jre + provided + + + jakarta.annotation + jakarta.annotation-api + 2.1.1 + compile + + + javax.annotation + javax.annotation-api + 1.3.2 + compile + + + junit + junit + 4.13.2 + test + + + com.squareup.burst + burst-junit4 + 1.2.0 + test + + + com.squareup.burst + burst + 1.2.0 + test + + + org.assertj + assertj-core + 3.24.2 + test + + + org.mockito + mockito-core + 4.11.0 + test + + + + + + false + + central + Central Repository + https://repo.maven.apache.org/maven2 + + + + + + never + + + false + + central + Central Repository + https://repo.maven.apache.org/maven2 + + + + /Users/michaelgh/dev/analytics-java/analytics-core/src/main/java + /Users/michaelgh/dev/analytics-java/analytics-core/src/main/scripts + /Users/michaelgh/dev/analytics-java/analytics-core/src/test/java + /Users/michaelgh/dev/analytics-java/analytics-core/target/classes + /Users/michaelgh/dev/analytics-java/analytics-core/target/test-classes + + + /Users/michaelgh/dev/analytics-java/analytics-core/src/main/resources + + + + + /Users/michaelgh/dev/analytics-java/analytics-core/src/test/resources + + + /Users/michaelgh/dev/analytics-java/analytics-core/target + analytics-core-3.5.5-SNAPSHOT + + + + maven-antrun-plugin + 1.3 + + + maven-assembly-plugin + 2.2-beta-5 + + + maven-dependency-plugin + 2.8 + + + maven-release-plugin + 2.5.3 + + + maven-compiler-plugin + 3.11.0 + + true + 8 + 8 + true + + + + com.diffplug.spotless + spotless-maven-plugin + 2.27.2 + + + + 1.5 + + + + + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + org.codehaus.mojo + templating-maven-plugin + [1.0-alpha-3,) + + filter-sources + filter-test-sources + + + + + true + true + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + [1.0.0,) + + enforce + + + + + + + + + + + + + + + org.sonatype.central + central-publishing-maven-plugin + 0.9.0 + true + + + injected-central-publishing + deploy + + publish + + + central + + + + + central + + + + maven-deploy-plugin + 3.0.0 + + true + + + + maven-assembly-plugin + 2.2-beta-5 + + + + com.segment.analytics.Analytics + + + + jar-with-dependencies + + + + + org.codehaus.mojo + cobertura-maven-plugin + 2.7 + + + html + xml + + + + + + maven-surefire-plugin + 3.2.5 + + + default-test + test + + test + + + false + + + + + false + + + + maven-source-plugin + 3.3.1 + + + attach-sources + + jar-no-fork + + + + + + maven-javadoc-plugin + 3.6.3 + + + attach-javadocs + + jar + + + + + + maven-gpg-plugin + 3.2.7 + + + sign-artifacts + verify + + sign + + + + + + maven-clean-plugin + 3.2.0 + + + default-clean + clean + + clean + + + + + + maven-resources-plugin + 3.3.0 + + + default-testResources + process-test-resources + + testResources + + + + default-resources + process-resources + + resources + + + + + + maven-jar-plugin + 3.3.0 + + + default-jar + package + + jar + + + + + + maven-compiler-plugin + 3.11.0 + + + default-compile + compile + + compile + + + true + 8 + 8 + true + + + + default-testCompile + test-compile + + testCompile + + + true + 8 + 8 + true + + + + + true + 8 + 8 + true + + + + maven-install-plugin + 3.1.0 + + + default-install + install + + install + + + + + + maven-site-plugin + 3.12.1 + + + default-site + site + + site + + + /Users/michaelgh/dev/analytics-java/analytics-core/target/site + + + org.apache.maven.plugins + maven-project-info-reports-plugin + + + + + + default-deploy + site-deploy + + deploy + + + /Users/michaelgh/dev/analytics-java/analytics-core/target/site + + + org.apache.maven.plugins + maven-project-info-reports-plugin + + + + + + + /Users/michaelgh/dev/analytics-java/analytics-core/target/site + + + org.apache.maven.plugins + maven-project-info-reports-plugin + + + + + + + + /Users/michaelgh/dev/analytics-java/analytics-core/target/site + + diff --git a/analytics-core/pom.xml b/analytics-core/pom.xml index 9465f69c..e2db32c3 100644 --- a/analytics-core/pom.xml +++ b/analytics-core/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4 + 3.5.5-SNAPSHOT com.segment.analytics.java diff --git a/analytics-sample/pom.xml b/analytics-sample/pom.xml index 1b8fc120..4794d406 100644 --- a/analytics-sample/pom.xml +++ b/analytics-sample/pom.xml @@ -6,7 +6,7 @@ analytics-parent com.segment.analytics.java - 3.5.4 + 3.5.5-SNAPSHOT com.segment.analytics.java diff --git a/analytics-spring-boot-starter/pom.xml b/analytics-spring-boot-starter/pom.xml index 51eae421..4ebc8959 100644 --- a/analytics-spring-boot-starter/pom.xml +++ b/analytics-spring-boot-starter/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4 + 3.5.5-SNAPSHOT com.segment.analytics.java diff --git a/analytics/pom.xml b/analytics/pom.xml index dc22e0ca..05e36fbb 100644 --- a/analytics/pom.xml +++ b/analytics/pom.xml @@ -6,7 +6,7 @@ com.segment.analytics.java analytics-parent - 3.5.4 + 3.5.5-SNAPSHOT com.segment.analytics.java diff --git a/pom.xml b/pom.xml index 58d2d09f..70cfe8b4 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.segment.analytics.java analytics-parent - 3.5.4-SNAPSHOT + 3.5.5-SNAPSHOT pom Analytics for Java (Parent) The hassle-free way to add analytics to your Android app. From 9294160211d981defe31769cf0a32c223514e01d Mon Sep 17 00:00:00 2001 From: Michael Grosse Huelsewiesche Date: Tue, 13 Jan 2026 12:37:16 -0500 Subject: [PATCH 16/16] Initial changes for http response updates and tests --- .../analytics/http/SegmentService.java | 4 +- .../analytics/internal/AnalyticsClient.java | 148 +++++++++++++++--- .../internal/AnalyticsClientTest.java | 142 +++++++++++++++-- 3 files changed, 255 insertions(+), 39 deletions(-) diff --git a/analytics-core/src/main/java/com/segment/analytics/http/SegmentService.java b/analytics-core/src/main/java/com/segment/analytics/http/SegmentService.java index c96cbef2..c11e03a6 100644 --- a/analytics-core/src/main/java/com/segment/analytics/http/SegmentService.java +++ b/analytics-core/src/main/java/com/segment/analytics/http/SegmentService.java @@ -4,11 +4,13 @@ import okhttp3.HttpUrl; import retrofit2.Call; import retrofit2.http.Body; +import retrofit2.http.Header; import retrofit2.http.POST; import retrofit2.http.Url; /** REST interface for the Segment API. */ public interface SegmentService { @POST - Call upload(@Url HttpUrl uploadUrl, @Body Batch batch); + Call upload( + @Header("X-Retry-Count") Integer retryCount, @Url HttpUrl uploadUrl, @Body Batch batch); } diff --git a/analytics/src/main/java/com/segment/analytics/internal/AnalyticsClient.java b/analytics/src/main/java/com/segment/analytics/internal/AnalyticsClient.java index 2430cd1e..76a55d4c 100644 --- a/analytics/src/main/java/com/segment/analytics/internal/AnalyticsClient.java +++ b/analytics/src/main/java/com/segment/analytics/internal/AnalyticsClient.java @@ -438,12 +438,37 @@ private void notifyCallbacksWithException(Batch batch, Exception exception) { } } - /** Returns {@code true} to indicate a batch should be retried. {@code false} otherwise. */ - boolean upload() { + private enum RetryStrategy { + NONE, + BACKOFF, + RETRY_AFTER + } + + private static final class UploadResult { + final RetryStrategy strategy; + final long retryAfterSeconds; + + UploadResult(RetryStrategy strategy) { + this(strategy, 0L); + } + + UploadResult(RetryStrategy strategy, long retryAfterSeconds) { + this.strategy = strategy; + this.retryAfterSeconds = retryAfterSeconds; + } + } + + /** + * Perform a single upload attempt. + * + * @param attempt overall number of attempts so far (1-based) + */ + UploadResult upload(int attempt) { client.log.print(VERBOSE, "Uploading batch %s.", batch.sequence()); try { - Call call = client.service.upload(client.uploadUrl, batch); + Integer headerRetryCount = attempt <= 1 ? null : Integer.valueOf(attempt - 1); + Call call = client.service.upload(headerRetryCount, client.uploadUrl, batch); Response response = call.execute(); if (response.isSuccessful()) { @@ -455,59 +480,138 @@ boolean upload() { } } - return false; + return new UploadResult(RetryStrategy.NONE); } int status = response.code(); - if (is5xx(status)) { + String retryAfterHeader = response.headers().get("Retry-After"); + Long retryAfterSeconds = parseRetryAfterSeconds(retryAfterHeader); + + if (retryAfterSeconds != null && isStatusRetryAfterEligible(status)) { client.log.print( - DEBUG, "Could not upload batch %s due to server error. Retrying.", batch.sequence()); - return true; - } else if (status == 429) { + DEBUG, + "Could not upload batch %s due to status %s with Retry-After %s seconds. Retrying after delay.", + batch.sequence(), + status, + retryAfterSeconds); + return new UploadResult(RetryStrategy.RETRY_AFTER, retryAfterSeconds); + } + + if (isStatusRetryWithBackoff(status)) { client.log.print( - DEBUG, "Could not upload batch %s due to rate limiting. Retrying.", batch.sequence()); - return true; + DEBUG, + "Could not upload batch %s due to retryable status %s. Retrying with backoff.", + batch.sequence(), + status); + return new UploadResult(RetryStrategy.BACKOFF); } - client.log.print(DEBUG, "Could not upload batch %s. Giving up.", batch.sequence()); + client.log.print( + DEBUG, + "Could not upload batch %s due to non-retryable status %s. Giving up.", + batch.sequence(), + status); notifyCallbacksWithException(batch, new IOException(response.errorBody().string())); - return false; + return new UploadResult(RetryStrategy.NONE); } catch (IOException error) { client.log.print(DEBUG, error, "Could not upload batch %s. Retrying.", batch.sequence()); - return true; + return new UploadResult(RetryStrategy.BACKOFF); } catch (Exception exception) { client.log.print(DEBUG, "Could not upload batch %s. Giving up.", batch.sequence()); notifyCallbacksWithException(batch, exception); - return false; + return new UploadResult(RetryStrategy.NONE); + } + } + + private static boolean isStatusRetryAfterEligible(int status) { + return status == 429 || status == 408 || status == 503; + } + + private static Long parseRetryAfterSeconds(String headerValue) { + if (headerValue == null) { + return null; + } + headerValue = headerValue.trim(); + if (headerValue.isEmpty()) { + return null; + } + try { + long seconds = Long.parseLong(headerValue); + if (seconds <= 0L) { + return null; + } + return seconds; + } catch (NumberFormatException ignored) { + return null; } } @Override public void run() { - int attempt = 0; - for (; attempt <= maxRetries; attempt++) { - boolean retry = upload(); - if (!retry) return; + int totalAttempts = 0; // counts every HTTP attempt (for header and error message) + int backoffAttempts = 0; // counts attempts that consume backoff-based retries + int maxBackoffAttempts = maxRetries + 1; // preserve existing semantics + + while (true) { + totalAttempts++; + UploadResult result = upload(totalAttempts); + + if (result.strategy == RetryStrategy.NONE) { + return; + } + + if (result.strategy == RetryStrategy.RETRY_AFTER) { + try { + TimeUnit.SECONDS.sleep(result.retryAfterSeconds); + } catch (InterruptedException e) { + client.log.print( + DEBUG, + "Thread interrupted while waiting for Retry-After for batch %s.", + batch.sequence()); + Thread.currentThread().interrupt(); + return; + } + // Do not count Retry-After based retries against maxRetries. + continue; + } + + // BACKOFF strategy + backoffAttempts++; + if (backoffAttempts >= maxBackoffAttempts) { + break; + } + try { - backo.sleep(attempt); + backo.sleep(backoffAttempts - 1); } catch (InterruptedException e) { client.log.print( DEBUG, "Thread interrupted while backing off for batch %s.", batch.sequence()); + Thread.currentThread().interrupt(); return; } } client.log.print(ERROR, "Could not upload batch %s. Retries exhausted.", batch.sequence()); notifyCallbacksWithException( - batch, new IOException(Integer.toString(attempt) + " retries exhausted")); + batch, new IOException(Integer.toString(totalAttempts) + " retries exhausted")); } - private static boolean is5xx(int status) { - return status >= 500 && status < 600; + private static boolean isStatusRetryWithBackoff(int status) { + // Explicitly retry these client errors + if (status == 408 || status == 410 || status == 413 || status == 429 || status == 460) { + return true; + } + + // Retry all other 5xx errors except 501, 505, and 511 + if (status >= 500 && status < 600) { + return status != 501 && status != 505 && status != 511; + } + + return false; } } diff --git a/analytics/src/test/java/com/segment/analytics/internal/AnalyticsClientTest.java b/analytics/src/test/java/com/segment/analytics/internal/AnalyticsClientTest.java index 74f04e13..7c77821b 100644 --- a/analytics/src/test/java/com/segment/analytics/internal/AnalyticsClientTest.java +++ b/analytics/src/test/java/com/segment/analytics/internal/AnalyticsClientTest.java @@ -6,6 +6,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.timeout; @@ -367,6 +368,19 @@ static Batch batchFor(Message message) { Collections.emptyMap(), Collections.singletonList(message), writeKey); } + private static Response errorWithRetryAfter(int status, String retryAfterSeconds) { + okhttp3.Response rawResponse = + new okhttp3.Response.Builder() + .code(status) + .protocol(okhttp3.Protocol.HTTP_1_1) + .request(new okhttp3.Request.Builder().url("http://localhost/" /* unused */).build()) + .message("Error") + .addHeader("Retry-After", retryAfterSeconds) + .build(); + + return Response.error(ResponseBody.create(null, "Error"), rawResponse); + } + @Test public void batchRetriesForNetworkErrors() { AnalyticsClient client = newClient(); @@ -377,7 +391,7 @@ public void batchRetriesForNetworkErrors() { Response failureResponse = Response.error(429, ResponseBody.create(null, "")); // Throw a network error 3 times. - when(segmentService.upload(null, batch)) + when(segmentService.upload(any(), isNull(), eq(batch))) .thenReturn(Calls.response(failureResponse)) .thenReturn(Calls.response(failureResponse)) .thenReturn(Calls.response(failureResponse)) @@ -387,7 +401,7 @@ public void batchRetriesForNetworkErrors() { batchUploadTask.run(); // Verify that we tried to upload 4 times, 3 failed and 1 succeeded. - verify(segmentService, times(4)).upload(null, batch); + verify(segmentService, times(4)).upload(any(), isNull(), eq(batch)); verify(callback).success(trackMessage); } @@ -402,7 +416,7 @@ public void batchRetriesForHTTP5xxErrors() { Response successResponse = Response.success(200, response); Response failResponse = Response.error(500, ResponseBody.create(null, "Server Error")); - when(segmentService.upload(null, batch)) + when(segmentService.upload(any(), isNull(), eq(batch))) .thenReturn(Calls.response(failResponse)) .thenReturn(Calls.response(failResponse)) .thenReturn(Calls.response(failResponse)) @@ -412,7 +426,7 @@ public void batchRetriesForHTTP5xxErrors() { batchUploadTask.run(); // Verify that we tried to upload 4 times, 3 failed and 1 succeeded. - verify(segmentService, times(4)).upload(null, batch); + verify(segmentService, times(4)).upload(any(), isNull(), eq(batch)); verify(callback).success(trackMessage); } @@ -426,7 +440,7 @@ public void batchRetriesForHTTP429Errors() { Response successResponse = Response.success(200, response); Response failResponse = Response.error(429, ResponseBody.create(null, "Rate Limited")); - when(segmentService.upload(null, batch)) + when(segmentService.upload(any(), isNull(), eq(batch))) .thenReturn(Calls.response(failResponse)) .thenReturn(Calls.response(failResponse)) .thenReturn(Calls.response(failResponse)) @@ -436,7 +450,28 @@ public void batchRetriesForHTTP429Errors() { batchUploadTask.run(); // Verify that we tried to upload 4 times, 3 failed and 1 succeeded. - verify(segmentService, times(4)).upload(null, batch); + verify(segmentService, times(4)).upload(any(), isNull(), eq(batch)); + verify(callback).success(trackMessage); + } + + @Test + public void batchRetriesForRetryableClientErrors() { + AnalyticsClient client = newClient(); + TrackMessage trackMessage = TrackMessage.builder("foo").userId("bar").build(); + Batch batch = batchFor(trackMessage); + + Response successResponse = Response.success(200, response); + Response failResponse = + Response.error(408, ResponseBody.create(null, "Request Timeout")); + + when(segmentService.upload(any(), isNull(), eq(batch))) + .thenReturn(Calls.response(failResponse)) + .thenReturn(Calls.response(successResponse)); + + BatchUploadTask batchUploadTask = new BatchUploadTask(client, BACKO, batch, DEFAULT_RETRIES); + batchUploadTask.run(); + + verify(segmentService, times(2)).upload(any(), isNull(), eq(batch)); verify(callback).success(trackMessage); } @@ -449,13 +484,30 @@ public void batchDoesNotRetryForNon5xxAndNon429HTTPErrors() { // Throw a HTTP error that should not be retried. Response failResponse = Response.error(404, ResponseBody.create(null, "Not Found")); - when(segmentService.upload(null, batch)).thenReturn(Calls.response(failResponse)); + when(segmentService.upload(any(), isNull(), eq(batch))).thenReturn(Calls.response(failResponse)); BatchUploadTask batchUploadTask = new BatchUploadTask(client, BACKO, batch, DEFAULT_RETRIES); batchUploadTask.run(); // Verify we only tried to upload once. - verify(segmentService).upload(null, batch); + verify(segmentService).upload(any(), isNull(), eq(batch)); + verify(callback).failure(eq(trackMessage), any(IOException.class)); + } + + @Test + public void batchDoesNotRetryForNonRetryable5xxErrors() { + AnalyticsClient client = newClient(); + TrackMessage trackMessage = TrackMessage.builder("foo").userId("bar").build(); + Batch batch = batchFor(trackMessage); + + Response failResponse = + Response.error(501, ResponseBody.create(null, "Not Implemented")); + when(segmentService.upload(any(), isNull(), eq(batch))).thenReturn(Calls.response(failResponse)); + + BatchUploadTask batchUploadTask = new BatchUploadTask(client, BACKO, batch, DEFAULT_RETRIES); + batchUploadTask.run(); + + verify(segmentService).upload(any(), isNull(), eq(batch)); verify(callback).failure(eq(trackMessage), any(IOException.class)); } @@ -466,13 +518,13 @@ public void batchDoesNotRetryForNonNetworkErrors() { Batch batch = batchFor(trackMessage); Call networkFailure = Calls.failure(new RuntimeException()); - when(segmentService.upload(null, batch)).thenReturn(networkFailure); + when(segmentService.upload(any(), isNull(), eq(batch))).thenReturn(networkFailure); BatchUploadTask batchUploadTask = new BatchUploadTask(client, BACKO, batch, DEFAULT_RETRIES); batchUploadTask.run(); // Verify we only tried to upload once. - verify(segmentService).upload(null, batch); + verify(segmentService).upload(any(), isNull(), eq(batch)); verify(callback).failure(eq(trackMessage), any(RuntimeException.class)); } @@ -482,7 +534,7 @@ public void givesUpAfterMaxRetries() { TrackMessage trackMessage = TrackMessage.builder("foo").userId("bar").build(); Batch batch = batchFor(trackMessage); - when(segmentService.upload(null, batch)) + when(segmentService.upload(any(), isNull(), eq(batch))) .thenAnswer( new Answer>() { public Call answer(InvocationOnMock invocation) { @@ -497,7 +549,7 @@ public Call answer(InvocationOnMock invocation) { // DEFAULT_RETRIES == maxRetries // tries 11(one normal run + 10 retries) even though default is 50 in AnalyticsClient.java - verify(segmentService, times(11)).upload(null, batch); + verify(segmentService, times(11)).upload(any(), isNull(), eq(batch)); verify(callback) .failure( eq(trackMessage), @@ -510,13 +562,46 @@ public boolean matches(IOException exception) { })); } + @Test + public void retryAfterDoesNotCountAgainstMaxRetries() { + AnalyticsClient client = newClient(); + TrackMessage trackMessage = TrackMessage.builder("foo").userId("bar").build(); + Batch batch = batchFor(trackMessage); + + Response rateLimited = errorWithRetryAfter(429, "1"); + Response serverError = + Response.error(500, ResponseBody.create(null, "Server Error")); + + when(segmentService.upload(any(), isNull(), eq(batch))) + .thenReturn(Calls.response(rateLimited)) + .thenReturn(Calls.response(rateLimited)) + .thenReturn(Calls.response(serverError)) + .thenReturn(Calls.response(serverError)); + + BatchUploadTask batchUploadTask = new BatchUploadTask(client, BACKO, batch, 1); + batchUploadTask.run(); + + // 2 Retry-After attempts + 2 backoff attempts (maxRetries = 1 => 2 backoff attempts) + verify(segmentService, times(4)).upload(any(), isNull(), eq(batch)); + verify(callback) + .failure( + eq(trackMessage), + argThat( + new ArgumentMatcher() { + @Override + public boolean matches(IOException exception) { + return exception.getMessage().equals("4 retries exhausted"); + } + })); + } + @Test public void hasDefaultRetriesSetTo3() { AnalyticsClient client = newClient(); TrackMessage trackMessage = TrackMessage.builder("foo").userId("bar").build(); Batch batch = batchFor(trackMessage); - when(segmentService.upload(null, batch)) + when(segmentService.upload(any(), isNull(), eq(batch))) .thenAnswer( new Answer>() { public Call answer(InvocationOnMock invocation) { @@ -531,7 +616,7 @@ public Call answer(InvocationOnMock invocation) { // DEFAULT_RETRIES == maxRetries // tries 11(one normal run + 10 retries) - verify(segmentService, times(4)).upload(null, batch); + verify(segmentService, times(4)).upload(any(), isNull(), eq(batch)); verify(callback) .failure( eq(trackMessage), @@ -544,6 +629,31 @@ public boolean matches(IOException exception) { })); } + @Test + public void xRetryCountHeaderOnlyAppearsOnRetries() { + AnalyticsClient client = newClient(); + TrackMessage trackMessage = TrackMessage.builder("foo").userId("bar").build(); + Batch batch = batchFor(trackMessage); + + Response successResponse = Response.success(200, response); + Response failResponse = + Response.error(500, ResponseBody.create(null, "Server Error")); + + when(segmentService.upload(any(), isNull(), eq(batch))) + .thenReturn(Calls.response(failResponse)) + .thenReturn(Calls.response(failResponse)) + .thenReturn(Calls.response(successResponse)); + + BatchUploadTask batchUploadTask = new BatchUploadTask(client, BACKO, batch, DEFAULT_RETRIES); + batchUploadTask.run(); + + ArgumentCaptor retryCountCaptor = ArgumentCaptor.forClass(Integer.class); + verify(segmentService, times(3)).upload(retryCountCaptor.capture(), isNull(), eq(batch)); + + assertThat(retryCountCaptor.getAllValues()).containsExactly(null, 1, 2); + verify(callback).success(trackMessage); + } + @Test public void flushWhenNotShutDown() throws InterruptedException { AnalyticsClient client = newClient(); @@ -636,7 +746,7 @@ public void neverRetries() { TrackMessage trackMessage = TrackMessage.builder("foo").userId("bar").build(); Batch batch = batchFor(trackMessage); - when(segmentService.upload(null, batch)) + when(segmentService.upload(any(), isNull(), eq(batch))) .thenAnswer( new Answer>() { public Call answer(InvocationOnMock invocation) { @@ -650,7 +760,7 @@ public Call answer(InvocationOnMock invocation) { batchUploadTask.run(); // runs once but never retries - verify(segmentService, times(1)).upload(null, batch); + verify(segmentService, times(1)).upload(any(), isNull(), eq(batch)); verify(callback) .failure( eq(trackMessage),