From 709995c578523840db6df7ee79795e2f017b346f Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sat, 31 May 2025 04:14:57 +0000 Subject: [PATCH 01/93] Update net.sourceforge.pmd to v7.14.0 --- pom.xml | 4 ++-- template-placeholder/pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 2f769c6..5bffd11 100644 --- a/pom.xml +++ b/pom.xml @@ -82,12 +82,12 @@ net.sourceforge.pmd pmd-core - 7.13.0 + 7.14.0 net.sourceforge.pmd pmd-java - 7.13.0 + 7.14.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 05eb480..83ac028 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -246,12 +246,12 @@ net.sourceforge.pmd pmd-core - 7.13.0 + 7.14.0 net.sourceforge.pmd pmd-java - 7.13.0 + 7.14.0 From 4a35b838f7be1dbe648a1bda16b1b3945ebb3285 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sun, 1 Jun 2025 04:24:06 +0000 Subject: [PATCH 02/93] Update dependency com.puppycrawl.tools:checkstyle to v10.25.0 --- pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 2f769c6..9552734 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ com.puppycrawl.tools checkstyle - 10.24.0 + 10.25.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 05eb480..951e302 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -209,7 +209,7 @@ com.puppycrawl.tools checkstyle - 10.24.0 + 10.25.0 From 7b2210a0e9a044fd194eeaac4761353c3b2fc357 Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 3 Jun 2025 08:37:03 +0200 Subject: [PATCH 03/93] Move PMD to java subfolder https://github.com/xdev-software/java-template/issues/19 --- .config/pmd/{ => java}/ruleset.xml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .config/pmd/{ => java}/ruleset.xml (100%) diff --git a/.config/pmd/ruleset.xml b/.config/pmd/java/ruleset.xml similarity index 100% rename from .config/pmd/ruleset.xml rename to .config/pmd/java/ruleset.xml From 9c3732adbeca22563a07683980761b404d60760c Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 3 Jun 2025 08:38:27 +0200 Subject: [PATCH 04/93] Update pmd location https://github.com/xdev-software/java-template/issues/19 --- template-placeholder/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index f6ad276..98aae88 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -239,7 +239,7 @@ true true - ../.config/pmd/ruleset.xml + ../.config/pmd/java/ruleset.xml From ff7d9184c194012c44fd7c2819b8ec1d8fa7e1fd Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 5 Jun 2025 09:52:46 +0200 Subject: [PATCH 05/93] Fix maven wrapper not working correctly on Windows Docker in non root (/) Properties files in subdirectory e.g. /submodule/.mvn/wrapper/maven-wrapper.properties is not formatted correctly! --- .gitattributes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitattributes b/.gitattributes index 9c74e42..8ac8027 100644 --- a/.gitattributes +++ b/.gitattributes @@ -6,4 +6,4 @@ # Force MVN Wrapper Linux files LF mvnw text eol=lf -.mvn/wrapper/maven-wrapper.properties text eol=lf +maven-wrapper.properties text eol=lf From c5ee7c773b9c2feff77cbb57185664d3e0596263 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Fri, 6 Jun 2025 04:20:27 +0000 Subject: [PATCH 06/93] Update dependency maven to v3.9.10 --- .mvn/wrapper/maven-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties index 4d624fa..3112b8e 100644 --- a/.mvn/wrapper/maven-wrapper.properties +++ b/.mvn/wrapper/maven-wrapper.properties @@ -14,4 +14,4 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.10/apache-maven-3.9.10-bin.zip From 1038c7877757adbe9d59c35fed4d93faabbbbd09 Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 10 Jun 2025 09:37:48 +0200 Subject: [PATCH 07/93] Correct pmd ruleset location --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 10a6321..a0d8268 100644 --- a/pom.xml +++ b/pom.xml @@ -75,7 +75,7 @@ true true - .config/pmd/ruleset.xml + .config/pmd/java/ruleset.xml From a830f314468281d45b85a281d01428db6393cf5b Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 12 Jun 2025 04:17:46 +0000 Subject: [PATCH 08/93] Update shogo82148/actions-create-release digest to 4661dc5 --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2cb3393..2e93568 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -89,7 +89,7 @@ jobs: - name: Create Release id: create_release - uses: shogo82148/actions-create-release@e5f206451d4ace2da9916d01f1aef279997f8659 # v1 + uses: shogo82148/actions-create-release@4661dc54f7b4b564074e9fbf73884d960de569a3 # v1 with: tag_name: v${{ steps.version.outputs.release }} release_name: v${{ steps.version.outputs.release }} From 762cb368e6a4cd493d93079910a72391a6003225 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Wed, 18 Jun 2025 04:18:13 +0000 Subject: [PATCH 09/93] Update dependency org.sonatype.central:central-publishing-maven-plugin to v0.8.0 --- template-placeholder/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 98aae88..91e371f 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -187,7 +187,7 @@ org.sonatype.central central-publishing-maven-plugin - 0.7.0 + 0.8.0 true sonatype-central-portal From 88bc24fe20695d41424cf425b97fd665e578b2f2 Mon Sep 17 00:00:00 2001 From: Alex B <45384811+AB-xdev@users.noreply.github.com> Date: Wed, 18 Jun 2025 13:12:11 +0200 Subject: [PATCH 10/93] Cleanup .gitignore --- .gitignore | 46 +++++++++------------------------------------- 1 file changed, 9 insertions(+), 37 deletions(-) diff --git a/.gitignore b/.gitignore index 5c85054..ba57347 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,12 @@ # Maven target/ -pom.xml.tag -pom.xml.releaseBackup -pom.xml.versionsBackup -pom.xml.next -release.properties dependency-reduced-pom.xml -buildNumber.properties -.mvn/timing.properties -# https://github.com/takari/maven-wrapper#usage-without-binary-jar + +# Maven Wrapper .mvn/wrapper/maven-wrapper.jar +# Maven Flatten Plugin +.flattened-pom.xml # Compiled class file *.class @@ -18,20 +14,12 @@ buildNumber.properties # Log file *.log -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - # Package/Binary Files don't belong into a git repo *.jar *.war -*.nar *.ear *.zip *.tar.gz -*.rar *.dll *.exe *.bin @@ -39,27 +27,11 @@ buildNumber.properties # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* -# JRebel -**/resources/rebel.xml -**/resources/rebel-remote.xml - -# eclispe stuff for root -/.settings/ -/.classpath -/.project - - -# eclispe stuff for modules -/*/.metadata/ -/*/.apt_generated_tests/ -/*/.settings/ -/*/.classpath -/*/.project -/*/RemoteSystemsTempFiles/ - -#custom -.flattened-pom.xml -.tern-project +# Eclispe +.metadata +.settings +.classpath +.project # == IntelliJ == *.iml From 015131b92ffccbce5e8fac274d0ddf3d068d0e4a Mon Sep 17 00:00:00 2001 From: Alex B <45384811+AB-xdev@users.noreply.github.com> Date: Wed, 18 Jun 2025 13:38:22 +0200 Subject: [PATCH 11/93] Update .gitignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index ba57347..14a1fb4 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,7 @@ dependency-reduced-pom.xml # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* -# Eclispe +# Eclipse .metadata .settings .classpath From 67c281643f52336b68965e2216511059c19a2244 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sun, 22 Jun 2025 04:20:31 +0000 Subject: [PATCH 12/93] Update dependency com.puppycrawl.tools:checkstyle to v10.25.1 --- pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index a0d8268..38d092c 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ com.puppycrawl.tools checkstyle - 10.25.0 + 10.25.1 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 91e371f..65e291a 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -209,7 +209,7 @@ com.puppycrawl.tools checkstyle - 10.25.0 + 10.25.1 From 861794f26b184ae23915613ade8320f2cdc39269 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sun, 22 Jun 2025 04:20:34 +0000 Subject: [PATCH 13/93] Update dependency org.codehaus.mojo:flatten-maven-plugin to v1.7.1 --- template-placeholder/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 91e371f..1f1712f 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -147,7 +147,7 @@ org.codehaus.mojo flatten-maven-plugin - 1.7.0 + 1.7.1 ossrh From abb2b6fe77e4ec952d08029afbc4628aa7fd6fd9 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Mon, 23 Jun 2025 04:23:40 +0000 Subject: [PATCH 14/93] Update dependency com.webauthn4j:webauthn4j-core to v0.29.3.RELEASE --- spring-security-advanced-authentication-ui-demo/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-security-advanced-authentication-ui-demo/pom.xml b/spring-security-advanced-authentication-ui-demo/pom.xml index 2318b57..b36bd1b 100644 --- a/spring-security-advanced-authentication-ui-demo/pom.xml +++ b/spring-security-advanced-authentication-ui-demo/pom.xml @@ -68,7 +68,7 @@ com.webauthn4j webauthn4j-core - 0.29.2.RELEASE + 0.29.3.RELEASE From b80d979136895df7c291f628352373134c5b9cd6 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Mon, 23 Jun 2025 04:23:43 +0000 Subject: [PATCH 15/93] Update org.springframework.boot to v3.5.3 --- spring-security-advanced-authentication-ui-demo/pom.xml | 2 +- spring-security-advanced-authentication-ui/pom.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spring-security-advanced-authentication-ui-demo/pom.xml b/spring-security-advanced-authentication-ui-demo/pom.xml index 2318b57..0124bbf 100644 --- a/spring-security-advanced-authentication-ui-demo/pom.xml +++ b/spring-security-advanced-authentication-ui-demo/pom.xml @@ -28,7 +28,7 @@ software.xdev.Application - 3.5.0 + 3.5.3 diff --git a/spring-security-advanced-authentication-ui/pom.xml b/spring-security-advanced-authentication-ui/pom.xml index fc53cf1..26551b2 100644 --- a/spring-security-advanced-authentication-ui/pom.xml +++ b/spring-security-advanced-authentication-ui/pom.xml @@ -53,13 +53,13 @@ org.springframework.boot spring-boot-starter-web - 3.5.0 + 3.5.3 provided org.springframework.boot spring-boot-starter-security - 3.5.0 + 3.5.3 provided From 737487ef45a46dd7dbcd1d72340fa16a44910b2d Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Wed, 25 Jun 2025 04:21:16 +0000 Subject: [PATCH 16/93] Update dependency org.junit.jupiter:junit-jupiter to v5.13.2 --- spring-security-advanced-authentication-ui/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-security-advanced-authentication-ui/pom.xml b/spring-security-advanced-authentication-ui/pom.xml index fc53cf1..d64d3ac 100644 --- a/spring-security-advanced-authentication-ui/pom.xml +++ b/spring-security-advanced-authentication-ui/pom.xml @@ -66,7 +66,7 @@ org.junit.jupiter junit-jupiter - 5.12.2 + 5.13.2 test From f7426d2bdb63d4954973400f12417933e00b76a3 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Wed, 25 Jun 2025 04:21:42 +0000 Subject: [PATCH 17/93] Update dependency com.puppycrawl.tools:checkstyle to v10.26.0 --- pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 38d092c..1d1131d 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ com.puppycrawl.tools checkstyle - 10.25.1 + 10.26.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index be3875e..e0a79aa 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -209,7 +209,7 @@ com.puppycrawl.tools checkstyle - 10.25.1 + 10.26.0 From 9d8d2deb86e1db67799d735fc541e56d9af9e5b4 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 26 Jun 2025 04:18:46 +0000 Subject: [PATCH 18/93] Update dependency org.apache.maven.plugins:maven-pmd-plugin to v3.27.0 --- pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 38d092c..9023c63 100644 --- a/pom.xml +++ b/pom.xml @@ -70,7 +70,7 @@ org.apache.maven.plugins maven-pmd-plugin - 3.26.0 + 3.27.0 true true diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index be3875e..98795f1 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -234,7 +234,7 @@ org.apache.maven.plugins maven-pmd-plugin - 3.26.0 + 3.27.0 true true From d38b73d81d914b35ae46b9b36c3afea39ee0d065 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 26 Jun 2025 11:15:18 +0200 Subject: [PATCH 19/93] Sync naming --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2e93568..c28f949 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -51,7 +51,7 @@ jobs: needs: [check-code] timeout-minutes: 10 outputs: - upload_url: ${{ steps.create_release.outputs.upload_url }} + upload_url: ${{ steps.create-release.outputs.upload_url }} steps: - uses: actions/checkout@v4 @@ -88,7 +88,7 @@ jobs: git push origin --tags - name: Create Release - id: create_release + id: create-release uses: shogo82148/actions-create-release@4661dc54f7b4b564074e9fbf73884d960de569a3 # v1 with: tag_name: v${{ steps.version.outputs.release }} From 08be521289fd77bdcac3f8c4d20756331f4f941c Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sat, 28 Jun 2025 04:14:51 +0000 Subject: [PATCH 20/93] Update net.sourceforge.pmd to v7.15.0 --- pom.xml | 4 ++-- template-placeholder/pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 426a852..f4358f3 100644 --- a/pom.xml +++ b/pom.xml @@ -82,12 +82,12 @@ net.sourceforge.pmd pmd-core - 7.14.0 + 7.15.0 net.sourceforge.pmd pmd-java - 7.14.0 + 7.15.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 876b7a7..d16c327 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -246,12 +246,12 @@ net.sourceforge.pmd pmd-core - 7.14.0 + 7.15.0 net.sourceforge.pmd pmd-java - 7.14.0 + 7.15.0 From a166186c6a877be931658117fda66ae7bf34a76b Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Mon, 30 Jun 2025 04:24:59 +0000 Subject: [PATCH 21/93] Update dependency com.puppycrawl.tools:checkstyle to v10.26.1 --- pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 426a852..862831e 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ com.puppycrawl.tools checkstyle - 10.26.0 + 10.26.1 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 876b7a7..adf5e1e 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -209,7 +209,7 @@ com.puppycrawl.tools checkstyle - 10.26.0 + 10.26.1 From c6e807f728ad34a6e531a43be9423092f72a9398 Mon Sep 17 00:00:00 2001 From: Alex B <45384811+AB-xdev@users.noreply.github.com> Date: Tue, 1 Jul 2025 10:50:39 +0200 Subject: [PATCH 22/93] Simplify: Use ``processAllModules`` flag --- .github/workflows/release.yml | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c28f949..89712fa 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -61,15 +61,7 @@ jobs: git config --global user.name "GitHub Actions" - name: Un-SNAP - run: | - mvnwPath=$(readlink -f ./mvnw) - modules=("") # root - modules+=($(grep -oP '(?<=)[^<]+' 'pom.xml')) - for i in "${modules[@]}" - do - echo "Processing $i/pom.xml" - (cd "$i" && $mvnwPath -B versions:set -DremoveSnapshot -DgenerateBackupPoms=false) - done + run: ./mvnw -B versions:set -DremoveSnapshot -DprocessAllModules -DgenerateBackupPoms=false - name: Get version id: version @@ -185,15 +177,7 @@ jobs: git pull - name: Inc Version and SNAP - run: | - mvnwPath=$(readlink -f ./mvnw) - modules=("") # root - modules+=($(grep -oP '(?<=)[^<]+' 'pom.xml')) - for i in "${modules[@]}" - do - echo "Processing $i/pom.xml" - (cd "$i" && $mvnwPath -B build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} -DgenerateBackupPoms=false -DnextSnapshot=true -DupdateMatchingVersions=false) - done + run: ./mvnw -B versions:set -DnextSnapshot -DprocessAllModules -DgenerateBackupPoms=false - name: Git Commit and Push run: | From 48f59e6a5c4582e03d57cc9f523785ba23995cd4 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 3 Jul 2025 04:20:04 +0000 Subject: [PATCH 23/93] Update dependency org.apache.maven.plugins:maven-gpg-plugin to v3.2.8 --- template-placeholder/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index adb902d..85837b2 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -164,7 +164,7 @@ org.apache.maven.plugins maven-gpg-plugin - 3.2.7 + 3.2.8 sign-artifacts From 23eab491b4740bba9fc3f3a329958d6ef84c5389 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 3 Jul 2025 09:21:28 +0200 Subject: [PATCH 24/93] Implement dual publishing to GitHub packages --- .github/workflows/release.yml | 23 ++++++++++++++++++++--- .github/workflows/test-deploy.yml | 21 +++++++++++++++++++-- template-placeholder/pom.xml | 10 ++++++++-- 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 89712fa..210ef8c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -104,6 +104,9 @@ jobs: runs-on: ubuntu-latest needs: [prepare-release] timeout-minutes: 60 + permissions: + contents: read + packages: write steps: - uses: actions/checkout@v4 @@ -112,20 +115,34 @@ jobs: git config --global user.email "actions@github.com" git config --global user.name "GitHub Actions" git pull + + - name: Set up JDK + uses: actions/setup-java@v4 + with: # running setup-java overwrites the settings.xml + distribution: 'temurin' + java-version: '17' + gpg-passphrase: MAVEN_GPG_PASSPHRASE + gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Only import once + - name: Publish to Central Portal + run: ../mvnw -B deploy -P publish -DskipTests -DaltDeploymentRepository=github::https://maven.pkg.github.com/${{ github.repository }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + working-directory: ${{ env.PRIMARY_MAVEN_MODULE }} + - name: Set up JDK uses: actions/setup-java@v4 with: # running setup-java again overwrites the settings.xml - java-version: '17' distribution: 'temurin' + java-version: '17' server-id: sonatype-central-portal server-username: MAVEN_CENTRAL_USERNAME server-password: MAVEN_CENTRAL_TOKEN gpg-passphrase: MAVEN_GPG_PASSPHRASE - gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} - name: Publish to Central Portal - run: ../mvnw -B deploy -P publish-sonatype-central-portal -DskipTests + run: ../mvnw -B deploy -P publish,publish-sonatype-central-portal -DskipTests env: MAVEN_CENTRAL_USERNAME: ${{ secrets.SONATYPE_MAVEN_CENTRAL_PORTAL_USERNAME }} MAVEN_CENTRAL_TOKEN: ${{ secrets.SONATYPE_MAVEN_CENTRAL_PORTAL_TOKEN }} diff --git a/.github/workflows/test-deploy.yml b/.github/workflows/test-deploy.yml index 8a85891..922eda0 100644 --- a/.github/workflows/test-deploy.yml +++ b/.github/workflows/test-deploy.yml @@ -10,8 +10,26 @@ jobs: publish-maven: runs-on: ubuntu-latest timeout-minutes: 60 + permissions: + contents: read + packages: write steps: - uses: actions/checkout@v4 + + - name: Set up JDK + uses: actions/setup-java@v4 + with: # running setup-java overwrites the settings.xml + distribution: 'temurin' + java-version: '17' + gpg-passphrase: MAVEN_GPG_PASSPHRASE + gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Only import once + + - name: Publish to GitHub Packages + run: ../mvnw -B deploy -P publish -DskipTests -DaltDeploymentRepository=github::https://maven.pkg.github.com/${{ github.repository }} + working-directory: ${{ env.PRIMARY_MAVEN_MODULE }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} - name: Set up JDK uses: actions/setup-java@v4 @@ -22,10 +40,9 @@ jobs: server-username: MAVEN_CENTRAL_USERNAME server-password: MAVEN_CENTRAL_TOKEN gpg-passphrase: MAVEN_GPG_PASSPHRASE - gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} - name: Publish to Central Portal - run: ../mvnw -B deploy -P publish-sonatype-central-portal -DskipTests + run: ../mvnw -B deploy -P publish,publish-sonatype-central-portal -DskipTests working-directory: ${{ env.PRIMARY_MAVEN_MODULE }} env: MAVEN_CENTRAL_USERNAME: ${{ secrets.SONATYPE_MAVEN_CENTRAL_PORTAL_USERNAME }} diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index adb902d..d51a7a1 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -141,7 +141,7 @@ - publish-sonatype-central-portal + publish @@ -183,7 +183,13 @@ - + + + + + publish-sonatype-central-portal + + org.sonatype.central central-publishing-maven-plugin From a4fd5a3b0e6319b119f9d150e48e9edfedae9a51 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Mon, 7 Jul 2025 04:24:44 +0000 Subject: [PATCH 25/93] Update dependency com.webauthn4j:webauthn4j-core to v0.29.4.RELEASE --- spring-security-advanced-authentication-ui-demo/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-security-advanced-authentication-ui-demo/pom.xml b/spring-security-advanced-authentication-ui-demo/pom.xml index b5f8fb5..fceec4d 100644 --- a/spring-security-advanced-authentication-ui-demo/pom.xml +++ b/spring-security-advanced-authentication-ui-demo/pom.xml @@ -68,7 +68,7 @@ com.webauthn4j webauthn4j-core - 0.29.3.RELEASE + 0.29.4.RELEASE From b7da4c5ab5abb4170d381957bebc1a2098e4beab Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Mon, 7 Jul 2025 04:24:46 +0000 Subject: [PATCH 26/93] Update dependency org.junit.jupiter:junit-jupiter to v5.13.3 --- spring-security-advanced-authentication-ui/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-security-advanced-authentication-ui/pom.xml b/spring-security-advanced-authentication-ui/pom.xml index ac6603e..1f08326 100644 --- a/spring-security-advanced-authentication-ui/pom.xml +++ b/spring-security-advanced-authentication-ui/pom.xml @@ -66,7 +66,7 @@ org.junit.jupiter junit-jupiter - 5.13.2 + 5.13.3 test From 7da11aba3b95b8dfcb61c010539461a2f0f4e911 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Wed, 16 Jul 2025 04:24:46 +0000 Subject: [PATCH 27/93] Update dependency maven to v3.9.11 --- .mvn/wrapper/maven-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties index 3112b8e..6a6b8b2 100644 --- a/.mvn/wrapper/maven-wrapper.properties +++ b/.mvn/wrapper/maven-wrapper.properties @@ -14,4 +14,4 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.10/apache-maven-3.9.10-bin.zip +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip From a65a863f2006483444c099b91a54a73d865c5a8b Mon Sep 17 00:00:00 2001 From: AB Date: Wed, 16 Jul 2025 09:38:29 +0200 Subject: [PATCH 28/93] Remove Sonar https://github.com/xdev-software/github/issues/34 --- .github/workflows/sonar.yml | 79 ------------------------------------- README.md | 1 - 2 files changed, 80 deletions(-) delete mode 100644 .github/workflows/sonar.yml diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml deleted file mode 100644 index df6dbb7..0000000 --- a/.github/workflows/sonar.yml +++ /dev/null @@ -1,79 +0,0 @@ -name: Sonar - -on: - workflow_dispatch: - push: - branches: [ develop ] - paths-ignore: - - '**.md' - - '.config/**' - - '.github/**' - - '.idea/**' - - 'assets/**' - pull_request: - branches: [ develop ] - paths-ignore: - - '**.md' - - '.config/**' - - '.github/**' - - '.idea/**' - - 'assets/**' - -env: - SONARCLOUD_ORG: ${{ github.event.organization.login }} - SONARCLOUD_HOST: https://sonarcloud.io - -jobs: - token-check: - runs-on: ubuntu-latest - if: ${{ !(github.event_name == 'pull_request' && startsWith(github.head_ref, 'renovate/')) }} - timeout-minutes: 5 - outputs: - hasToken: ${{ steps.check-token.outputs.has }} - steps: - - id: check-token - run: | - [ -z $SONAR_TOKEN ] && echo "has=false" || echo "has=true" >> "$GITHUB_OUTPUT" - env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - sonar-scan: - runs-on: ubuntu-latest - needs: token-check - if: ${{ needs.token-check.outputs.hasToken }} - timeout-minutes: 30 - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - - name: Set up JDK - uses: actions/setup-java@v4 - with: - distribution: 'temurin' - java-version: 17 - - - name: Cache SonarCloud packages - uses: actions/cache@v4 - with: - path: ~/.sonar/cache - key: ${{ runner.os }}-sonar - restore-keys: ${{ runner.os }}-sonar - - - name: Cache Maven packages - uses: actions/cache@v4 - with: - path: ~/.m2 - key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} - restore-keys: ${{ runner.os }}-m2 - - - name: Build with Maven - run: | - ./mvnw -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \ - -DskipTests \ - -Dsonar.projectKey=${{ env.SONARCLOUD_ORG }}_${{ github.event.repository.name }} \ - -Dsonar.organization=${{ env.SONARCLOUD_ORG }} \ - -Dsonar.host.url=${{ env.SONARCLOUD_HOST }} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} diff --git a/README.md b/README.md index eccf80b..3b97901 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ [![Latest version](https://img.shields.io/maven-central/v/software.xdev/template-placeholder?logo=apache%20maven)](https://mvnrepository.com/artifact/software.xdev/template-placeholder) [![Build](https://img.shields.io/github/actions/workflow/status/xdev-software/template-placeholder/check-build.yml?branch=develop)](https://github.com/xdev-software/template-placeholder/actions/workflows/check-build.yml?query=branch%3Adevelop) -[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=xdev-software_template-placeholder&metric=alert_status)](https://sonarcloud.io/dashboard?id=xdev-software_template-placeholder) # template-placeholder From b5ca8b50fab4331c039bf2820803445e75932133 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 17 Jul 2025 11:24:42 +0200 Subject: [PATCH 29/93] Publish to our GitHub Central "repo" https://github.com/xdev-software/standard-maven-template/issues/171 --- .github/workflows/release.yml | 10 ++++++---- .github/workflows/test-deploy.yml | 8 +++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 210ef8c..2b905ac 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -121,15 +121,17 @@ jobs: with: # running setup-java overwrites the settings.xml distribution: 'temurin' java-version: '17' + server-id: github-central + server-password: PACKAGES_CENTRAL_TOKEN gpg-passphrase: MAVEN_GPG_PASSPHRASE gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Only import once - - name: Publish to Central Portal - run: ../mvnw -B deploy -P publish -DskipTests -DaltDeploymentRepository=github::https://maven.pkg.github.com/${{ github.repository }} + - name: Publish to GitHub Packages Central + run: ../mvnw -B deploy -P publish -DskipTests -DaltDeploymentRepository=github-central::https://maven.pkg.github.com/xdev-software/central + working-directory: ${{ env.PRIMARY_MAVEN_MODULE }} env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PACKAGES_CENTRAL_TOKEN: ${{ secrets.PACKAGES_CENTRAL_TOKEN }} MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} - working-directory: ${{ env.PRIMARY_MAVEN_MODULE }} - name: Set up JDK uses: actions/setup-java@v4 diff --git a/.github/workflows/test-deploy.yml b/.github/workflows/test-deploy.yml index 922eda0..ae28e35 100644 --- a/.github/workflows/test-deploy.yml +++ b/.github/workflows/test-deploy.yml @@ -21,14 +21,16 @@ jobs: with: # running setup-java overwrites the settings.xml distribution: 'temurin' java-version: '17' + server-id: github-central + server-password: PACKAGES_CENTRAL_TOKEN gpg-passphrase: MAVEN_GPG_PASSPHRASE gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Only import once - - name: Publish to GitHub Packages - run: ../mvnw -B deploy -P publish -DskipTests -DaltDeploymentRepository=github::https://maven.pkg.github.com/${{ github.repository }} + - name: Publish to GitHub Packages Central + run: ../mvnw -B deploy -P publish -DskipTests -DaltDeploymentRepository=github-central::https://maven.pkg.github.com/xdev-software/central working-directory: ${{ env.PRIMARY_MAVEN_MODULE }} env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PACKAGES_CENTRAL_TOKEN: ${{ secrets.PACKAGES_CENTRAL_TOKEN }} MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} - name: Set up JDK From 02651ce38abf0596c1f786190e1120de62b404ca Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 17 Jul 2025 11:36:33 +0200 Subject: [PATCH 30/93] Remove not needed permissions --- .github/workflows/release.yml | 3 --- .github/workflows/test-deploy.yml | 3 --- 2 files changed, 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2b905ac..5f8fb83 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -104,9 +104,6 @@ jobs: runs-on: ubuntu-latest needs: [prepare-release] timeout-minutes: 60 - permissions: - contents: read - packages: write steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/test-deploy.yml b/.github/workflows/test-deploy.yml index ae28e35..046be63 100644 --- a/.github/workflows/test-deploy.yml +++ b/.github/workflows/test-deploy.yml @@ -10,9 +10,6 @@ jobs: publish-maven: runs-on: ubuntu-latest timeout-minutes: 60 - permissions: - contents: read - packages: write steps: - uses: actions/checkout@v4 From d6280496478c83214cd695e09aa916b39bf7e873 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 17 Jul 2025 13:53:02 +0200 Subject: [PATCH 31/93] Fix link checker not creating issues Due to hidden change of how exit code is handled in https://github.com/lycheeverse/lychee-action/releases/tag/v2.0.0 Don't write 3 sentences about what has changed in the context of X; simply write: * Replace ``env.lychee_exit_code`` with ``steps.lychee.outputs.exit_code`` like you somehow did on the Readme? --- .github/workflows/broken-links.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index 0d8c960..e97096a 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -30,13 +30,13 @@ jobs: GH_TOKEN: ${{ github.token }} - name: Close issue if everything is fine - if: env.lychee_exit_code == 0 && steps.find-issue.outputs.number != '' + if: steps.lychee.outputs.exit_code == 0 == 0 && steps.find-issue.outputs.number != '' run: gh issue close -r 'not planned' ${{ steps.find-issue.outputs.number }} env: GH_TOKEN: ${{ github.token }} - name: Create Issue From File - if: env.lychee_exit_code != 0 + if: steps.lychee.outputs.exit_code == 0 != 0 uses: peter-evans/create-issue-from-file@e8ef132d6df98ed982188e460ebb3b5d4ef3a9cd # v5 with: issue-number: ${{ steps.find-issue.outputs.number }} From 45e3f514b2141396212ad5cbc8399ed8258eaecd Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 17 Jul 2025 13:57:22 +0200 Subject: [PATCH 32/93] Fix typo --- .github/workflows/broken-links.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index e97096a..1d9d96b 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -30,13 +30,13 @@ jobs: GH_TOKEN: ${{ github.token }} - name: Close issue if everything is fine - if: steps.lychee.outputs.exit_code == 0 == 0 && steps.find-issue.outputs.number != '' + if: steps.lychee.outputs.exit_code == 0 && steps.find-issue.outputs.number != '' run: gh issue close -r 'not planned' ${{ steps.find-issue.outputs.number }} env: GH_TOKEN: ${{ github.token }} - name: Create Issue From File - if: steps.lychee.outputs.exit_code == 0 != 0 + if: steps.lychee.outputs.exit_code != 0 uses: peter-evans/create-issue-from-file@e8ef132d6df98ed982188e460ebb3b5d4ef3a9cd # v5 with: issue-number: ${{ steps.find-issue.outputs.number }} From 1885f22338c088ac37f6fa40d79437c2618cd0f1 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sat, 26 Jul 2025 04:23:21 +0000 Subject: [PATCH 33/93] Update net.sourceforge.pmd to v7.16.0 --- pom.xml | 4 ++-- template-placeholder/pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index b148a3f..13cbcef 100644 --- a/pom.xml +++ b/pom.xml @@ -82,12 +82,12 @@ net.sourceforge.pmd pmd-core - 7.15.0 + 7.16.0 net.sourceforge.pmd pmd-java - 7.15.0 + 7.16.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index b0e33c7..789e455 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -252,12 +252,12 @@ net.sourceforge.pmd pmd-core - 7.15.0 + 7.16.0 net.sourceforge.pmd pmd-java - 7.15.0 + 7.16.0 From f288c365ca866a08907cb7963fea3f82c7bffb01 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Tue, 29 Jul 2025 04:30:18 +0000 Subject: [PATCH 34/93] Update dependency org.codehaus.mojo:flatten-maven-plugin to v1.7.2 --- template-placeholder/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 789e455..58df6c8 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -147,7 +147,7 @@ org.codehaus.mojo flatten-maven-plugin - 1.7.1 + 1.7.2 ossrh From 3fa96219ab3ed08ce50d5d2569c8dbfc4cd287ec Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Mon, 4 Aug 2025 04:42:44 +0000 Subject: [PATCH 35/93] Update dependency com.webauthn4j:webauthn4j-core to v0.29.5.RELEASE --- spring-security-advanced-authentication-ui-demo/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-security-advanced-authentication-ui-demo/pom.xml b/spring-security-advanced-authentication-ui-demo/pom.xml index fceec4d..09cdafb 100644 --- a/spring-security-advanced-authentication-ui-demo/pom.xml +++ b/spring-security-advanced-authentication-ui-demo/pom.xml @@ -68,7 +68,7 @@ com.webauthn4j webauthn4j-core - 0.29.4.RELEASE + 0.29.5.RELEASE From 048d82e909021956d6334b9c307bb5293861824d Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Mon, 4 Aug 2025 04:42:45 +0000 Subject: [PATCH 36/93] Update dependency org.junit.jupiter:junit-jupiter to v5.13.4 --- spring-security-advanced-authentication-ui/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-security-advanced-authentication-ui/pom.xml b/spring-security-advanced-authentication-ui/pom.xml index cf962ef..f9e7dfc 100644 --- a/spring-security-advanced-authentication-ui/pom.xml +++ b/spring-security-advanced-authentication-ui/pom.xml @@ -66,7 +66,7 @@ org.junit.jupiter junit-jupiter - 5.13.3 + 5.13.4 test From 9ed70f0d7876c3846115aad7cfefe829b09d86d1 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Mon, 4 Aug 2025 04:42:47 +0000 Subject: [PATCH 37/93] Update org.springframework.boot to v3.5.4 --- spring-security-advanced-authentication-ui-demo/pom.xml | 2 +- spring-security-advanced-authentication-ui/pom.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spring-security-advanced-authentication-ui-demo/pom.xml b/spring-security-advanced-authentication-ui-demo/pom.xml index fceec4d..3243ca6 100644 --- a/spring-security-advanced-authentication-ui-demo/pom.xml +++ b/spring-security-advanced-authentication-ui-demo/pom.xml @@ -28,7 +28,7 @@ software.xdev.Application - 3.5.3 + 3.5.4 diff --git a/spring-security-advanced-authentication-ui/pom.xml b/spring-security-advanced-authentication-ui/pom.xml index cf962ef..f73711a 100644 --- a/spring-security-advanced-authentication-ui/pom.xml +++ b/spring-security-advanced-authentication-ui/pom.xml @@ -53,13 +53,13 @@ org.springframework.boot spring-boot-starter-web - 3.5.3 + 3.5.4 provided org.springframework.boot spring-boot-starter-security - 3.5.3 + 3.5.4 provided From 12b61ed91efb5330fb3c9ef12d7fe61423582fee Mon Sep 17 00:00:00 2001 From: "Alex \"Blex\" B" <45384811+AB-xdev@users.noreply.github.com> Date: Mon, 4 Aug 2025 10:07:50 +0200 Subject: [PATCH 38/93] Remove unused variable from workflow --- .github/workflows/check-build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml index 01edc3a..65e1e41 100644 --- a/.github/workflows/check-build.yml +++ b/.github/workflows/check-build.yml @@ -20,7 +20,6 @@ on: - 'assets/**' env: - PRIMARY_MAVEN_MODULE: ${{ github.event.repository.name }} DEMO_MAVEN_MODULE: ${{ github.event.repository.name }}-demo jobs: From d75370f1dfb63a2fc3e0e8dd40e1ab2ed957c33e Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 7 Aug 2025 09:47:14 +0200 Subject: [PATCH 39/93] [IDEA] Bump checkstyle version --- .idea/checkstyle-idea.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.idea/checkstyle-idea.xml b/.idea/checkstyle-idea.xml index b52c3e2..d43641c 100644 --- a/.idea/checkstyle-idea.xml +++ b/.idea/checkstyle-idea.xml @@ -1,7 +1,7 @@ - 10.21.0 + 10.26.1 JavaOnlyWithTests true true From 0ec6a335f6992cafc30d348c9415a71456ac08db Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Fri, 8 Aug 2025 04:26:21 +0000 Subject: [PATCH 40/93] Update lycheeverse/lychee-action digest to 5c4ee84 --- .github/workflows/broken-links.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index 1d9d96b..d29a4da 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -18,7 +18,7 @@ jobs: - name: Link Checker id: lychee - uses: lycheeverse/lychee-action@82202e5e9c2f4ef1a55a3d02563e1cb6041e5332 # v2 + uses: lycheeverse/lychee-action@5c4ee84814c983aa7164eaee476f014e53ff3963 # v2 with: fail: false # Don't fail on broken links, create an issue instead From f368480b8f948af255e91cd589f99d160bf1284b Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Fri, 8 Aug 2025 04:31:07 +0000 Subject: [PATCH 41/93] Update lycheeverse/lychee-action digest to 5c4ee84 --- .github/workflows/broken-links.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index e2f3597..d509539 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -19,7 +19,7 @@ jobs: - name: Link Checker id: lychee - uses: lycheeverse/lychee-action@82202e5e9c2f4ef1a55a3d02563e1cb6041e5332 # v2 + uses: lycheeverse/lychee-action@5c4ee84814c983aa7164eaee476f014e53ff3963 # v2 with: fail: false # Don't fail on broken links, create an issue instead From 3849ad71af09d44503bfbf2ae967cd33e33ac91f Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Fri, 8 Aug 2025 04:31:09 +0000 Subject: [PATCH 42/93] Update dependency com.puppycrawl.tools:checkstyle to v11 --- pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 13cbcef..c495b40 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ com.puppycrawl.tools checkstyle - 10.26.1 + 11.0.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 58df6c8..cc32fe8 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -215,7 +215,7 @@ com.puppycrawl.tools checkstyle - 10.26.1 + 11.0.0 From df23f84b8e58db57c57d0a3652ab3c4c31ea9595 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Tue, 12 Aug 2025 04:15:58 +0000 Subject: [PATCH 43/93] Update actions/checkout action to v5 --- .github/workflows/broken-links.yml | 2 +- .github/workflows/sync-labels.yml | 2 +- .github/workflows/update-from-template.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index 1d9d96b..a9e2882 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -12,7 +12,7 @@ jobs: link-checker: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: mv .github/.lycheeignore .lycheeignore diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml index 0e2beb5..3faaf1e 100644 --- a/.github/workflows/sync-labels.yml +++ b/.github/workflows/sync-labels.yml @@ -15,7 +15,7 @@ jobs: labels: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: sparse-checkout: .github/labels.yml diff --git a/.github/workflows/update-from-template.yml b/.github/workflows/update-from-template.yml index 24af3f3..3a7dc91 100644 --- a/.github/workflows/update-from-template.yml +++ b/.github/workflows/update-from-template.yml @@ -35,7 +35,7 @@ jobs: update_branch_merged_commit: ${{ steps.manage-branches.outputs.update_branch_merged_commit }} create_update_branch_merged_pr: ${{ steps.manage-branches.outputs.create_update_branch_merged_pr }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: # Required because otherwise there are always changes detected when executing diff/rev-list fetch-depth: 0 @@ -181,7 +181,7 @@ jobs: if: needs.update.outputs.create_update_branch_merged_pr == 1 runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: # Required because otherwise there are always changes detected when executing diff/rev-list fetch-depth: 0 From 613e5d01c18b6bf9687473275b8ea5111224203d Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Tue, 12 Aug 2025 04:19:19 +0000 Subject: [PATCH 44/93] Update actions/checkout action to v5 --- .github/workflows/broken-links.yml | 2 +- .github/workflows/check-build.yml | 6 +++--- .github/workflows/release.yml | 10 +++++----- .github/workflows/sync-labels.yml | 2 +- .github/workflows/test-deploy.yml | 2 +- .github/workflows/update-from-template.yml | 4 ++-- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index d509539..a37abe7 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 15 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: mv .github/.lycheeignore .lycheeignore diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml index 65e1e41..fdeead2 100644 --- a/.github/workflows/check-build.yml +++ b/.github/workflows/check-build.yml @@ -33,7 +33,7 @@ jobs: distribution: [temurin] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up JDK uses: actions/setup-java@v4 @@ -81,7 +81,7 @@ jobs: distribution: [temurin] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up JDK uses: actions/setup-java@v4 @@ -104,7 +104,7 @@ jobs: distribution: [temurin] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up JDK uses: actions/setup-java@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5f8fb83..e415f67 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 30 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up JDK uses: actions/setup-java@v4 @@ -53,7 +53,7 @@ jobs: outputs: upload_url: ${{ steps.create-release.outputs.upload_url }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Configure Git run: | @@ -105,7 +105,7 @@ jobs: needs: [prepare-release] timeout-minutes: 60 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Init Git and pull run: | @@ -153,7 +153,7 @@ jobs: needs: [prepare-release] timeout-minutes: 15 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Init Git and pull run: | @@ -184,7 +184,7 @@ jobs: needs: [publish-maven] timeout-minutes: 10 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Init Git and pull run: | diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml index dc67287..f6c50a1 100644 --- a/.github/workflows/sync-labels.yml +++ b/.github/workflows/sync-labels.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 10 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: sparse-checkout: .github/labels.yml diff --git a/.github/workflows/test-deploy.yml b/.github/workflows/test-deploy.yml index 046be63..795bd6e 100644 --- a/.github/workflows/test-deploy.yml +++ b/.github/workflows/test-deploy.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 60 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up JDK uses: actions/setup-java@v4 diff --git a/.github/workflows/update-from-template.yml b/.github/workflows/update-from-template.yml index 65f56b0..e689fe9 100644 --- a/.github/workflows/update-from-template.yml +++ b/.github/workflows/update-from-template.yml @@ -36,7 +36,7 @@ jobs: update_branch_merged_commit: ${{ steps.manage-branches.outputs.update_branch_merged_commit }} create_update_branch_merged_pr: ${{ steps.manage-branches.outputs.create_update_branch_merged_pr }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: # Required because otherwise there are always changes detected when executing diff/rev-list fetch-depth: 0 @@ -183,7 +183,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 60 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: # Required because otherwise there are always changes detected when executing diff/rev-list fetch-depth: 0 From 019ff584fedbc7f8e0bff18c9ac9db333db7aa3d Mon Sep 17 00:00:00 2001 From: AB Date: Wed, 13 Aug 2025 13:48:55 +0200 Subject: [PATCH 45/93] Add configuration for Intellij PMD plugin --- .gitignore | 46 +++++++++++++++++++++++++++++++++++++++++++++ .idea/PMDPlugin.xml | 16 ++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/PMDPlugin.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea95295 --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ +# Compiled class file +*.class + +# Log file +*.log + +# Package/Binary Files don't belong into a git repo +*.jar +*.war +*.ear +*.zip +*.tar.gz +*.dll +*.exe +*.bin + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +# Eclipse +.metadata +.settings +.classpath +.project + +# == IntelliJ == +*.iml +*.ipr + +# Some files are user/installation independent and are used for configuring the IDE +# See also https://stackoverflow.com/a/35279076 + +.idea/* +!.idea/saveactions_settings.xml +!.idea/checkstyle-idea.xml +!.idea/externalDependencies.xml +!.idea/PMDPlugin.xml + +!.idea/inspectionProfiles/ +.idea/inspectionProfiles/* +!.idea/inspectionProfiles/Project_Default.xml + +!.idea/codeStyles/ +.idea/codeStyles/* +!.idea/codeStyles/codeStyleConfig.xml +!.idea/codeStyles/Project.xml diff --git a/.idea/PMDPlugin.xml b/.idea/PMDPlugin.xml new file mode 100644 index 0000000..0936e51 --- /dev/null +++ b/.idea/PMDPlugin.xml @@ -0,0 +1,16 @@ + + + + + + + \ No newline at end of file From 29aa603936a4926a2fb47cafb1fd4a1ab8115208 Mon Sep 17 00:00:00 2001 From: AB Date: Wed, 13 Aug 2025 16:38:20 +0200 Subject: [PATCH 46/93] Enable async processing by default --- .idea/saveactions_settings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/.idea/saveactions_settings.xml b/.idea/saveactions_settings.xml index 848c311..12a4f04 100644 --- a/.idea/saveactions_settings.xml +++ b/.idea/saveactions_settings.xml @@ -5,6 +5,7 @@ \ No newline at end of file From b828600535aa40c085989653d484607d30e7f6e2 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Fri, 12 Sep 2025 09:21:56 +0000 Subject: [PATCH 64/93] Update net.sourceforge.pmd to v7.17.0 --- pom.xml | 4 ++-- template-placeholder/pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index abef334..f824869 100644 --- a/pom.xml +++ b/pom.xml @@ -83,12 +83,12 @@ net.sourceforge.pmd pmd-core - 7.16.0 + 7.17.0 net.sourceforge.pmd pmd-java - 7.16.0 + 7.17.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index e866684..7380883 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -253,12 +253,12 @@ net.sourceforge.pmd pmd-core - 7.16.0 + 7.17.0 net.sourceforge.pmd pmd-java - 7.16.0 + 7.17.0 From 154c6c732cbb090b1d3ddb6941759893d9d9c1f1 Mon Sep 17 00:00:00 2001 From: AB Date: Fri, 12 Sep 2025 12:09:53 +0200 Subject: [PATCH 65/93] Update to PMD 7.17 and add new rules --- .config/pmd/java/ruleset.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index ebdbd83..267fa5e 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -42,6 +42,7 @@ + @@ -138,6 +139,7 @@ + @@ -155,7 +157,7 @@ - + From 44ccd727be9ac92de19cd75f1dc5d77eea2dfd8b Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sun, 14 Sep 2025 04:14:19 +0000 Subject: [PATCH 66/93] Update shogo82148/actions-create-release digest to 7b89596 --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0639fc6..6101566 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -91,7 +91,7 @@ jobs: - name: Create Release id: create-release - uses: shogo82148/actions-create-release@4661dc54f7b4b564074e9fbf73884d960de569a3 # v1 + uses: shogo82148/actions-create-release@7b89596097b26731bda0852f1504f813499079ee # v1 with: tag_name: v${{ steps.version.outputs.release }} release_name: v${{ steps.version.outputs.release }} From 088bcf340437d337ffc169567f6bdfaad3a6d2d6 Mon Sep 17 00:00:00 2001 From: AB Date: Mon, 15 Sep 2025 14:54:51 +0200 Subject: [PATCH 67/93] Add PMD 7.16 Rules --- .config/pmd/java/ruleset.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index 267fa5e..5d76b2b 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -153,6 +153,8 @@ + + From dd4c7faeec7695b3b9d02cff6dbc674f9cdd582b Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 16 Sep 2025 10:26:07 +0200 Subject: [PATCH 68/93] Update mvnw --- .mvn/wrapper/maven-wrapper.properties | 18 +------ mvnw | 67 ++++++++++++++++++++++----- mvnw.cmd | 57 ++++++++++++++++++++--- 3 files changed, 108 insertions(+), 34 deletions(-) diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties index 6a6b8b2..c0bcafe 100644 --- a/.mvn/wrapper/maven-wrapper.properties +++ b/.mvn/wrapper/maven-wrapper.properties @@ -1,17 +1,3 @@ -# 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. +wrapperVersion=3.3.4 +distributionType=only-script distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip diff --git a/mvnw b/mvnw index 0830332..bd8896b 100755 --- a/mvnw +++ b/mvnw @@ -19,7 +19,7 @@ # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- -# Apache Maven Wrapper startup batch script, version 3.3.0 +# Apache Maven Wrapper startup batch script, version 3.3.4 # # Optional ENV vars # ----------------- @@ -97,14 +97,25 @@ die() { exit 1 } +trim() { + # MWRAPPER-139: + # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. + # Needed for removing poorly interpreted newline sequences when running in more + # exotic environments such as mingw bash on Windows. + printf "%s" "${1}" | tr -d '[:space:]' +} + +scriptDir="$(dirname "$0")" +scriptName="$(basename "$0")" + # parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties while IFS="=" read -r key value; do case "${key-}" in - distributionUrl) distributionUrl="${value-}" ;; - distributionSha256Sum) distributionSha256Sum="${value-}" ;; + distributionUrl) distributionUrl=$(trim "${value-}") ;; + distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; esac -done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" -[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" +done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties" +[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" case "${distributionUrl##*/}" in maven-mvnd-*bin.*) @@ -122,7 +133,7 @@ maven-mvnd-*bin.*) distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" ;; maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; -*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; +*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; esac # apply MVNW_REPOURL and calculate MAVEN_HOME @@ -131,7 +142,8 @@ esac distributionUrlName="${distributionUrl##*/}" distributionUrlNameMain="${distributionUrlName%.*}" distributionUrlNameMain="${distributionUrlNameMain%-bin}" -MAVEN_HOME="$HOME/.m2/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" +MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" +MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" exec_maven() { unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : @@ -199,7 +211,7 @@ elif set_java_home; then public static void main( String[] args ) throws Exception { setDefault( new Downloader() ); - java.nio.file.Files.copy( new java.net.URL( args[0] ).openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); + java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); } } END @@ -218,7 +230,7 @@ if [ -n "${distributionSha256Sum-}" ]; then echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 exit 1 elif command -v sha256sum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then distributionSha256Result=true fi elif command -v shasum >/dev/null; then @@ -243,8 +255,41 @@ if command -v unzip >/dev/null; then else tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" fi -printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" -mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" + +# Find the actual extracted directory name (handles snapshots where filename != directory name) +actualDistributionDir="" + +# First try the expected directory name (for regular distributions) +if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then + if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then + actualDistributionDir="$distributionUrlNameMain" + fi +fi + +# If not found, search for any directory with the Maven executable (for snapshots) +if [ -z "$actualDistributionDir" ]; then + # enable globbing to iterate over items + set +f + for dir in "$TMP_DOWNLOAD_DIR"/*; do + if [ -d "$dir" ]; then + if [ -f "$dir/bin/$MVN_CMD" ]; then + actualDistributionDir="$(basename "$dir")" + break + fi + fi + done + set -f +fi + +if [ -z "$actualDistributionDir" ]; then + verbose "Contents of $TMP_DOWNLOAD_DIR:" + verbose "$(ls -la "$TMP_DOWNLOAD_DIR")" + die "Could not find Maven distribution directory in extracted archive" +fi + +verbose "Found extracted Maven distribution directory: $actualDistributionDir" +printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url" +mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" clean || : exec_maven "$@" diff --git a/mvnw.cmd b/mvnw.cmd index 136e686..92450f9 100644 --- a/mvnw.cmd +++ b/mvnw.cmd @@ -19,7 +19,7 @@ @REM ---------------------------------------------------------------------------- @REM ---------------------------------------------------------------------------- -@REM Apache Maven Wrapper startup batch script, version 3.3.0 +@REM Apache Maven Wrapper startup batch script, version 3.3.4 @REM @REM Optional ENV vars @REM MVNW_REPOURL - repo url base for downloading maven distribution @@ -40,7 +40,7 @@ @SET __MVNW_ARG0_NAME__= @SET MVNW_USERNAME= @SET MVNW_PASSWORD= -@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) +@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*) @echo Cannot start maven from wrapper >&2 && exit /b 1 @GOTO :EOF : end batch / begin powershell #> @@ -73,13 +73,30 @@ switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { # apply MVNW_REPOURL and calculate MAVEN_HOME # maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ if ($env:MVNW_REPOURL) { - $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } - $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" + $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" } + $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')" } $distributionUrlName = $distributionUrl -replace '^.*/','' $distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' -$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" -$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' + +$MAVEN_M2_PATH = "$HOME/.m2" +if ($env:MAVEN_USER_HOME) { + $MAVEN_M2_PATH = "$env:MAVEN_USER_HOME" +} + +if (-not (Test-Path -Path $MAVEN_M2_PATH)) { + New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null +} + +$MAVEN_WRAPPER_DISTS = $null +if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) { + $MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists" +} else { + $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists" +} + +$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain" +$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' $MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { @@ -131,7 +148,33 @@ if ($distributionSha256Sum) { # unzip and move Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null -Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null + +# Find the actual extracted directory name (handles snapshots where filename != directory name) +$actualDistributionDir = "" + +# First try the expected directory name (for regular distributions) +$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain" +$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD" +if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) { + $actualDistributionDir = $distributionUrlNameMain +} + +# If not found, search for any directory with the Maven executable (for snapshots) +if (!$actualDistributionDir) { + Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object { + $testPath = Join-Path $_.FullName "bin/$MVN_CMD" + if (Test-Path -Path $testPath -PathType Leaf) { + $actualDistributionDir = $_.Name + } + } +} + +if (!$actualDistributionDir) { + Write-Error "Could not find Maven distribution directory in extracted archive" +} + +Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir" +Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null try { Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null } catch { From 108486865e6442363bbcaff9b394ba5b36a2d63f Mon Sep 17 00:00:00 2001 From: AB Date: Mon, 15 Sep 2025 15:03:03 +0200 Subject: [PATCH 69/93] PMD: Import and modify rules from `jPinpoint` See https://github.com/jborgers/PMD-jPinpoint-rules --- .config/pmd/java/ruleset.xml | 824 ++++++++++++++++++++++++++++++++++- 1 file changed, 818 insertions(+), 6 deletions(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index 5d76b2b..28bc272 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -11,7 +11,6 @@ - @@ -199,6 +198,33 @@ + + + + Usually all cases where `StringBuilder` (or the outdated `StringBuffer`) is used are either due to confusing (legacy) logic or may be replaced by a simpler string concatenation. + + Solution: + * Do not use `StringBuffer` because it's thread-safe and usually this is not needed + * If `StringBuilder` is only used in a simple method (like `toString`) and is effectively inlined: Use a simpler string concatenation (`"a" + x + "b"`). This will be optimized by the Java compiler internally. + * In all other cases: + * Check what is happening and if it makes ANY sense! If for example a CSV file is built here consider using a proper library instead! + * Abstract the Strings into a DTO, join them together using a collection (or `StringJoiner`) or use Java's Streaming API instead + + 3 + + + + + + + + + - @@ -236,7 +262,7 @@ - @@ -257,7 +283,7 @@ - @@ -279,7 +305,7 @@ - @@ -303,7 +329,7 @@ - @@ -311,4 +337,790 @@ + + + + + + Do not use native HTML! Use Vaadin layouts and components to create required structure. + If you are 100% sure that you escaped the value properly and you have no better options you can suppress this. + + 2 + + + + + + + + + + + + + + + + java.text.NumberFormat: DecimalFormat and ChoiceFormat are thread-unsafe. + + Solution: Create a new local one when needed in a method. + + 1 + + + + + + + + + + + + + + + A regular expression is compiled implicitly on every invocation. + Problem: This can be (CPU) expensive, depending on the length of the regular expression. + + Solution: Compile the regex pattern only once and assign it to a private static final Pattern field. + java.util.Pattern objects are thread-safe, so they can be shared among threads. + + 2 + + + + 5 and +(matches(@Image, '[\.\$\|\(\)\[\]\{\}\^\?\*\+\\]+'))) +or +self::VariableAccess and @Name=ancestor::ClassBody[1]/FieldDeclaration/VariableDeclarator[StringLiteral[string-length(@Image) > 5 and +(matches(@Image, '[\.\$\|\(\)\[\]\{\}\^\?\*\+\\]+'))] or not(StringLiteral)]/VariableId/@Name] +]]> + + + + + + + + + + + + The default constructor of ByteArrayOutputStream creates a 32 bytes initial capacity and for StringWriter 16 chars. + Such a small buffer as capacity usually needs several expensive expansions. + + Solution: Explicitly declared the buffer size so that an expansion is not needed in most cases. + Typically much larger than 32, e.g. 4096. + + 2 + + + + + + + + + + + + + + + The time to find element is O(n); n = the number of enum values. + This identical processing is executed for every call. + Considered problematic when `n > 3`. + + Solution: Use a static field-to-enum-value Map. Access time is O(1), provided the hashCode is well-defined. + Implement a fromString method to provide the reverse conversion by using the map. + + 3 + + + + 3]//MethodDeclaration/Block + //MethodCall[pmd-java:matchesSig('java.util.stream.Stream#findFirst()') or pmd-java:matchesSig('java.util.stream.Stream#findAny()')] + [//MethodCall[pmd-java:matchesSig('java.util.stream.Stream#of(_)') or pmd-java:matchesSig('java.util.Arrays#stream(_)')] + [ArgumentList/MethodCall[pmd-java:matchesSig('_#values()')]]] +]]> + + + + + fromString(String name) { + return Stream.of(values()).filter(v -> v.toString().equals(name)).findAny(); // bad: iterates for every call, O(n) access time + } +} + +Usage: `Fruit f = Fruit.fromString("banana");` + +// GOOD +public enum Fruit { + APPLE("apple"), + ORANGE("orange"), + BANANA("banana"), + KIWI("kiwi"); + + private static final Map nameToValue = + Stream.of(values()).collect(toMap(Object::toString, v -> v)); + private final String name; + + Fruit(String name) { this.name = name; } + @Override public String toString() { return name; } + public static Optional fromString(String name) { + return Optional.ofNullable(nameToValue.get(name)); // good, get from Map, O(1) access time + } +} +]]> + + + + + + A regular expression is compiled on every invocation. + Problem: this can be expensive, depending on the length of the regular expression. + + Solution: Usually a pattern is a literal, not dynamic and can be compiled only once. Assign it to a private static field. + java.util.Pattern objects are thread-safe so they can be shared among threads. + + 2 + + + + + + + + + + + + + + + + Recreating a DateTimeFormatter is relatively expensive. + + Solution: Java 8+ java.time.DateTimeFormatter is thread-safe and can be shared among threads. + Create the formatter from a pattern only once, to initialize a static final field. + + 2 + + + + + + + + + + + + Creating a security provider is expensive because of loading of algorithms and other classes. + Additionally, it uses synchronized which leads to lock contention when used with multiple threads. + + Solution: This only needs to happen once in the JVM lifetime, because once loaded the provider is typically available from the Security class. + Create the security provider only once: Only in case when it's not yet available from the Security class. + + 2 + + + + + + + + + + + + + + + Reflection is relatively expensive. + + Solution: Avoid reflection. Use the non-reflective, explicit way like generation by IDE. + + 2 + + + + + + + + + + + + + + + java.util.SimpleDateFormat is thread-unsafe. + The usual solution is to create a new one when needed in a method. + Creating SimpleDateFormat is relatively expensive. + + Solution: Use java.time.DateTimeFormatter. These classes are immutable, thus thread-safe and can be made static. + + 2 + + + + + + + + + + + + + + + Creating Comparator instances repeatedly in methods like compareTo or sort calls is inefficient. + + Solution: Initialize the Comparator once as a static final field and reuse. + + 2 + + + + + + + + + { + @Override + public int compareTo(@NotNull Person o) { + return Comparator.comparing(Person::getFirstName) // Bad: Creates new Comparator instance on each invocation + .thenComparing(Person::getLastName) + .thenComparingInt(Person::getAge) + .compare(this, o); + } +} + +public class GoodPerson implements Comparable { + private static final Comparator COMPARE_FIRST_LAST_NAME_AGE = + Comparator.comparing(Person::getFirstName) + .thenComparing(Person::getLastName) + .thenComparingInt(Person::getAge); + + @Override + public int compareTo(@NotNull Person o) { + return COMPARE_FIRST_LAST_NAME_AGE.compare(this, o); // Good: Comparator initialized once as static final field + } +} +]]> + + + + + + Blocking calls, for instance remote calls, may exhaust the common pool for some time thereby blocking all other use of the common pool. + In addition, nested use of the common pool can lead to deadlock. Do not use the common pool for blocking calls. + The parallelStream() call uses the common pool. + + Solution: Use a dedicated thread pool with enough threads to get proper parallelism. + The number of threads in the common pool is equal to the number of CPUs and meant to utilize all of them. + It assumes CPU-intensive non-blocking processing of in-memory data. + + 2 + + + + + + + + + list = new ArrayList(); + final ForkJoinPool myFjPool = new ForkJoinPool(10); + final ExecutorService myExePool = Executors.newFixedThreadPool(10); + + void bad1() { + list.parallelStream().forEach(elem -> storeDataRemoteCall(elem)); // bad + } + + void good1() { + CompletableFuture[] futures = list.stream().map(elem -> CompletableFuture.supplyAsync(() -> storeDataRemoteCall(elem), myExePool)) + .toArray(CompletableFuture[]::new); + CompletableFuture.allOf(futures).get(10, TimeUnit.MILLISECONDS)); + } + + void good2() throws ExecutionException, InterruptedException { + myFjPool.submit(() -> + list.parallelStream().forEach(elem -> storeDataRemoteCall(elem)) + ).get(); + } + + String storeDataRemoteCall(String elem) { + // do remote call, blocking. We don't use the returned value. + RestTemplate tmpl; + return ""; + } +} +]]> + + + + + + Future.supplyAsync is typically used for remote calls. By default, it uses the common pool. + The number of threads in the common pool is equal to the number of CPU's, which is suitable for in-memory processing. + For I/O, however, this number is typically not suitable because most time is spent waiting for the response and not in CPU. + The common pool must not be used for blocking calls. + + Solution: A separate, properly sized, pool of threads (an Executor) should be used for the async calls. + + 2 + + + + + + + + +>[] futures = accounts.stream() + .map(account -> CompletableFuture.supplyAsync(() -> isAccountBlocked(account))) // bad + .toArray(CompletableFuture[]::new); + } + + void good() { + CompletableFuture>[] futures = accounts.stream() + .map(account -> CompletableFuture.supplyAsync(() -> isAccountBlocked(account), asyncPool)) // good + .toArray(CompletableFuture[]::new); + } +} +]]> + + + + + + `take()` stalls indefinitely in case of hanging threads and consumes a thread. + + Solution: use `poll()` with a timeout value and handle the timeout. + + 2 + + + + + + + + + void collectAllCollectionReplyFromThreads(CompletionService> completionService) { + try { + Future> futureLocal = completionService.take(); // bad + Future> futuresGood = completionService.poll(3, TimeUnit.SECONDS); // good + responseCollector.addAll(futuresGood.get(10, TimeUnit.SECONDS)); // good + } catch (InterruptedException | ExecutionException e) { + LOGGER.error("Error in Thread : {}", e); + } catch (TimeoutException e) { + LOGGER.error("Timeout in Thread : {}", e); + } +} +]]> + + + + + + Stalls indefinitely in case of stalled Callable(s) and consumes threads. + + Solution: Provide a timeout to the invokeAll/invokeAny method and handle the timeout. + + 2 + + + + + + + + +> executeTasksBad(Collection> tasks, ExecutorService executor) throws Exception { + return executor.invokeAll(tasks); // bad, no timeout + } + private List> executeTasksGood(Collection> tasks, ExecutorService executor) throws Exception { + return executor.invokeAll(tasks, OUR_TIMEOUT_IN_MILLIS, TimeUnit.MILLISECONDS); // good + } +} +]]> + + + + + + Stalls indefinitely in case of hanging threads and consumes a thread. + + Solution: Provide a timeout value and handle the timeout. + + 2 + + + + + + + + + complFuture) throws Exception { + return complFuture.get(); // bad +} + +public static String good(CompletableFuture complFuture) throws Exception { + return complFuture.get(10, TimeUnit.SECONDS); // good +} +]]> + + + + + + + Apache HttpClient with its connection pool and timeouts should be setup once and then used for many requests. + It is quite expensive to create and can only provide the benefits of pooling when reused in all requests for that connection. + + Solution: Create/build HttpClient with proper connection pooling and timeouts once, and then use it for requests. + + 3 + + + + + + + + + connectBad(Object req) { + HttpEntity requestEntity = new HttpEntity<>(req); + + HttpClient httpClient = HttpClientBuilder.create().setMaxConnPerRoute(10).build(); // bad + return remoteCall(httpClient, requestEntity); + } +} +]]> + + + + + + Problem: Gson creation is relatively expensive. A JMH benchmark shows a 24x improvement reusing one instance. + + Solution: Since Gson objects are thread-safe after creation, they can be shared between threads. + So reuse created instances from a static field. + Pay attention to use thread-safe (custom) adapters and serializers. + + 3 + + + + + + + + + + + From deddd914be12567ecf33146f9a2f7acb0c10fa0a Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 16 Sep 2025 14:36:18 +0200 Subject: [PATCH 70/93] PMD: Exclude unused rule --- .config/pmd/java/ruleset.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index 28bc272..517b924 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -185,6 +185,9 @@ + + + From 53b1e5dfd3fc70d91302cfb4fef2dd48b1b65ccb Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 16 Sep 2025 14:36:48 +0200 Subject: [PATCH 71/93] PMD: Reword and also apply to runAsync --- .config/pmd/java/ruleset.xml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index 517b924..cda412b 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -841,6 +841,8 @@ public class GoodPerson implements Comparable { Solution: Use a dedicated thread pool with enough threads to get proper parallelism. The number of threads in the common pool is equal to the number of CPUs and meant to utilize all of them. It assumes CPU-intensive non-blocking processing of in-memory data. + + See also: [_Be Aware of ForkJoinPool#commonPool()_](https://dzone.com/articles/be-aware-of-forkjoinpoolcommonpool) 2 @@ -897,22 +899,25 @@ public class Foo { - Future.supplyAsync is typically used for remote calls. By default, it uses the common pool. + CompletableFuture.supplyAsync/runAsync is typically used for remote calls. + By default it uses the common pool. The number of threads in the common pool is equal to the number of CPU's, which is suitable for in-memory processing. For I/O, however, this number is typically not suitable because most time is spent waiting for the response and not in CPU. The common pool must not be used for blocking calls. - Solution: A separate, properly sized, pool of threads (an Executor) should be used for the async calls. + Solution: A separate, properly sized pool of threads (an Executor) should be used for the async calls. + + See also: [_Be Aware of ForkJoinPool#commonPool()_](https://dzone.com/articles/be-aware-of-forkjoinpoolcommonpool) 2 From e6358ed1fa1e6c743e9a7b055a55862beacb8677 Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 16 Sep 2025 14:36:56 +0200 Subject: [PATCH 72/93] PMD: Fix error --- .config/pmd/java/ruleset.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index cda412b..bb8177f 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -1066,7 +1066,7 @@ public static String good(CompletableFuture complFuture) throws Exceptio //MethodDeclaration//MethodCall[ pmd-java:matchesSig('org.apache.hc.client5.http.impl.classic.HttpClientBuilder#create()') or pmd-java:matchesSig('org.apache.hc.client5.http.impl.classic.HttpClients#custom()') - or pmd-java:matchesSig('org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder#build()' + or pmd-java:matchesSig('org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder#build()') ] [ancestor::MethodDeclaration//ClassType[pmd-java:typeIs('org.springframework.http.HttpEntity') or pmd-java:typeIs('org.springframework.http.ResponseEntity')] From 042b7a495804644325788e8d174aa2d02622da85 Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 16 Sep 2025 14:37:10 +0200 Subject: [PATCH 73/93] PMD: Remove rule as it yields too many FP --- .config/pmd/java/ruleset.xml | 63 ------------------------------------ 1 file changed, 63 deletions(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index bb8177f..a5b7634 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -766,69 +766,6 @@ public class Foo { - - - Creating Comparator instances repeatedly in methods like compareTo or sort calls is inefficient. - - Solution: Initialize the Comparator once as a static final field and reuse. - - 2 - - - - - - - - - { - @Override - public int compareTo(@NotNull Person o) { - return Comparator.comparing(Person::getFirstName) // Bad: Creates new Comparator instance on each invocation - .thenComparing(Person::getLastName) - .thenComparingInt(Person::getAge) - .compare(this, o); - } -} - -public class GoodPerson implements Comparable { - private static final Comparator COMPARE_FIRST_LAST_NAME_AGE = - Comparator.comparing(Person::getFirstName) - .thenComparing(Person::getLastName) - .thenComparingInt(Person::getAge); - - @Override - public int compareTo(@NotNull Person o) { - return COMPARE_FIRST_LAST_NAME_AGE.compare(this, o); // Good: Comparator initialized once as static final field - } -} -]]> - - - Date: Wed, 17 Sep 2025 10:32:54 +0200 Subject: [PATCH 74/93] PMF: Cleanup and format --- .config/pmd/java/ruleset.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index a5b7634..748c826 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -448,7 +448,7 @@ String good_replaceInnerLineBreakBySpace() { - + + 3 @@ -565,7 +565,7 @@ public enum Fruit { Solution: Usually a pattern is a literal, not dynamic and can be compiled only once. Assign it to a private static field. java.util.Pattern objects are thread-safe so they can be shared among threads. - + 2 From 7bcc1bd25b867131f2190e8e86d41f90aa8ada2a Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sun, 21 Sep 2025 04:13:51 +0000 Subject: [PATCH 75/93] Update dependency org.apache.maven.plugins:maven-javadoc-plugin to v3.12.0 --- template-placeholder/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 7380883..89d4aa7 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -108,7 +108,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.11.3 + 3.12.0 attach-javadocs From e0867d36ce22ad168d47ea3c6dd59dfae4db74b4 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Mon, 22 Sep 2025 04:19:37 +0000 Subject: [PATCH 76/93] Update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.14.1 --- template-placeholder-demo/pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/template-placeholder-demo/pom.xml b/template-placeholder-demo/pom.xml index 3702222..b6ff1fd 100644 --- a/template-placeholder-demo/pom.xml +++ b/template-placeholder-demo/pom.xml @@ -44,7 +44,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 ${maven.compiler.release} diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 7380883..f67b505 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -97,7 +97,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 ${maven.compiler.release} From 184b908f235cf93fade385838d806417c1ee6564 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Mon, 22 Sep 2025 04:19:40 +0000 Subject: [PATCH 77/93] Update dependency org.codehaus.mojo:flatten-maven-plugin to v1.7.3 --- template-placeholder/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 7380883..e356a34 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -147,7 +147,7 @@ org.codehaus.mojo flatten-maven-plugin - 1.7.2 + 1.7.3 ossrh From 0e8aefd14b6e396990ff21fcdd9d0bc0fe7e25b3 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Wed, 24 Sep 2025 04:13:23 +0000 Subject: [PATCH 78/93] Update dependency org.sonatype.central:central-publishing-maven-plugin to v0.9.0 --- template-placeholder/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 27a24c8..4c4214c 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -193,7 +193,7 @@ org.sonatype.central central-publishing-maven-plugin - 0.8.0 + 0.9.0 true sonatype-central-portal From f08c6622dbeb98cc1db48a845335020e361b2814 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Mon, 29 Sep 2025 04:14:48 +0000 Subject: [PATCH 79/93] Update dependency com.puppycrawl.tools:checkstyle to v11.1.0 --- pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index f824869..61578c0 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ com.puppycrawl.tools checkstyle - 11.0.1 + 11.1.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 4c4214c..3d8cc2c 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -215,7 +215,7 @@ com.puppycrawl.tools checkstyle - 11.0.1 + 11.1.0 From 6278740ec8418dbe1933b70fbab9c3cf7c3f59e7 Mon Sep 17 00:00:00 2001 From: AB Date: Mon, 29 Sep 2025 13:42:00 +0200 Subject: [PATCH 80/93] Fix broken-links not finding issues on GH CLI v2.79+ Fix https://github.com/xdev-software/base-template/issues/8 --- .github/workflows/broken-links.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index 9493fb8..436ce50 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -25,7 +25,7 @@ jobs: - name: Find already existing issue id: find-issue run: | - echo "number=$(gh issue list -l 'bug' -l 'automated' -L 1 -S 'in:title \"Link Checker Report\"' -s 'open' --json 'number' --jq '.[].number')" >> $GITHUB_OUTPUT + echo "number=$(gh issue list -l 'bug' -l 'automated' -L 1 -S 'in:title "Link Checker Report"' -s 'open' --json 'number' --jq '.[].number')" >> $GITHUB_OUTPUT env: GH_TOKEN: ${{ github.token }} From 39c4703001cf7da323fb6b809f1ab733284a536d Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 30 Sep 2025 09:52:34 +0200 Subject: [PATCH 81/93] Test compile with Java 25 & Update docs --- .github/workflows/check-build.yml | 2 +- CONTRIBUTING.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml index 01f0840..e975764 100644 --- a/.github/workflows/check-build.yml +++ b/.github/workflows/check-build.yml @@ -28,7 +28,7 @@ jobs: timeout-minutes: 30 strategy: matrix: - java: [17, 21] + java: [17, 21, 25] distribution: [temurin] steps: - uses: actions/checkout@v5 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index be2a186..2c7b025 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,7 +19,7 @@ We also encourage you to read the [contribution instructions by GitHub](https:// ### Software Requirements You should have the following things installed: * Git -* Java 21 - should be as unmodified as possible (Recommended: [Eclipse Adoptium](https://adoptium.net/temurin/releases/)) +* Java 25 - should be as unmodified as possible (Recommended: [Eclipse Adoptium](https://adoptium.net/temurin/releases/)) * Maven (Note that the [Maven Wrapper](https://maven.apache.org/wrapper/) is shipped with the repo) ### Recommended setup From f71bf683b682ca9d985ee02a13b157676e21cd9f Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 2 Oct 2025 04:10:53 +0000 Subject: [PATCH 82/93] Update peter-evans/create-issue-from-file action to v6 --- .github/workflows/broken-links.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index 436ce50..a99ae52 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -37,7 +37,7 @@ jobs: - name: Create Issue From File if: steps.lychee.outputs.exit_code != 0 - uses: peter-evans/create-issue-from-file@e8ef132d6df98ed982188e460ebb3b5d4ef3a9cd # v5 + uses: peter-evans/create-issue-from-file@fca9117c27cdc29c6c4db3b86c48e4115a786710 # v6 with: issue-number: ${{ steps.find-issue.outputs.number }} title: Link Checker Report From 046de3916a42b79a547d1a8281de2bc875e9091c Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 2 Oct 2025 10:47:35 +0200 Subject: [PATCH 83/93] Update PMD scheme location --- .config/pmd/java/ruleset.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index 748c826..6bf58b3 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -2,7 +2,7 @@ + xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.github.io/ruleset_2_0_0.xsd"> This ruleset checks the code for discouraged programming constructs. From d3806058ec9caf0870392740f549fd59e9b5bf79 Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 7 Oct 2025 14:54:43 +0200 Subject: [PATCH 84/93] Fix typo --- .config/pmd/java/ruleset.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index 6bf58b3..4570323 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -204,7 +204,7 @@ Usually all cases where `StringBuilder` (or the outdated `StringBuffer`) is used are either due to confusing (legacy) logic or may be replaced by a simpler string concatenation. From 4b291eeeef3ede4611977552ae55732e3aa0b454 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 9 Oct 2025 11:38:53 +0200 Subject: [PATCH 85/93] Resync I --- .../pom.xml | 116 ------------------ 1 file changed, 116 deletions(-) delete mode 100644 spring-security-advanced-authentication-ui-demo/pom.xml diff --git a/spring-security-advanced-authentication-ui-demo/pom.xml b/spring-security-advanced-authentication-ui-demo/pom.xml deleted file mode 100644 index 168c2ae..0000000 --- a/spring-security-advanced-authentication-ui-demo/pom.xml +++ /dev/null @@ -1,116 +0,0 @@ - - - 4.0.0 - - - software.xdev - spring-security-advanced-authentication-ui-root - 2.1.1-SNAPSHOT - - - spring-security-advanced-authentication-ui-demo - 2.1.1-SNAPSHOT - jar - - - XDEV Software - https://xdev.software - - - - 17 - ${javaVersion} - - UTF-8 - UTF-8 - - software.xdev.Application - - 3.5.5 - - - - - - org.springframework.boot - spring-boot-dependencies - ${org.springframework.boot.version} - pom - import - - - - - - - - software.xdev - spring-security-advanced-authentication-ui - ${project.version} - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-security - - - org.springframework.boot - spring-boot-starter-oauth2-client - - - - - com.webauthn4j - webauthn4j-core - 0.29.5.RELEASE - - - - org.springframework.boot - spring-boot-devtools - true - - - - - ${project.artifactId} - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.14.0 - - ${maven.compiler.release} - - -proc:none - - - - - - org.springframework.boot - spring-boot-maven-plugin - ${org.springframework.boot.version} - - ${mainClass} - - - - repackage - - repackage - - package - - - - - - From becee132af80d9d4a5e530d26bf7025b6f840254 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 9 Oct 2025 11:38:59 +0200 Subject: [PATCH 86/93] Resync II --- .../pom.xml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {template-placeholder-demo => spring-security-advanced-authentication-ui-demo}/pom.xml (100%) diff --git a/template-placeholder-demo/pom.xml b/spring-security-advanced-authentication-ui-demo/pom.xml similarity index 100% rename from template-placeholder-demo/pom.xml rename to spring-security-advanced-authentication-ui-demo/pom.xml From 9547f9151e70f0b04f2c45b32c1e5215bdaf3365 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 9 Oct 2025 11:39:27 +0200 Subject: [PATCH 87/93] Resync III --- .../pom.xml | 77 +++++++++++++------ 1 file changed, 54 insertions(+), 23 deletions(-) diff --git a/spring-security-advanced-authentication-ui-demo/pom.xml b/spring-security-advanced-authentication-ui-demo/pom.xml index b6ff1fd..e4db50d 100644 --- a/spring-security-advanced-authentication-ui-demo/pom.xml +++ b/spring-security-advanced-authentication-ui-demo/pom.xml @@ -6,12 +6,12 @@ software.xdev - template-placeholder-root - 1.0.0-SNAPSHOT + spring-security-advanced-authentication-ui-root + 2.1.1-SNAPSHOT - template-placeholder-demo - 1.0.0-SNAPSHOT + spring-security-advanced-authentication-ui-demo + 2.1.1-SNAPSHOT jar @@ -27,14 +27,55 @@ UTF-8 software.xdev.Application + + 3.5.6 + + + + org.springframework.boot + spring-boot-dependencies + ${org.springframework.boot.version} + pom + import + + + + + software.xdev - template-placeholder + spring-security-advanced-authentication-ui ${project.version} + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-oauth2-client + + + + + com.webauthn4j + webauthn4j-core + 0.29.5.RELEASE + + + + org.springframework.boot + spring-boot-devtools + true + @@ -52,31 +93,21 @@ + - org.apache.maven.plugins - maven-assembly-plugin - 3.7.1 + org.springframework.boot + spring-boot-maven-plugin + ${org.springframework.boot.version} - - - ${mainClass} - - - true - - - - jar-with-dependencies - - false + ${mainClass} - make-assembly - package + repackage - single + repackage + package From d5959a48aa03da501357dbfd85b51411cf82f3a0 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 9 Oct 2025 09:40:39 +0000 Subject: [PATCH 88/93] Update dependency com.webauthn4j:webauthn4j-core to v0.29.7.RELEASE --- spring-security-advanced-authentication-ui-demo/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-security-advanced-authentication-ui-demo/pom.xml b/spring-security-advanced-authentication-ui-demo/pom.xml index e4db50d..ce2f2af 100644 --- a/spring-security-advanced-authentication-ui-demo/pom.xml +++ b/spring-security-advanced-authentication-ui-demo/pom.xml @@ -68,7 +68,7 @@ com.webauthn4j webauthn4j-core - 0.29.5.RELEASE + 0.29.7.RELEASE From 9976e04534a60d229b3c3eab72cf8745d1f2f591 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 9 Oct 2025 09:40:41 +0000 Subject: [PATCH 89/93] Update dependency org.apache.maven.plugins:maven-surefire-plugin to v3.5.4 --- spring-security-advanced-authentication-ui/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-security-advanced-authentication-ui/pom.xml b/spring-security-advanced-authentication-ui/pom.xml index 23fd5d4..509d356 100644 --- a/spring-security-advanced-authentication-ui/pom.xml +++ b/spring-security-advanced-authentication-ui/pom.xml @@ -163,7 +163,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.5.3 + 3.5.4 From 03f9d8bb11a4cfe16d440782bc85c502f0d375a1 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 9 Oct 2025 09:40:42 +0000 Subject: [PATCH 90/93] Update org.springframework.boot to v3.5.6 --- spring-security-advanced-authentication-ui/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-security-advanced-authentication-ui/pom.xml b/spring-security-advanced-authentication-ui/pom.xml index 23fd5d4..effc8d8 100644 --- a/spring-security-advanced-authentication-ui/pom.xml +++ b/spring-security-advanced-authentication-ui/pom.xml @@ -53,13 +53,13 @@ org.springframework.boot spring-boot-starter-web - 3.5.5 + 3.5.6 provided org.springframework.boot spring-boot-starter-security - 3.5.5 + 3.5.6 provided From 06b41c418d958e8265c54cfe72f311aa3bc72004 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 9 Oct 2025 09:40:54 +0000 Subject: [PATCH 91/93] Update dependency org.junit.jupiter:junit-jupiter to v6 --- spring-security-advanced-authentication-ui/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-security-advanced-authentication-ui/pom.xml b/spring-security-advanced-authentication-ui/pom.xml index 23fd5d4..bcfb862 100644 --- a/spring-security-advanced-authentication-ui/pom.xml +++ b/spring-security-advanced-authentication-ui/pom.xml @@ -66,7 +66,7 @@ org.junit.jupiter junit-jupiter - 5.13.4 + 6.0.0 test From e30be70314e87459388e4f08482429d67b7021b9 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 9 Oct 2025 11:42:30 +0200 Subject: [PATCH 92/93] Update CHANGELOG.md --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ddc5dd0..6b845f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +# 2.1.1 +* Updated dependencies + # 2.1.0 * Updated to Spring Security 6.5+ / Spring Boot 3.5+ * [``Extendable``] Backported some minor upstream changes From 506abfb4bcf61b17e600a98a3d77042d1adfbd4f Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 9 Oct 2025 11:45:05 +0200 Subject: [PATCH 93/93] Fix PMD reported problems --- ...xtendableDefaultLoginPageGeneratingFilter.java | 14 ++++++-------- ...tendableDefaultLogoutPageGeneratingFilter.java | 15 +++++++-------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/spring-security-advanced-authentication-ui/src/main/java/software/xdev/spring/security/web/authentication/ui/extendable/filters/ExtendableDefaultLoginPageGeneratingFilter.java b/spring-security-advanced-authentication-ui/src/main/java/software/xdev/spring/security/web/authentication/ui/extendable/filters/ExtendableDefaultLoginPageGeneratingFilter.java index dedfdfe..f8e0a03 100644 --- a/spring-security-advanced-authentication-ui/src/main/java/software/xdev/spring/security/web/authentication/ui/extendable/filters/ExtendableDefaultLoginPageGeneratingFilter.java +++ b/spring-security-advanced-authentication-ui/src/main/java/software/xdev/spring/security/web/authentication/ui/extendable/filters/ExtendableDefaultLoginPageGeneratingFilter.java @@ -352,16 +352,14 @@ protected String renderPasskeyLogin() protected String renderHeaders(final HttpServletRequest request) { - final StringBuilder javascriptHeadersEntries = new StringBuilder(); - final Map headers = this.resolveHeaders.apply(request); - for(final Map.Entry header : headers.entrySet()) - { - javascriptHeadersEntries.append(HtmlTemplates.fromTemplate(CSRF_HEADERS) + return this.resolveHeaders.apply(request) + .entrySet() + .stream() + .map(header -> HtmlTemplates.fromTemplate(CSRF_HEADERS) .withValue("headerName", header.getKey()) .withValue("headerValue", header.getValue()) - .render()); - } - return javascriptHeadersEntries.toString(); + .render()) + .collect(Collectors.joining()); } protected String renderFormLogin( diff --git a/spring-security-advanced-authentication-ui/src/main/java/software/xdev/spring/security/web/authentication/ui/extendable/filters/ExtendableDefaultLogoutPageGeneratingFilter.java b/spring-security-advanced-authentication-ui/src/main/java/software/xdev/spring/security/web/authentication/ui/extendable/filters/ExtendableDefaultLogoutPageGeneratingFilter.java index ea44d40..94d9312 100644 --- a/spring-security-advanced-authentication-ui/src/main/java/software/xdev/spring/security/web/authentication/ui/extendable/filters/ExtendableDefaultLogoutPageGeneratingFilter.java +++ b/spring-security-advanced-authentication-ui/src/main/java/software/xdev/spring/security/web/authentication/ui/extendable/filters/ExtendableDefaultLogoutPageGeneratingFilter.java @@ -20,6 +20,7 @@ import java.util.Map; import java.util.Set; import java.util.function.Function; +import java.util.stream.Collectors; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; @@ -113,16 +114,14 @@ public void setResolveHiddenInputs(final Function input : this.resolveHiddenInputs.apply(request).entrySet()) - { - final String inputElement = HtmlTemplates.fromTemplate(HIDDEN_HTML_INPUT_TEMPLATE) + return this.resolveHiddenInputs.apply(request) + .entrySet() + .stream() + .map(input -> HtmlTemplates.fromTemplate(HIDDEN_HTML_INPUT_TEMPLATE) .withValue("name", input.getKey()) .withValue("value", input.getValue()) - .render(); - sb.append(inputElement); - } - return sb.toString(); + .render()) + .collect(Collectors.joining()); } // Method is missing on upstream