From bb9e589af4ae157ce7f122caa0387c79bb127d05 Mon Sep 17 00:00:00 2001 From: i590648 Date: Thu, 5 Nov 2026 12:20:58 +0100 Subject: [PATCH 1/3] feat: [DevOps] Add minimal dependencies check (#388) Add a 'floor-deps' Maven profile that pins consumer-facing dependencies to their minimum supported versions, plus a CI step that compiles against them so the SDK cannot accidentally rely on newer-version APIs. Documents the verified minimum versions in the release notes. --- .github/workflows/continuous-integration.yaml | 5 ++ docs/release_notes.md | 2 +- pom.xml | 66 +++++++++++++++++++ 3 files changed, 72 insertions(+), 1 deletion(-) diff --git a/.github/workflows/continuous-integration.yaml b/.github/workflows/continuous-integration.yaml index f7bbf8c8a..5bc79a340 100644 --- a/.github/workflows/continuous-integration.yaml +++ b/.github/workflows/continuous-integration.yaml @@ -82,6 +82,11 @@ jobs: MVN_ARGS="${{ env.MVN_MULTI_THREADED_ARGS }} org.jacoco:jacoco-maven-plugin:prepare-agent surefire:test org.jacoco:jacoco-maven-plugin:report org.jacoco:jacoco-maven-plugin:check@default-check" mvn $MVN_ARGS + - name: "Check Minimal Dependencies" + run: | + MVN_ARGS="${{ env.MVN_MULTI_THREADED_ARGS }} ${{ env.MVN_SKIP_CI_PLUGINS }} test-compile -P floor-deps" + mvn $MVN_ARGS + - name: "Slack Notification" if: ${{ github.ref == 'refs/heads/main' && failure() }} uses: slackapi/slack-github-action@v4.0.0 diff --git a/docs/release_notes.md b/docs/release_notes.md index 123ca098e..29dd13370 100644 --- a/docs/release_notes.md +++ b/docs/release_notes.md @@ -8,7 +8,7 @@ ### 🔧 Compatibility Notes -- +- The SDK is verified to build against these minimum supported dependency versions: SAP Cloud SDK `5.28.0`, Jackson `2.18.0`, Apache HttpComponents `5.2.1`, SLF4J `2.0.0`, Spring AI `2.0.0` (optional). ### ✨ New Functionality diff --git a/pom.xml b/pom.xml index 46737fcce..f2fc9c7e7 100644 --- a/pom.xml +++ b/pom.xml @@ -114,6 +114,13 @@ /tmp/baseline.jar ${project.build.directory}/${project.build.finalName}.jar + + 5.28.0 + 2.18.0 + 5.2.1 + 5.2.1 + 2.0.0 + 2.0.0 @@ -984,6 +991,65 @@ https://gitbox.apache.org/repos/asf?p=maven-pmd-plugin.git;a=blob_plain;f=src/ma + + + floor-deps + + + + com.sap.cloud.sdk + sdk-bom + ${floor.cloud-sdk.version} + pom + import + + + + org.springframework.ai + spring-ai-bom + ${floor.spring-ai.version} + pom + import + + + com.fasterxml.jackson.core + jackson-databind + ${floor.jackson.version} + + + com.fasterxml.jackson.core + jackson-core + ${floor.jackson.version} + + + com.fasterxml.jackson.core + jackson-annotations + ${floor.jackson.version} + + + org.apache.httpcomponents.core5 + httpcore5 + ${floor.httpcomponents-core5.version} + + + org.apache.httpcomponents.core5 + httpcore5-h2 + ${floor.httpcomponents-core5.version} + + + org.apache.httpcomponents.client5 + httpclient5 + ${floor.httpcomponents-client5.version} + + + org.slf4j + slf4j-api + ${floor.slf4j.version} + + + + non-release From 0777faec7f8b8013a0b2b04a8119290c586ca158 Mon Sep 17 00:00:00 2001 From: SoleilHoffmann Date: Fri, 6 Nov 2026 10:11:04 +0100 Subject: [PATCH 2/3] Apply batched suggestions from code review Added Jonas' suggestions test instead of test-compile, and clean test Co-authored-by: Jonas-Isr --- .github/workflows/continuous-integration.yaml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/continuous-integration.yaml b/.github/workflows/continuous-integration.yaml index 5bc79a340..b7698e250 100644 --- a/.github/workflows/continuous-integration.yaml +++ b/.github/workflows/continuous-integration.yaml @@ -84,7 +84,7 @@ jobs: - name: "Check Minimal Dependencies" run: | - MVN_ARGS="${{ env.MVN_MULTI_THREADED_ARGS }} ${{ env.MVN_SKIP_CI_PLUGINS }} test-compile -P floor-deps" + MVN_ARGS="${{ env.MVN_MULTI_THREADED_ARGS }} ${{ env.MVN_SKIP_CI_PLUGINS }} clean test -P floor-deps" mvn $MVN_ARGS - name: "Slack Notification" diff --git a/pom.xml b/pom.xml index f2fc9c7e7..ffe766f05 100644 --- a/pom.xml +++ b/pom.xml @@ -993,7 +993,7 @@ https://gitbox.apache.org/repos/asf?p=maven-pmd-plugin.git;a=blob_plain;f=src/ma + Run with: mvn test -P floor-deps --> floor-deps From c28cb6eecce978cd06767a31edeae05f17d65d2c Mon Sep 17 00:00:00 2001 From: i590648 Date: Fri, 6 Nov 2026 15:26:20 +0100 Subject: [PATCH 3/3] fix: [DevOps] Correct HttpComponents and Jackson floors for runtime (#388) Running the floor check as 'clean test' (not just test-compile) revealed two floors that compiled but failed at runtime: - SAP Cloud SDK 5.28.0 calls HttpClient5 5.4+ APIs (TlsSocketStrategy, RequestConfig.setProtocolUpgradeEnabled). Raise HttpComponents floor to what Cloud SDK 5.28 brings in (httpcore5 5.4.2, httpclient5 5.6). - Jackson 3 / Spring AI 2.0 (via victools jsonschema-generator 5) needs jackson-annotations >= 2.22 (JsonApplyView). jackson-annotations versions independently from databind/core, so split it into its own floor property (databind/core stays 2.18.0, annotations 2.22). --- docs/release_notes.md | 2 +- pom.xml | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/release_notes.md b/docs/release_notes.md index 29dd13370..82fe184f0 100644 --- a/docs/release_notes.md +++ b/docs/release_notes.md @@ -8,7 +8,7 @@ ### 🔧 Compatibility Notes -- The SDK is verified to build against these minimum supported dependency versions: SAP Cloud SDK `5.28.0`, Jackson `2.18.0`, Apache HttpComponents `5.2.1`, SLF4J `2.0.0`, Spring AI `2.0.0` (optional). +- The SDK is verified to build against these minimum supported dependency versions: SAP Cloud SDK `5.28.0`, Jackson `2.18.0` (`jackson-annotations` `2.22`), Apache HttpComponents `5.4.2`, SLF4J `2.0.0`, Spring AI `2.0.0` (optional). ### ✨ New Functionality diff --git a/pom.xml b/pom.xml index ffe766f05..123a35847 100644 --- a/pom.xml +++ b/pom.xml @@ -117,8 +117,11 @@ 5.28.0 2.18.0 - 5.2.1 - 5.2.1 + + 2.22 + + 5.4.2 + 5.6 2.0.0 2.0.0 @@ -1025,7 +1028,7 @@ https://gitbox.apache.org/repos/asf?p=maven-pmd-plugin.git;a=blob_plain;f=src/ma com.fasterxml.jackson.core jackson-annotations - ${floor.jackson.version} + ${floor.jackson-annotations.version} org.apache.httpcomponents.core5