diff --git a/.config/pmd/ruleset.xml b/.config/pmd/ruleset.xml
new file mode 100644
index 0000000..5f88156
--- /dev/null
+++ b/.config/pmd/ruleset.xml
@@ -0,0 +1,152 @@
+
+
+
+
+ This ruleset checks the code for discouraged programming constructs.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml
index fa9b7f5..2ac6530 100644
--- a/.github/workflows/check-build.yml
+++ b/.github/workflows/check-build.yml
@@ -70,7 +70,7 @@ jobs:
path: ${{ env.DEMO_MAVEN_MODULE }}/target/${{ env.DEMO_MAVEN_MODULE }}.jar
if-no-files-found: error
- code-style:
+ checkstyle:
runs-on: ubuntu-latest
if: ${{ github.event_name != 'pull_request' || !startsWith(github.head_ref, 'renovate/') }}
@@ -91,3 +91,40 @@ jobs:
- name: Run Checkstyle
run: ./mvnw -B checkstyle:check -P checkstyle -T2C
+
+ pmd:
+ runs-on: ubuntu-latest
+ if: ${{ github.event_name != 'pull_request' || !startsWith(github.head_ref, 'renovate/') }}
+
+ strategy:
+ matrix:
+ java: [17]
+ distribution: [temurin]
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up JDK
+ uses: actions/setup-java@v4
+ with:
+ distribution: ${{ matrix.distribution }}
+ java-version: ${{ matrix.java }}
+ cache: 'maven'
+
+ - name: Run PMD
+ run: ./mvnw -B test pmd:aggregate-pmd-no-fork pmd:check -P pmd -DskipTests -T2C
+
+ - name: Run CPD (Copy Paste Detector)
+ run: ./mvnw -B pmd:aggregate-cpd pmd:cpd-check -P pmd -DskipTests -T2C
+
+ - name: Upload report
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: pmd-report
+ if-no-files-found: ignore
+ path: |
+ target/site/*.html
+ target/site/css/**
+ target/site/images/logos/maven-feather.png
+ target/site/images/external.png
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 9a3c5da..f0510bc 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -130,7 +130,7 @@ jobs:
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
- name: Publish to Apache Maven Central
- run: ../mvnw -B deploy -Possrh
+ run: ../mvnw -B deploy -Possrh -DskipTests
env:
MAVEN_CENTRAL_USERNAME: ${{ secrets.S01_OSS_SONATYPE_MAVEN_USERNAME }}
MAVEN_CENTRAL_TOKEN: ${{ secrets.S01_OSS_SONATYPE_MAVEN_TOKEN }}
@@ -157,7 +157,7 @@ jobs:
cache: 'maven'
- name: Build site
- run: ../mvnw -B site
+ run: ../mvnw -B site -DskipTests
working-directory: ${{ env.PRIMARY_MAVEN_MODULE }}
- name: Deploy to Github pages
@@ -186,7 +186,7 @@ jobs:
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)
+ (cd "$i" && $mvnwPath -B build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} -DgenerateBackupPoms=false -DnextSnapshot=true -DupdateMatchingVersions=false)
done
- name: Git Commit and Push
diff --git a/.gitignore b/.gitignore
index d0e81bf..116a656 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,11 +39,6 @@ buildNumber.properties
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
-
-# bin / compiled stuff
-target/
-
-
# JRebel
**/resources/rebel.xml
**/resources/rebel-remote.xml
diff --git a/.idea/saveactions_settings.xml b/.idea/saveactions_settings.xml
index 71a42c4..506f17e 100644
--- a/.idea/saveactions_settings.xml
+++ b/.idea/saveactions_settings.xml
@@ -4,6 +4,7 @@