diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml
index 2da96cdcd..73be63d7b 100644
--- a/.github/dependabot.yaml
+++ b/.github/dependabot.yaml
@@ -36,8 +36,6 @@ updates:
- dependency-name: 'com.github.ekryd.sortpom:sortpom-maven-plugin'
# used by deprecated code only, not worth updating for now
- dependency-name: 'org.apache.axis2:*'
- # newer versions cause issues with our release process
- - dependency-name: 'org.apache.maven.plugins:maven-javadoc-plugin'
# Ignore problematic license versions
- dependency-name: 'com.sap.cloud.security:java-security'
versions: ['3.6.1', '3.6.2']
diff --git a/.github/workflows/javadoc.yaml b/.github/workflows/javadoc.yaml
new file mode 100644
index 000000000..d648e5e3a
--- /dev/null
+++ b/.github/workflows/javadoc.yaml
@@ -0,0 +1,108 @@
+name: JavaDoc to Documentation Portal
+
+on:
+ workflow_dispatch:
+ inputs:
+ branch:
+ description: 'Branch/Commit/Tag for JavaDoc'
+ required: true
+ default: 'main'
+
+env:
+ JAVA_VERSION: 17
+ DOCS_REPO: SAP/cloud-sdk
+ PROJECTS: "!:rfc,!:dwc-cf,!:datamodel-metadata-generator,!:odata-generator,!:odata-generator-maven-plugin,!:odata-generator-utility,!:odata-v4-generator,!:odata-v4-generator-maven-plugin,!:s4hana-connectivity,!:soap,!:testutil,!:s4hana-core"
+
+jobs:
+ build:
+ name: "JavaDoc to Documentation Portal"
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: "Prepare git"
+ run: |
+ git config --global user.email "cloudsdk@sap.com"
+ git config --global user.name "SAP Cloud SDK Bot"
+
+ - name: "Checkout Repository"
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: "Switch branch"
+ run: git checkout "${{ github.event.inputs.branch || 'main' }}"
+
+ - name: "Set up JDK 17"
+ uses: actions/setup-java@v4
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ cache: 'maven'
+
+ - name: "Determine Major Version"
+ id: determine-major-version
+ run: echo "MAJOR_VERSION=$(jq -r '.version' latest.json | cut -d '.' -f 1)" >> $GITHUB_OUTPUT
+
+ - name: "Install project (skip tests)"
+ run: mvn install -DskipTests --quiet
+
+ - name: "Process sources"
+ run: mvn process-sources -Drelease --fail-at-end --projects "${PROJECTS}" --quiet
+
+ - name: "Copy delombok sources"
+ run: find . -type d -path "*/target/delombok" -exec sh -c 'cp -r "$1"/* "$(dirname $(dirname "$1"))/src/main/java/"' _ {} \;
+
+ - name: "Generate aggregated Javadoc"
+ run: mvn clean javadoc:aggregate -Drelease -Djava.failOnWarning=false --projects "${PROJECTS}" --quiet
+
+ - name: "Checkout Docs Repository"
+ uses: actions/checkout@v4
+ with:
+ repository: ${{ env.DOCS_REPO }}
+ path: .cloud-sdk-docs
+ token: ${{ secrets.BOT_SDK_JS_FOR_DOCS_REPO_PR }}
+
+ - name: "Replace JavaDoc"
+ id: replace-javadoc
+ run: |
+ TARGET_DIR=./.cloud-sdk-docs/static/java-api/v${{ steps.determine-major-version.outputs.MAJOR_VERSION }}
+
+ ls -lA target
+ rm -rf $TARGET_DIR
+ mkdir -p $TARGET_DIR
+ mv target/reports/apidocs/* $TARGET_DIR
+
+ cd ./.cloud-sdk-docs
+ git add -A .
+
+ CHANGED_FILES="$(git status -s)"
+ if [[ -z "$CHANGED_FILES" ]]; then
+ echo "[DEBUG] No changes to API docs detected, skipping Pull Request creation."
+ echo "CREATE_PR=false" >> $GITHUB_OUTPUT
+ exit 0
+ fi
+
+ echo "CREATE_PR=true" >> $GITHUB_OUTPUT
+ BRANCH_NAME=java/release-docs-${{ steps.determine-major-version.outputs.MAJOR_VERSION }}
+ echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_OUTPUT
+
+ git switch --create $BRANCH_NAME
+ git commit -m "chore: Update JavaDocs for release ${{ needs.bump-version.outputs.release-version }}"
+ COMMIT_SHA=$(git log -1 --pretty=format:"%H")
+ echo "COMMIT_SHA=$COMMIT_SHA" >> $GITHUB_OUTPUT
+
+ git push origin $BRANCH_NAME
+
+ - name: "Create JavaDoc PR"
+ id: create-javadoc-pr
+ if: ${{ steps.replace-javadoc.outputs.CREATE_PR == 'true' }}
+ working-directory: ./.cloud-sdk-docs
+ run: |
+ PR_TITLE="Java: Update JavaDocs for release ${{ needs.bump-version.outputs.release-version }}"
+ PR_BODY="Replace the contents of v${{ steps.determine-major-version.outputs.MAJOR_VERSION }} API docs with the latest release of the SDK."
+
+ PR_URL=$(gh pr create --title "$PR_TITLE" --body "$PR_BODY" --repo "${{ env.DOCS_REPO }}")
+ echo "PR_URL=$PR_URL" >> $GITHUB_OUTPUT
+ echo "PR: $PR_URL" >> $GITHUB_STEP_SUMMARY
+ env:
+ GH_TOKEN: ${{ secrets.BOT_SDK_JS_FOR_DOCS_REPO_PR }}
diff --git a/.github/workflows/prepare-release.yaml b/.github/workflows/prepare-release.yaml
index c3d3d2662..3a680dded 100644
--- a/.github/workflows/prepare-release.yaml
+++ b/.github/workflows/prepare-release.yaml
@@ -154,6 +154,26 @@ jobs:
env:
GH_TOKEN: ${{ github.token }}
+ create-javadoc-aggregated-pr:
+ needs: [ create-release ]
+ name: "Create Aggregated JavaDoc PR on Documentation Portal"
+ runs-on: ubuntu-latest
+ permissions:
+ actions: write # needed to trigger the ci-build workflow
+ statuses: write # needed to update the commit status
+ steps:
+ - name: "Checkout repository"
+ uses: actions/checkout@v5
+ with:
+ ref: ${{ needs.create-release.outputs.release-name }}
+ - name: "Trigger workflow (ignore failures)"
+ uses: ./.github/actions/trigger-workflow
+ continue-on-error: true
+ with:
+ workflow: javadoc.yaml
+ workflow-ref: javadoc-aggregate-delombok-3.12.0
+ parameters: -f branch=${{ needs.create-release.outputs.release-name }}
+
create-release-notes-pr:
name: "Create Release Notes PR"
needs: [ bump-version, run-ci ]
@@ -263,6 +283,7 @@ jobs:
PR_URL=$(gh pr create --title "Release ${{ needs.bump-version.outputs.release-version }}" --body "## TODOs
- [ ] Review the changes in [the release commit]($COMMIT_URL)
- [ ] Review **and approve** the [Release Notes PR](${{ needs.create-release-notes-pr.outputs.pr-url }})
+ - [ ] Review **and approve** the [JavaDoc PR](https://github.com/SAP/cloud-sdk/pulls?q=is%3Aopen+is%3Apr+author%3Abot-sdk-js+Update+JavaDocs)
- [ ] Review the [Draft Release](${{ needs.create-release.outputs.release-url }})
- [ ] Review **and approve** this PR
- [ ] Once all tests of this PR are green, trigger the [Perform Release Workflow](${{ github.event.repository.html_url }}/actions/workflows/perform-release.yml)
diff --git a/README.md b/README.md
index c61b7d2e1..296d033ee 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@

[](https://api.reuse.software/info/github.com/SAP/cloud-sdk-java)
[](https://github.com/SAP/cloud-sdk-java/blob/fosstars-report/fosstars_report.md)
-[](https://search.maven.org/search?q=g:com.sap.cloud.sdk%20AND%20a:sdk-core%20AND%20v:5.23.0)
+[](https://search.maven.org/search?q=g:com.sap.cloud.sdk%20AND%20a:sdk-core%20AND%20v:5.24.0-M5)
[](https://deepwiki.com/SAP/cloud-sdk-java)
#
SAP Cloud SDK for Java
diff --git a/dependency-bundles/bom/pom.xml b/dependency-bundles/bom/pom.xml
index 996585ac6..f23a2af52 100644
--- a/dependency-bundles/bom/pom.xml
+++ b/dependency-bundles/bom/pom.xml
@@ -345,7 +345,7 @@
org.apache.maven.plugins
maven-javadoc-plugin
- 3.11.2
+ 3.12.0
javadoc-jar
diff --git a/dependency-bundles/modules-bom/pom.xml b/dependency-bundles/modules-bom/pom.xml
index f792f69b2..50989420c 100644
--- a/dependency-bundles/modules-bom/pom.xml
+++ b/dependency-bundles/modules-bom/pom.xml
@@ -272,7 +272,7 @@
org.apache.maven.plugins
maven-javadoc-plugin
- 3.11.2
+ 3.12.0
javadoc-jar
diff --git a/pom.xml b/pom.xml
index 558abea58..c26d9dc56 100644
--- a/pom.xml
+++ b/pom.xml
@@ -515,7 +515,7 @@
org.apache.maven.plugins
maven-javadoc-plugin
- 3.11.2
+ 3.12.0
com.sap.cloud.sdk.datamodel
@@ -1015,7 +1015,6 @@
com.sap.cloud.sdk.s4hana*
- ${project.basedir}/target/delombok
${project.rootdir}/javadoc.overview.html
@@ -1024,6 +1023,9 @@
jar
+
+ ${project.basedir}/target/delombok
+
diff --git a/release_notes.md b/release_notes.md
index e150016a6..3112514a9 100644
--- a/release_notes.md
+++ b/release_notes.md
@@ -16,7 +16,7 @@
### 📈 Improvements
-- When the circuit breaker opens, the resulting `ResilienceRuntimeException` will have the original `CallNotPermittedException` from the circuit breaker stored as a suppressed exception.
+-
### 🐛 Fixed Issues