feat: use `maven-reusable.yml` workflow

Replaces the local `maven.yml` workflow with the shared `maven-reusable.yml` from `commons-parent`.

This simplifies maintenance and ensures consistency across Commons projects, eliminating the need to update this workflow unless breaking changes occur.
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index aabe25e..3328892 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -15,40 +15,16 @@
 
 name: Java CI
 
-on: [push, pull_request]
+on:
+  push:
+    # TODO: remove "feat/reusable-workflow" branch before merging.
+    branches: [ "master", "release", "feat/reusable-workflow" ]
+  pull_request: { }
 
-permissions:
-  contents: read
+# Explicitly drop all permissions for security.
+permissions: { }
 
 jobs:
   build:
-
-    runs-on: ${{ matrix.os }}
-    continue-on-error: ${{ matrix.experimental }}
-    strategy:
-      matrix:
-        os: [ubuntu-latest, windows-latest, macos-13]
-        java: [ 8, 11, 17, 21, 25 ]
-        experimental: [false]
-        include:
-          - java: 26-ea
-            experimental: true
-            os: ubuntu-latest
-
-    steps:
-    - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
-      with:
-        persist-credentials: false
-    - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
-      with:
-        path: ~/.m2/repository
-        key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-        restore-keys: |
-          ${{ runner.os }}-maven-
-    - name: Set up JDK ${{ matrix.java }}
-      uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
-      with:
-        distribution: 'temurin'      
-        java-version: ${{ matrix.java }}
-    - name: Build with Maven
-      run: mvn --errors --show-version --batch-mode --no-transfer-progress -Ddoclint=all
+    # Intentionally not pinned: maintained by the same PMC.
+    uses: apache/commons-parent/.github/workflows/maven-reusable.yml@feat/reusable-workflow