This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch 3.33.x
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit d70301e93174af5049f9ee8ace586ddf0aabe8dd
Author: James Netherton <[email protected]>
AuthorDate: Thu Jun 25 11:09:31 2026 +0100

    Genericise setup-maven-cache action and cache Atlassian & Shibboleth 
repository artifacts
    
    Cherry-pick / adaptation of e5179d2248c, 80190f81ce7, c73a8a5098c, 
3189fac9627 from main.
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
---
 .github/actions/setup-maven-cache/action.yaml      | 104 ++++++++++++
 .github/workflows/camel-master-cron.yaml           | 179 +++++----------------
 .github/workflows/check-dependency-convergence.yml |   6 +
 .github/workflows/ci-build.yaml                    | 163 +++++--------------
 .github/workflows/ci-semeru-jdk.yaml               |  96 ++++-------
 .github/workflows/generate-sbom-main.yml           |   6 +
 .github/workflows/jdk25-build.yaml                 |  96 ++++-------
 .github/workflows/pr-validate.yml                  |   9 ++
 .github/workflows/quarkus-lts-ci-build.yaml        | 150 ++++-------------
 .github/workflows/quarkus-master-cron.yaml         | 179 +++++----------------
 10 files changed, 333 insertions(+), 655 deletions(-)

diff --git a/.github/actions/setup-maven-cache/action.yaml 
b/.github/actions/setup-maven-cache/action.yaml
new file mode 100644
index 0000000000..afd39b173f
--- /dev/null
+++ b/.github/actions/setup-maven-cache/action.yaml
@@ -0,0 +1,104 @@
+#
+# 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.
+#
+
+name: 'Setup Maven Cache'
+description: 'Manages the third-party Maven dependency cache. Use 
action=restore (default) before the build and action=save after.'
+inputs:
+  action:
+    description: 'restore (default) or save'
+    default: 'restore'
+  maven-properties:
+    description: 'Maven property expressions to evaluate for the cache key, 
one per line. Ignored when cache-key is provided. Only used for restore.'
+    default: ''
+  pom-path:
+    description: 'Path to the POM file or directory passed to Maven -f. 
Defaults to pom.xml. Only used for restore.'
+    default: 'pom.xml'
+  cache-key:
+    description: 'restore: pre-computed key override (skips property 
evaluation). save: the key to save under (required).'
+    default: ''
+  download-maven-repo:
+    description: 'Download and extract the maven-repo workflow artifact after 
restoring the cache. Only used for restore.'
+    default: 'false'
+  cache-paths:
+    description: 'Paths under ~/.m2/repository to cache, one per line. 
Defaults to the known third-party artifact groups.'
+    default: |
+      ~/.m2/repository/com/atlassian
+      ~/.m2/repository/io/atlassian
+      ~/.m2/repository/org/opensaml
+      ~/.m2/repository/net/shibboleth
+
+outputs:
+  cache-key:
+    description: 'The resolved cache key (only set for action=restore)'
+    value: ${{ steps.resolve-key.outputs.key }}
+
+runs:
+  using: "composite"
+  steps:
+    - name: Resolve cache key
+      id: resolve-key
+      if: ${{ inputs.action == 'restore' }}
+      shell: bash
+      env:
+        PROVIDED_KEY: ${{ inputs.cache-key }}
+        MAVEN_PROPERTIES: ${{ inputs.maven-properties }}
+        POM_PATH: ${{ inputs.pom-path }}
+      run: |
+        if [[ -n "${PROVIDED_KEY}" ]]; then
+          echo "key=${PROVIDED_KEY}" >> $GITHUB_OUTPUT
+        elif [[ -n "${MAVEN_PROPERTIES}" ]]; then
+          VALS=""
+          while IFS= read -r PROP; do
+            PROP="${PROP//[[:space:]]/}"
+            [[ -z "${PROP}" ]] && continue
+            VAL=$(./mvnw help:evaluate -f "${POM_PATH}" -Dexpression="${PROP}" 
-q -DforceStdout -N)
+            VALS="${VALS}${VAL}\n"
+          done <<< "${MAVEN_PROPERTIES}"
+          HASH=$(printf "${VALS}" | sha256sum | cut -c1-16)
+          echo "key=third-party-maven-${HASH}" >> $GITHUB_OUTPUT
+        else
+          CAMEL_VER=$(grep -m1 '<version>' "${POM_PATH}" | sed 
's|.*<version>\(.*\)</version>.*|\1|' | tr -d ' ')
+          CXF_VER=$(grep -m1 '<quarkiverse-cxf\.version>' "${POM_PATH}" | sed 
's|.*<quarkiverse-cxf\.version>\(.*\)</quarkiverse-cxf\.version>.*|\1|' | tr -d 
' ')
+          HASH=$(printf "${CAMEL_VER}\n${CXF_VER}\n" | sha256sum | cut -c1-16)
+          echo "key=third-party-maven-${HASH}" >> $GITHUB_OUTPUT
+        fi
+    - name: Restore Maven Cache
+      if: ${{ inputs.action == 'restore' }}
+      uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # 
v5.0.5
+      with:
+        path: ${{ inputs.cache-paths }}
+        key: ${{ steps.resolve-key.outputs.key }}
+    - name: Download Maven Repo
+      if: ${{ inputs.action == 'restore' && inputs.download-maven-repo == 
'true' }}
+      uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c 
# v8.0.1
+      with:
+        name: maven-repo
+        path: ..
+    - name: Extract Maven Repo
+      if: ${{ inputs.action == 'restore' && inputs.download-maven-repo == 
'true' }}
+      shell: bash
+      run: |
+        df -h /
+        tar -xzf ../maven-repo.tgz -C ~
+        rm -f ../maven-repo.tgz
+        df -h /
+    - name: Save Maven Cache
+      if: ${{ inputs.action == 'save' }}
+      uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # 
v5.0.5
+      with:
+        path: ${{ inputs.cache-paths }}
+        key: ${{ inputs.cache-key }}
diff --git a/.github/workflows/camel-master-cron.yaml 
b/.github/workflows/camel-master-cron.yaml
index f7c3e5401a..d072318ffe 100644
--- a/.github/workflows/camel-master-cron.yaml
+++ b/.github/workflows/camel-master-cron.yaml
@@ -36,7 +36,7 @@ jobs:
     outputs:
       matrix: ${{ steps.set-native-matrix.outputs.matrix }}
       examples-matrix: ${{ steps.set-examples-matrix.outputs.examples-matrix }}
-      alternate-jvm-matrix: ${{ 
steps.set-alternate-jvm-matrix.outputs.alternate-jvm-matrix }}
+      cache-key: ${{ steps.maven-cache.outputs.cache-key }}
     env:
       MAVEN_OPTS: -Xmx4600m
     steps:
@@ -57,6 +57,9 @@ jobs:
         with:
           ref: camel-main
           fetch-depth: 0
+      - name: Setup Maven Cache
+        id: maven-cache
+        uses: ./.github/actions/setup-maven-cache
       - name: Rebase branch main onto camel-main
         run: |
           git config --local user.email 
"41898282+github-actions[bot]@users.noreply.github.com"
@@ -96,23 +99,17 @@ jobs:
           name: maven-repo
           path: ${{ runner.temp }}/maven-repo.tgz
           retention-days: 1
+      - name: Save Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        if: always()
+        with:
+          action: save
+          cache-key: ${{ steps.maven-cache.outputs.cache-key }}
       - name: Setup Native Test Matrix
         id: set-native-matrix
         run: |
           CATEGORIES=$(yq -M -N -I 0 -o=json e 'keys' 
tooling/scripts/test-categories.yaml | tr '"' "'")
           echo "matrix={'category': ${CATEGORIES}}" >> $GITHUB_OUTPUT
-      - name: Setup Alternate JVM Matrix
-        id: set-alternate-jvm-matrix
-        shell: bash
-        run: |
-          cd integration-tests
-          mvn help:evaluate -Dexpression=project.modules -N -q -DforceStdout | 
sed -e 's/<[^>]*>//g' -e 's/^[[:space:]]*//' -e '/^$/d' > ${{ runner.temp 
}}/itest-modules.txt
-          MODULE_COUNT=$(wc -l < ${{ runner.temp }}/itest-modules.txt)
-          GROUP1_COUNT=$((MODULE_COUNT / 2))
-          GROUP2_COUNT=$((MODULE_COUNT - GROUP1_COUNT))
-          GROUP1_MODULES=$(head -n $GROUP1_COUNT ${{ runner.temp 
}}/itest-modules.txt | tr '\n' ',' | sed 's/,$//')
-          GROUP2_MODULES=$(tail -n $GROUP2_COUNT ${{ runner.temp 
}}/itest-modules.txt | tr '\n' ',' | sed 's/,$//')
-          echo "alternate-jvm-matrix={'include': [{'name': 'group-01', 
'modules': '${GROUP1_MODULES}'},{'name': 'group-02', 'modules': 
'${GROUP2_MODULES}'}]}" >> $GITHUB_OUTPUT
       - name: Setup Examples Matrix
         id: set-examples-matrix
         run: |
@@ -144,23 +141,16 @@ jobs:
       fail-fast: false
       matrix: ${{ fromJson(needs.initial-mvn-install.outputs.matrix) }}
     steps:
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
-        with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
       - name: Checkout
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
         with:
           ref: camel-main
           fetch-depth: 0
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        with:
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: Reclaim Disk Space
         run: .github/reclaim-disk-space.sh
       - name: Rebase branch main onto camel-main
@@ -231,23 +221,16 @@ jobs:
     env:
       MAVEN_OPTS: -Xmx3000m
     steps:
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
-        with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
       - name: Checkout
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
         with:
           ref: camel-main
           fetch-depth: 0
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        with:
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: Rebase branch main onto camel-main
         run: |
           git config --local user.email 
"41898282+github-actions[bot]@users.noreply.github.com"
@@ -333,23 +316,16 @@ jobs:
     env:
       MAVEN_OPTS: -Xmx3000m
     steps:
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
-        with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
       - name: Checkout
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
         with:
           ref: camel-main
           fetch-depth: 0
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        with:
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: Rebase branch main onto camel-main
         run: |
           git config --local user.email 
"41898282+github-actions[bot]@users.noreply.github.com"
@@ -378,62 +354,6 @@ jobs:
         run: |
           ./mvnw ${CQ_MAVEN_ARGS} verify -N -Pbuild-notification -Dstatus=${{ 
job.status }} -DissueId=${{ env.ISSUE_ID }} -Dtoken=${{ secrets.GITHUB_TOKEN }} 
-DbuildId=$(cat ~/build-data/build-id.txt) -Drepo=${GITHUB_REPOSITORY} 
-Dbranch=camel-main -Dbranch-commit=$(cat ~/build-data/main-sha.txt)
 
-  integration-tests-alternative-jdk:
-    runs-on: ubuntu-latest
-    needs: initial-mvn-install
-    strategy:
-      fail-fast: false
-      matrix: ${{ 
fromJson(needs.initial-mvn-install.outputs.alternate-jvm-matrix) }}
-    env:
-      MAVEN_OPTS: -Xmx3000m
-    steps:
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
-        with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
-      - name: Checkout
-        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
-        with:
-          ref: camel-main
-          fetch-depth: 0
-      - name: Rebase branch main onto camel-main
-        run: |
-          git config --local user.email 
"41898282+github-actions[bot]@users.noreply.github.com"
-          git config --local user.name "github-actions[bot]"
-          git fetch origin main
-          git rebase $(cat ~/build-data/main-sha.txt)          
-      - name: Reclaim Disk Space
-        run: .github/reclaim-disk-space.sh
-      - name: Set up JDK 21
-        uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # 
v5.2.0
-        with:
-          distribution: 'temurin'
-          java-version: '21'
-      - name: cd integration-tests && mvn clean verify
-        shell: bash
-        env:
-          TEST_MODULES: ${{matrix.modules}}
-        run: |
-          cd integration-tests
-          ../mvnw ${CQ_MAVEN_ARGS} ${BRANCH_OPTIONS} \
-            -pl "${TEST_MODULES// /,}" \
-            -Dformatter.skip -Dimpsort.skip -Denforcer.skip \
-            --fail-at-end \
-            clean verify
-      - name: Report test failures
-        uses: ./.github/actions/test-summary-report
-        if: ${{ failure() }}
-        with:
-          test-report-xml-base-dir: integration-tests
-
   integration-tests-alternative-platform:
     runs-on: ${{ matrix.os }}
     needs: initial-mvn-install
@@ -444,21 +364,16 @@ jobs:
     env:
       MAVEN_OPTS: -Xmx3000m
     steps:
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
-        with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
       - name: Checkout
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
         with:
           ref: camel-main
           fetch-depth: 0
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        with:
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: Rebase branch main onto camel-main
         run: |
           git config --local user.email 
"41898282+github-actions[bot]@users.noreply.github.com"
@@ -502,23 +417,16 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: '17'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
-        with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
       - name: Checkout
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
         with:
           ref: camel-main
           fetch-depth: 0
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        with:
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: Rebase branch main onto camel-main
         run: |
           git config --local user.email 
"41898282+github-actions[bot]@users.noreply.github.com"
@@ -587,23 +495,16 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: '17'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
-        with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
       - name: Checkout
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
         with:
           ref: camel-main
           fetch-depth: 0
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        with:
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: Rebase branch main onto camel-main
         run: |
           git config --local user.email 
"41898282+github-actions[bot]@users.noreply.github.com"
diff --git a/.github/workflows/check-dependency-convergence.yml 
b/.github/workflows/check-dependency-convergence.yml
index aee6c7c27f..d088e04e48 100644
--- a/.github/workflows/check-dependency-convergence.yml
+++ b/.github/workflows/check-dependency-convergence.yml
@@ -47,6 +47,12 @@ jobs:
           java-version: '17'
       - name: Checkout
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        with:
+          maven-properties: |
+            jira-rest-client.version
+            quarkiverse-cxf.version
       - name: Set Build Info
         run: |
           [ ! -d ~/build-data ] && mkdir -p ~/build-data
diff --git a/.github/workflows/ci-build.yaml b/.github/workflows/ci-build.yaml
index a95ddb97dc..fa03efd29d 100644
--- a/.github/workflows/ci-build.yaml
+++ b/.github/workflows/ci-build.yaml
@@ -119,6 +119,13 @@ jobs:
         with:
           ref: ${{ env.CHECKOUT_REF }}
           fetch-depth: 0
+      - name: Setup Maven Cache
+        if: steps.init.outputs.run-checks == 'true'
+        uses: ./.github/actions/setup-maven-cache
+        with:
+          maven-properties: |
+            jira-rest-client.version
+            quarkiverse-cxf.version
       - name: Pre build checks
         id: pre-build-checks
         run: |
@@ -157,7 +164,7 @@ jobs:
     outputs:
       matrix: ${{ steps.set-native-matrix.outputs.matrix }}
       examples-matrix: ${{ steps.set-examples-matrix.outputs.examples-matrix }}
-      alternate-jvm-matrix: ${{ 
steps.set-alternate-jvm-matrix.outputs.alternate-jvm-matrix }}
+      cache-key: ${{ steps.maven-cache.outputs.cache-key }}
     env:
       MAVEN_OPTS: -Xmx4600m
     steps:
@@ -190,6 +197,9 @@ jobs:
         with:
           ref: ${{ env.CHECKOUT_REF }}
           fetch-depth: 0
+      - name: Setup Maven Cache
+        id: maven-cache
+        uses: ./.github/actions/setup-maven-cache
       - name: Update extension metadata
         run: |
           ./mvnw -N cq:update-quarkus-metadata ${CQ_MAVEN_ARGS}
@@ -215,23 +225,17 @@ jobs:
           name: maven-repo
           path: ${{ runner.temp }}/maven-repo.tgz
           retention-days: 1
+      - name: Save Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        if: always()
+        with:
+          action: save
+          cache-key: ${{ steps.maven-cache.outputs.cache-key }}
       - name: Setup Native Test Matrix
         id: set-native-matrix
         run: |
           CATEGORIES=$(yq -M -N -I 0 -o=json e 'keys' 
tooling/scripts/test-categories.yaml | tr '"' "'")
           echo "matrix={'category': ${CATEGORIES}}" >> $GITHUB_OUTPUT
-      - name: Setup Alternate JVM Matrix
-        id: set-alternate-jvm-matrix
-        shell: bash
-        run: |
-          cd integration-tests
-          mvn help:evaluate -Dexpression=project.modules -N -q -DforceStdout | 
sed -e 's/<[^>]*>//g' -e 's/^[[:space:]]*//' -e '/^$/d' > ${{ runner.temp 
}}/itest-modules.txt
-          MODULE_COUNT=$(wc -l < ${{ runner.temp }}/itest-modules.txt)
-          GROUP1_COUNT=$((MODULE_COUNT / 2))
-          GROUP2_COUNT=$((MODULE_COUNT - GROUP1_COUNT))
-          GROUP1_MODULES=$(head -n $GROUP1_COUNT ${{ runner.temp 
}}/itest-modules.txt | tr '\n' ',' | sed 's/,$//')
-          GROUP2_MODULES=$(tail -n $GROUP2_COUNT ${{ runner.temp 
}}/itest-modules.txt | tr '\n' ',' | sed 's/,$//')
-          echo "alternate-jvm-matrix={'include': [{'name': 'group-01', 
'modules': '${GROUP1_MODULES}'},{'name': 'group-02', 'modules': 
'${GROUP2_MODULES}'}]}" >> $GITHUB_OUTPUT
       - name: Setup Examples Matrix
         id: set-examples-matrix
         run: |
@@ -267,18 +271,11 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: '17'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: Integration Tests
         run: |
           for MODULE in $(yq -M -N e ".${{ matrix.category }}" 
tooling/scripts/test-categories.yaml | grep -vE '^\s*#' | cut -f2 -d' '); do
@@ -343,18 +340,11 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: '17'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: cd extensions-core && mvn test
         run: |
           cd extensions-core
@@ -435,18 +425,11 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: ${{ matrix.java }}
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: cd integration-tests-jvm && mvn clean test
         run: |
           cd integration-tests-jvm
@@ -460,58 +443,6 @@ jobs:
         with:
           test-report-xml-base-dir: integration-tests-jvm
 
-  integration-tests-alternative-jdk:
-    name: Integration Tests Alternative JDK 21 ${{matrix.name}}
-    runs-on: ubuntu-latest
-    needs: initial-mvn-install
-    if: github.event_name != 'pull_request' || 
!contains(github.event.pull_request.labels.*.name, 'JVM')
-    strategy:
-      fail-fast: false
-      matrix: ${{ 
fromJson(needs.initial-mvn-install.outputs.alternate-jvm-matrix) }}
-    env:
-      MAVEN_OPTS: -Xmx3000m
-    steps:
-      - name: Checkout
-        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
-        with:
-          ref: ${{ env.CHECKOUT_REF }}
-          fetch-depth: 0
-      - name: Reclaim Disk Space
-        run: .github/reclaim-disk-space.sh
-      - name: Set up JDK 21
-        uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # 
v5.2.0
-        with:
-          distribution: 'temurin'
-          java-version: '21'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
-        with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
-      - name: cd integration-tests && mvn clean verify
-        shell: bash
-        env:
-          TEST_MODULES: ${{matrix.modules}}
-        run: |
-          cd integration-tests
-          ../mvnw ${CQ_MAVEN_ARGS} ${BRANCH_OPTIONS} \
-            -pl "${TEST_MODULES// /,}" \
-            -Dformatter.skip -Dimpsort.skip -Denforcer.skip \
-            --fail-at-end \
-            clean verify
-      - name: Report test failures
-        uses: ./.github/actions/test-summary-report
-        if: ${{ failure() }}
-        with:
-          test-report-xml-base-dir: integration-tests
-
   integration-tests-alternative-platform:
     runs-on: ${{ matrix.os }}
     needs: initial-mvn-install
@@ -533,27 +464,16 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: '17'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          mkdir "D:\\temp"
-          mkdir "D:\\maven-repo"
-          tar -xzf ../maven-repo.tgz -C "D:\\maven-repo"
-          rm -f ../maven-repo.tgz
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: cd integration-tests && mvn clean verify
         shell: bash
-        env:
-          TEMP: D:\\temp
-          TMP: D:\\temp
-          MAVEN_REPO_LOCAL: D:\\maven-repo\.m2\repository
         run: |
           cd integration-tests
-          ../mvnw ${CQ_MAVEN_ARGS} ${BRANCH_OPTIONS} -Dmaven.repo.local='${{ 
env.MAVEN_REPO_LOCAL }}' \
+          ../mvnw ${CQ_MAVEN_ARGS} ${BRANCH_OPTIONS} \
             -Dskip-testcontainers-tests -Dformatter.skip -Dimpsort.skip 
-Denforcer.skip \
             --fail-at-end \
             clean verify
@@ -579,18 +499,11 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: '17'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: set CQ_VERSION
         run: echo "CQ_VERSION=$(./mvnw help:evaluate 
-Dexpression=project.version -q -DforceStdout -N)" >> $GITHUB_ENV
       - name: clone and verify examples
diff --git a/.github/workflows/ci-semeru-jdk.yaml 
b/.github/workflows/ci-semeru-jdk.yaml
index 18f19e805d..7106892e07 100644
--- a/.github/workflows/ci-semeru-jdk.yaml
+++ b/.github/workflows/ci-semeru-jdk.yaml
@@ -41,7 +41,7 @@ jobs:
     outputs:
       matrix: ${{ steps.set-native-matrix.outputs.matrix }}
       examples-matrix: ${{ steps.set-examples-matrix.outputs.examples-matrix }}
-      alternate-jvm-matrix: ${{ 
steps.set-alternate-jvm-matrix.outputs.alternate-jvm-matrix }}
+      cache-key: ${{ steps.maven-cache.outputs.cache-key }}
     env:
       MAVEN_OPTS: -Xmx4600m
     steps:
@@ -58,6 +58,9 @@ jobs:
         with:
           ref: ${{ env.CHECKOUT_REF }}
           fetch-depth: 0
+      - name: Setup Maven Cache
+        id: maven-cache
+        uses: ./.github/actions/setup-maven-cache
       - name: Update extension metadata
         run: |
           ./mvnw -N cq:update-quarkus-metadata ${CQ_MAVEN_ARGS}
@@ -83,23 +86,17 @@ jobs:
           name: maven-repo
           path: ${{ runner.temp }}/maven-repo.tgz
           retention-days: 1
+      - name: Save Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        if: always()
+        with:
+          action: save
+          cache-key: ${{ steps.maven-cache.outputs.cache-key }}
       - name: Setup Native Test Matrix
         id: set-native-matrix
         run: |
           CATEGORIES=$(yq -M -N -I 0 -o=json e 'keys' 
tooling/scripts/test-categories.yaml | tr '"' "'")
           echo "matrix={'category': ${CATEGORIES}}" >> $GITHUB_OUTPUT
-      - name: Setup Alternate JVM Matrix
-        id: set-alternate-jvm-matrix
-        shell: bash
-        run: |
-          cd integration-tests
-          mvn help:evaluate -Dexpression=project.modules -N -q -DforceStdout | 
sed -e 's/<[^>]*>//g' -e 's/^[[:space:]]*//' -e '/^$/d' > ${{ runner.temp 
}}/itest-modules.txt
-          MODULE_COUNT=$(wc -l < ${{ runner.temp }}/itest-modules.txt)
-          GROUP1_COUNT=$((MODULE_COUNT / 2))
-          GROUP2_COUNT=$((MODULE_COUNT - GROUP1_COUNT))
-          GROUP1_MODULES=$(head -n $GROUP1_COUNT ${{ runner.temp 
}}/itest-modules.txt | tr '\n' ',' | sed 's/,$//')
-          GROUP2_MODULES=$(tail -n $GROUP2_COUNT ${{ runner.temp 
}}/itest-modules.txt | tr '\n' ',' | sed 's/,$//')
-          echo "alternate-jvm-matrix={'include': [{'name': 'group-01', 
'modules': '${GROUP1_MODULES}'},{'name': 'group-02', 'modules': 
'${GROUP2_MODULES}'}]}" >> $GITHUB_OUTPUT
       - name: Setup Examples Matrix
         id: set-examples-matrix
         run: |
@@ -134,18 +131,11 @@ jobs:
         with:
           distribution: 'semeru'
           java-version: '21'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: Integration Tests
         run: |
           for MODULE in $(yq -M -N e ".${{ matrix.category }}" 
tooling/scripts/test-categories.yaml | grep -vE '^\s*#' | cut -f2 -d' '); do
@@ -209,18 +199,11 @@ jobs:
         with:
           distribution: 'semeru'
           java-version: '21'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: cd extensions-core && mvn test
         run: |
           cd extensions-core
@@ -301,18 +284,11 @@ jobs:
         with:
           distribution: 'semeru'
           java-version: ${{ matrix.java }}
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: cd integration-tests-jvm && mvn clean test
         run: |
           cd integration-tests-jvm
@@ -346,16 +322,11 @@ jobs:
         with:
           distribution: 'semeru'
           java-version: '21'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: cd integration-tests && mvn clean verify
         shell: bash
         run: |
@@ -385,18 +356,11 @@ jobs:
         with:
           distribution: 'semeru'
           java-version: '21'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: set CQ_VERSION
         run: echo "CQ_VERSION=$(./mvnw help:evaluate 
-Dexpression=project.version -q -DforceStdout -N)" >> $GITHUB_ENV
       - name: clone and verify examples
diff --git a/.github/workflows/generate-sbom-main.yml 
b/.github/workflows/generate-sbom-main.yml
index fed08ec79d..43c4eeedd2 100644
--- a/.github/workflows/generate-sbom-main.yml
+++ b/.github/workflows/generate-sbom-main.yml
@@ -50,6 +50,12 @@ jobs:
           distribution: 'temurin'
           java-version: ${{ matrix.java }}
           cache: 'maven'
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        with:
+          maven-properties: |
+            jira-rest-client.version
+            quarkiverse-cxf.version
       - name: mvn build and sbom generation
         run: ./mvnw -V --no-transfer-progress -e -Psbom -Dquickly -DskipTests 
verify ${CQ_MAVEN_ARGS}
       - name: Create Pull Request
diff --git a/.github/workflows/jdk25-build.yaml 
b/.github/workflows/jdk25-build.yaml
index 735e02bb3a..488cfe7f68 100644
--- a/.github/workflows/jdk25-build.yaml
+++ b/.github/workflows/jdk25-build.yaml
@@ -44,7 +44,7 @@ jobs:
     outputs:
       matrix: ${{ steps.set-native-matrix.outputs.matrix }}
       examples-matrix: ${{ steps.set-examples-matrix.outputs.examples-matrix }}
-      alternate-jvm-matrix: ${{ 
steps.set-alternate-jvm-matrix.outputs.alternate-jvm-matrix }}
+      cache-key: ${{ steps.maven-cache.outputs.cache-key }}
     env:
       MAVEN_OPTS: -Xmx4600m
     steps:
@@ -61,6 +61,9 @@ jobs:
         with:
           ref: ${{ env.CHECKOUT_REF }}
           fetch-depth: 0
+      - name: Setup Maven Cache
+        id: maven-cache
+        uses: ./.github/actions/setup-maven-cache
       - name: Update extension metadata
         run: |
           ./mvnw -N cq:update-quarkus-metadata ${CQ_MAVEN_ARGS}
@@ -86,23 +89,17 @@ jobs:
           name: maven-repo
           path: ${{ runner.temp }}/maven-repo.tgz
           retention-days: 1
+      - name: Save Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        if: always()
+        with:
+          action: save
+          cache-key: ${{ steps.maven-cache.outputs.cache-key }}
       - name: Setup Native Test Matrix
         id: set-native-matrix
         run: |
           CATEGORIES=$(yq -M -N -I 0 -o=json e 'keys' 
tooling/scripts/test-categories.yaml | tr '"' "'")
           echo "matrix={'category': ${CATEGORIES}}" >> $GITHUB_OUTPUT
-      - name: Setup Alternate JVM Matrix
-        id: set-alternate-jvm-matrix
-        shell: bash
-        run: |
-          cd integration-tests
-          mvn help:evaluate -Dexpression=project.modules -N -q -DforceStdout | 
sed -e 's/<[^>]*>//g' -e 's/^[[:space:]]*//' -e '/^$/d' > ${{ runner.temp 
}}/itest-modules.txt
-          MODULE_COUNT=$(wc -l < ${{ runner.temp }}/itest-modules.txt)
-          GROUP1_COUNT=$((MODULE_COUNT / 2))
-          GROUP2_COUNT=$((MODULE_COUNT - GROUP1_COUNT))
-          GROUP1_MODULES=$(head -n $GROUP1_COUNT ${{ runner.temp 
}}/itest-modules.txt | tr '\n' ',' | sed 's/,$//')
-          GROUP2_MODULES=$(tail -n $GROUP2_COUNT ${{ runner.temp 
}}/itest-modules.txt | tr '\n' ',' | sed 's/,$//')
-          echo "alternate-jvm-matrix={'include': [{'name': 'group-01', 
'modules': '${GROUP1_MODULES}'},{'name': 'group-02', 'modules': 
'${GROUP2_MODULES}'}]}" >> $GITHUB_OUTPUT
       - name: Setup Examples Matrix
         id: set-examples-matrix
         run: |
@@ -138,18 +135,11 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: '25'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: Integration Tests
         run: |
           for MODULE in $(yq -M -N e ".${{ matrix.category }}" 
tooling/scripts/test-categories.yaml | grep -vE '^\s*#' | cut -f2 -d' '); do
@@ -213,18 +203,11 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: '25'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: cd extensions-core && mvn test
         run: |
           cd extensions-core
@@ -305,18 +288,11 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: ${{ matrix.java }}
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: cd integration-tests-jvm && mvn clean test
         run: |
           cd integration-tests-jvm
@@ -350,16 +326,11 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: '25'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: cd integration-tests && mvn clean verify
         shell: bash
         run: |
@@ -389,18 +360,11 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: '25'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: set CQ_VERSION
         run: echo "CQ_VERSION=$(./mvnw help:evaluate 
-Dexpression=project.version -q -DforceStdout -N)" >> $GITHUB_ENV
       - name: clone and verify examples
diff --git a/.github/workflows/pr-validate.yml 
b/.github/workflows/pr-validate.yml
index 525eff1c2e..3a10c140e7 100644
--- a/.github/workflows/pr-validate.yml
+++ b/.github/workflows/pr-validate.yml
@@ -82,10 +82,19 @@ jobs:
       with:
         distribution: 'temurin'
         java-version: '17'
+    - name: Setup Maven Cache
+      id: maven-cache
+      uses: ./.github/actions/setup-maven-cache
     - name: mvn validate
       run: |
         ./mvnw ${CQ_MAVEN_ARGS} ${BRANCH_OPTIONS} -fae \
           -DskipTests \
           -Pcheck-format \
           clean validate
+    - name: Save Maven Cache
+      uses: ./.github/actions/setup-maven-cache
+      if: always()
+      with:
+        action: save
+        cache-key: ${{ steps.maven-cache.outputs.cache-key }}
 
diff --git a/.github/workflows/quarkus-lts-ci-build.yaml 
b/.github/workflows/quarkus-lts-ci-build.yaml
index 56d498b1d4..e36e18e21e 100644
--- a/.github/workflows/quarkus-lts-ci-build.yaml
+++ b/.github/workflows/quarkus-lts-ci-build.yaml
@@ -45,7 +45,7 @@ jobs:
     outputs:
       matrix: ${{ steps.set-native-matrix.outputs.matrix }}
       examples-matrix: ${{ steps.set-examples-matrix.outputs.examples-matrix }}
-      alternate-jvm-matrix: ${{ 
steps.set-alternate-jvm-matrix.outputs.alternate-jvm-matrix }}
+      cache-key: ${{ steps.maven-cache.outputs.cache-key }}
     env:
       MAVEN_OPTS: -Xmx4600m
     steps:
@@ -69,6 +69,9 @@ jobs:
         with:
           ref: ${{ github.event.inputs.branch }}.x
           fetch-depth: 0
+      - name: Setup Maven Cache
+        id: maven-cache
+        uses: ./.github/actions/setup-maven-cache
       - name: Set Quarkus SNAPSHOT Version
         run: |
           sed -i 
's/<quarkus.version>.*<\/quarkus.version>/<quarkus.version>${{github.event.inputs.branch}}.999-SNAPSHOT<\/quarkus.version>/'
 pom.xml
@@ -97,23 +100,17 @@ jobs:
           name: maven-repo
           path: ${{ runner.temp }}/maven-repo.tgz
           retention-days: 1
+      - name: Save Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        if: always()
+        with:
+          action: save
+          cache-key: ${{ steps.maven-cache.outputs.cache-key }}
       - name: Setup Native Test Matrix
         id: set-native-matrix
         run: |
           CATEGORIES=$(yq -M -N -I 0 -o=json e 'keys' 
tooling/scripts/test-categories.yaml | tr '"' "'")
           echo "matrix={'category': ${CATEGORIES}}" >> $GITHUB_OUTPUT
-      - name: Setup Alternate JVM Matrix
-        id: set-alternate-jvm-matrix
-        shell: bash
-        run: |
-          cd integration-tests
-          mvn help:evaluate -Dexpression=project.modules -N -q -DforceStdout | 
sed -e 's/<[^>]*>//g' -e 's/^[[:space:]]*//' -e '/^$/d' > ${{ runner.temp 
}}/itest-modules.txt
-          MODULE_COUNT=$(wc -l < ${{ runner.temp }}/itest-modules.txt)
-          GROUP1_COUNT=$((MODULE_COUNT / 2))
-          GROUP2_COUNT=$((MODULE_COUNT - GROUP1_COUNT))
-          GROUP1_MODULES=$(head -n $GROUP1_COUNT ${{ runner.temp 
}}/itest-modules.txt | tr '\n' ',' | sed 's/,$//')
-          GROUP2_MODULES=$(tail -n $GROUP2_COUNT ${{ runner.temp 
}}/itest-modules.txt | tr '\n' ',' | sed 's/,$//')
-          echo "alternate-jvm-matrix={'include': [{'name': 'group-01', 
'modules': '${GROUP1_MODULES}'},{'name': 'group-02', 'modules': 
'${GROUP2_MODULES}'}]}" >> $GITHUB_OUTPUT
       - name: Setup Examples Matrix
         id: set-examples-matrix
         run: |
@@ -145,18 +142,11 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: '17'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: Integration Tests
         run: |
           for MODULE in $(yq -M -N e ".${{ matrix.category }}" 
tooling/scripts/test-categories.yaml | grep -vE '^\s*#' | cut -f2 -d' '); do
@@ -223,18 +213,11 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: '17'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: cd extensions-core && mvn test
         run: |
           cd extensions-core
@@ -318,18 +301,11 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: ${{ matrix.java }}
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: cd integration-tests-jvm && mvn clean test
         run: |
           cd integration-tests-jvm
@@ -343,60 +319,6 @@ jobs:
         with:
           test-report-xml-base-dir: integration-tests-jvm
 
-  integration-tests-alternative-jdk:
-    name: Integration Tests Alternative JDK 21 ${{matrix.name}}
-    runs-on: ubuntu-latest
-    needs: initial-mvn-install
-    strategy:
-      fail-fast: false
-      matrix: ${{ 
fromJson(needs.initial-mvn-install.outputs.alternate-jvm-matrix) }}
-    env:
-      MAVEN_OPTS: -Xmx3000m
-    steps:
-      - name: Checkout
-        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
-        with:
-          ref: ${{ github.event.inputs.branch }}.x
-          fetch-depth: 0
-      - name: Set Quarkus SNAPSHOT Version
-        run: |
-          sed -i 
's/<quarkus.version>.*<\/quarkus.version>/<quarkus.version>${{github.event.inputs.branch}}.999-SNAPSHOT<\/quarkus.version>/'
 pom.xml
-      - name: Reclaim Disk Space
-        run: .github/reclaim-disk-space.sh
-      - name: Set up JDK 21
-        uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # 
v5.2.0
-        with:
-          distribution: 'temurin'
-          java-version: '21'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
-        with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
-      - name: cd integration-tests && mvn clean verify
-        shell: bash
-        env:
-          TEST_MODULES: ${{matrix.modules}}
-        run: |
-          cd integration-tests
-          ../mvnw ${CQ_MAVEN_ARGS} ${BRANCH_OPTIONS} \
-            -pl "${TEST_MODULES// /,}" \
-            -Dformatter.skip -Dimpsort.skip -Denforcer.skip \
-            --fail-at-end \
-            clean verify
-      - name: Report test failures
-        uses: ./.github/actions/test-summary-report
-        if: ${{ failure() }}
-        with:
-          test-report-xml-base-dir: integration-tests
-
   integration-tests-alternative-platform:
     runs-on: ${{ matrix.os }}
     needs: initial-mvn-install
@@ -421,16 +343,11 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: '17'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: cd integration-tests && mvn clean verify
         shell: bash
         run: |
@@ -458,18 +375,11 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: '17'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
         with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: set CQ_VERSION
         run: echo "CQ_VERSION=$(./mvnw help:evaluate 
-Dexpression=project.version -q -DforceStdout -N)" >> $GITHUB_ENV
       - name: clone and verify examples
diff --git a/.github/workflows/quarkus-master-cron.yaml 
b/.github/workflows/quarkus-master-cron.yaml
index bb6ad19bdf..c132345b97 100644
--- a/.github/workflows/quarkus-master-cron.yaml
+++ b/.github/workflows/quarkus-master-cron.yaml
@@ -36,7 +36,7 @@ jobs:
     outputs:
       matrix: ${{ steps.set-native-matrix.outputs.matrix }}
       examples-matrix: ${{ steps.set-examples-matrix.outputs.examples-matrix }}
-      alternate-jvm-matrix: ${{ 
steps.set-alternate-jvm-matrix.outputs.alternate-jvm-matrix }}
+      cache-key: ${{ steps.maven-cache.outputs.cache-key }}
     env:
       MAVEN_OPTS: -Xmx4600m
     steps:
@@ -57,6 +57,9 @@ jobs:
         with:
           ref: quarkus-main
           fetch-depth: 0
+      - name: Setup Maven Cache
+        id: maven-cache
+        uses: ./.github/actions/setup-maven-cache
       - name: Rebase branch main onto quarkus-main
         run: |
           git config --local user.email 
"41898282+github-actions[bot]@users.noreply.github.com"
@@ -97,23 +100,17 @@ jobs:
           name: maven-repo
           path: ${{ runner.temp }}/maven-repo.tgz
           retention-days: 1
+      - name: Save Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        if: always()
+        with:
+          action: save
+          cache-key: ${{ steps.maven-cache.outputs.cache-key }}
       - name: Setup Native Test Matrix
         id: set-native-matrix
         run: |
           CATEGORIES=$(yq -M -N -I 0 -o=json e 'keys' 
tooling/scripts/test-categories.yaml | tr '"' "'")
           echo "matrix={'category': ${CATEGORIES}}" >> $GITHUB_OUTPUT
-      - name: Setup Alternate JVM Matrix
-        id: set-alternate-jvm-matrix
-        shell: bash
-        run: |
-          cd integration-tests
-          mvn help:evaluate -Dexpression=project.modules -N -q -DforceStdout | 
sed -e 's/<[^>]*>//g' -e 's/^[[:space:]]*//' -e '/^$/d' > ${{ runner.temp 
}}/itest-modules.txt
-          MODULE_COUNT=$(wc -l < ${{ runner.temp }}/itest-modules.txt)
-          GROUP1_COUNT=$((MODULE_COUNT / 2))
-          GROUP2_COUNT=$((MODULE_COUNT - GROUP1_COUNT))
-          GROUP1_MODULES=$(head -n $GROUP1_COUNT ${{ runner.temp 
}}/itest-modules.txt | tr '\n' ',' | sed 's/,$//')
-          GROUP2_MODULES=$(tail -n $GROUP2_COUNT ${{ runner.temp 
}}/itest-modules.txt | tr '\n' ',' | sed 's/,$//')
-          echo "alternate-jvm-matrix={'include': [{'name': 'group-01', 
'modules': '${GROUP1_MODULES}'},{'name': 'group-02', 'modules': 
'${GROUP2_MODULES}'}]}" >> $GITHUB_OUTPUT
       - name: Setup Examples Matrix
         id: set-examples-matrix
         run: |
@@ -145,23 +142,16 @@ jobs:
       fail-fast: false
       matrix: ${{ fromJson(needs.initial-mvn-install.outputs.matrix) }}
     steps:
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
-        with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
       - name: Checkout
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
         with:
           ref: quarkus-main
           fetch-depth: 0
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        with:
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: Reclaim Disk Space
         run: .github/reclaim-disk-space.sh
       - name: Rebase branch main onto quarkus-main
@@ -232,23 +222,16 @@ jobs:
     env:
       MAVEN_OPTS: -Xmx3000m
     steps:
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
-        with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
       - name: Checkout
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
         with:
           ref: quarkus-main
           fetch-depth: 0
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        with:
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: Rebase branch main onto quarkus-main
         run: |
           git config --local user.email 
"41898282+github-actions[bot]@users.noreply.github.com"
@@ -334,23 +317,16 @@ jobs:
     env:
       MAVEN_OPTS: -Xmx3000m
     steps:
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
-        with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
       - name: Checkout
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
         with:
           ref: quarkus-main
           fetch-depth: 0
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        with:
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: Rebase branch main onto quarkus-main
         run: |
           git config --local user.email 
"41898282+github-actions[bot]@users.noreply.github.com"
@@ -379,62 +355,6 @@ jobs:
         run: |
           ./mvnw ${CQ_MAVEN_ARGS} verify -N -Pbuild-notification -Dstatus=${{ 
job.status }} -DissueId=${{ env.ISSUE_ID }} -Dtoken=${{ secrets.GITHUB_TOKEN }} 
-DbuildId=$(cat ~/build-data/build-id.txt) -Drepo=${GITHUB_REPOSITORY} 
-Dbranch=quarkus-main -Dbranch-commit=$(cat ~/build-data/main-sha.txt)
 
-  integration-tests-alternative-jdk:
-    runs-on: ubuntu-latest
-    needs: initial-mvn-install
-    strategy:
-      fail-fast: false
-      matrix: ${{ 
fromJson(needs.initial-mvn-install.outputs.alternate-jvm-matrix) }}
-    env:
-      MAVEN_OPTS: -Xmx3000m
-    steps:
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
-        with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
-      - name: Checkout
-        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
-        with:
-          ref: quarkus-main
-          fetch-depth: 0
-      - name: Rebase branch main onto quarkus-main
-        run: |
-          git config --local user.email 
"41898282+github-actions[bot]@users.noreply.github.com"
-          git config --local user.name "github-actions[bot]"
-          git fetch origin main
-          git rebase $(cat ~/build-data/main-sha.txt)          
-      - name: Reclaim Disk Space
-        run: .github/reclaim-disk-space.sh
-      - name: Set up JDK 21
-        uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # 
v5.2.0
-        with:
-          distribution: 'temurin'
-          java-version: '21'
-      - name: cd integration-tests && mvn clean verify
-        shell: bash
-        env:
-          TEST_MODULES: ${{matrix.modules}}
-        run: |
-          cd integration-tests
-          ../mvnw ${CQ_MAVEN_ARGS} ${BRANCH_OPTIONS} \
-            -pl "${TEST_MODULES// /,}" \
-            -Dformatter.skip -Dimpsort.skip -Denforcer.skip \
-            --fail-at-end \
-            clean verify
-      - name: Report test failures
-        uses: ./.github/actions/test-summary-report
-        if: ${{ failure() }}
-        with:
-          test-report-xml-base-dir: integration-tests
-
   integration-tests-alternative-platform:
     runs-on: ${{ matrix.os }}
     needs: initial-mvn-install
@@ -445,21 +365,16 @@ jobs:
     env:
       MAVEN_OPTS: -Xmx3000m
     steps:
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
-        with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
       - name: Checkout
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
         with:
           ref: quarkus-main
           fetch-depth: 0
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        with:
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: Rebase branch main onto quarkus-main
         run: |
           git config --local user.email 
"41898282+github-actions[bot]@users.noreply.github.com"
@@ -503,23 +418,16 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: '17'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
-        with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
       - name: Checkout
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
         with:
           ref: quarkus-main
           fetch-depth: 0
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        with:
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: Rebase branch main onto quarkus-main
         run: |
           git config --local user.email 
"41898282+github-actions[bot]@users.noreply.github.com"
@@ -588,23 +496,16 @@ jobs:
         with:
           distribution: 'temurin'
           java-version: '17'
-      - name: Download Maven Repo
-        uses: 
actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
-        with:
-          name: maven-repo
-          path: ..
-      - name: Extract Maven Repo
-        shell: bash
-        run: |
-          df -h /
-          tar -xzf ../maven-repo.tgz -C ~
-          rm -f ../maven-repo.tgz
-          df -h /
       - name: Checkout
         uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 
v6.0.2
         with:
           ref: quarkus-main
           fetch-depth: 0
+      - name: Setup Maven Cache
+        uses: ./.github/actions/setup-maven-cache
+        with:
+          cache-key: ${{ needs.initial-mvn-install.outputs.cache-key }}
+          download-maven-repo: 'true'
       - name: Rebase branch main onto quarkus-main
         run: |
           git config --local user.email 
"41898282+github-actions[bot]@users.noreply.github.com"

Reply via email to