From a1cfdb357937f20aa158ec45c7eb7ed4f05f73b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Dinis=20Ferreira?= Date: Sat, 20 Sep 2025 00:46:51 +0200 Subject: [PATCH 1/6] ci: experiment with new verify --- .github/workflows/verify.yml | 146 +++++++++++++++++++++++++++++++---- 1 file changed, 132 insertions(+), 14 deletions(-) diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 9e4f392b5d..0d4ab1b3b8 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -1,49 +1,167 @@ name: verify on: [push, pull_request] +env: + JAVA_VERSION: '21' + MAVEN_VERSION: 3.9.11 + PMD_VERSION: '7.15.0' jobs: - pmd: - runs-on: ubuntu-22.04 + compile: + runs-on: ubuntu-24.04 + steps: + - name: Set up Maven + uses: stCarolas/setup-maven@v5 + with: + maven-version: ${{ env.MAVEN_VERSION }} + - uses: actions/checkout@v5 + - name: Set up JDK 21 + uses: actions/setup-java@v5 + with: + distribution: 'temurin' + java-version: ${{ env.JAVA_VERSION }} + - name: Set up Workspace Environment Variable + run: echo "WORKSPACE=${{ github.workspace }}" >> $GITHUB_ENV + - name: Cache Maven dependencies + uses: actions/cache@v4 + with: + path: /home/runner/.m2/repository + key: ${{ runner.os }}-maven-0-${{ hashFiles('**/pom.xml') }} + - name: Compile with Maven + run: mvn clean compile -f ./ddk-parent/pom.xml --batch-mode -T3C + - name: Upload compiled artifacts + uses: actions/upload-artifact@v4 + with: + name: compiled-classes + path: | + **/target/classes + **/target/generated-sources + retention-days: 1 + + # test: + # needs: compile + # runs-on: ubuntu-24.04 + # steps: + # - name: Set up Maven + # uses: stCarolas/setup-maven@v5 + # with: + # maven-version: ${{ env.MAVEN_VERSION }} + # - uses: actions/checkout@v5 + # - name: Set up JDK 21 + # uses: actions/setup-java@v5 + # with: + # distribution: 'temurin' + # java-version: ${{ env.JAVA_VERSION }} + # - name: Set up Workspace Environment Variable + # run: echo "WORKSPACE=${{ github.workspace }}" >> $GITHUB_ENV + # - name: Cache Maven dependencies + # uses: actions/cache@v4 + # with: + # path: /home/runner/.m2/repository + # key: ${{ runner.os }}-maven-0-${{ hashFiles('**/pom.xml') }} + # - name: Download compiled artifacts + # uses: actions/download-artifact@v4 + # with: + # name: compiled-classes + # - name: Run tests with Maven within a virtual X Server Environment + # run: xvfb-run mvn test -f ./ddk-parent/pom.xml --batch-mode -T1C + # - name: Archive Tycho Surefire Plugin + # if: ${{ failure() }} + # uses: actions/upload-artifact@v4 + # with: + # name: tycho-surefire-plugin-test + # path: ${{ env.GITHUB_WORKSPACE }}/com.avaloq.tools.ddk.xtext.test/target/work/data/.metadata/.log + + pmd-github: + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v5 - uses: actions/setup-java@v5 with: distribution: 'temurin' - java-version: '21' + java-version: ${{ env.JAVA_VERSION }} - name: PMD uses: pmd/pmd-github-action@v2.0.0 id: pmd with: - version: '7.15.0' + version: ${{ env.PMD_VERSION }} rulesets: 'ddk-configuration/pmd/ruleset.xml' analyzeModifiedFilesOnly: false - name: Fail build if there are violations if: steps.pmd.outputs.violations != 0 run: exit 1 - maven-verify: - runs-on: ubuntu-22.04 + + static-analysis: + needs: compile + runs-on: ubuntu-24.04 + strategy: + fail-fast: false + matrix: + tool: [checkstyle, pmd, spotbugs] steps: - name: Set up Maven uses: stCarolas/setup-maven@v5 with: - maven-version: 3.9.9 + maven-version: ${{ env.MAVEN_VERSION }} - uses: actions/checkout@v5 - name: Set up JDK 21 uses: actions/setup-java@v5 with: distribution: 'temurin' - java-version: '21' - - name: Set up Workspace Enviroment Variable - run: echo "WORKSPACE=${{ github.workspace }}" >> $GITHUB_ENV + java-version: ${{ env.JAVA_VERSION }} + - name: Set up Workspace Environment Variable + run: echo "WORKSPACE=${{ github.workspace }}" >> $GITHUB_ENV - name: Cache Maven dependencies uses: actions/cache@v4 - with: + with: path: /home/runner/.m2/repository key: ${{ runner.os }}-maven-0-${{ hashFiles('**/pom.xml') }} - - name: Build with Maven within a virtual X Server Environment - run: xvfb-run mvn clean verify checkstyle:check pmd:pmd pmd:check pmd:cpd-check spotbugs:check -f ./ddk-parent/pom.xml --batch-mode --fail-at-end + - name: Download compiled artifacts + uses: actions/download-artifact@v4 + with: + name: compiled-classes + - name: Run ${{ matrix.tool }} + run: | + case "${{ matrix.tool }}" in + checkstyle) + mvn checkstyle:check -f ./ddk-parent/pom.xml --batch-mode + ;; + pmd) + mvn pmd:pmd pmd:check pmd:cpd-check -f ./ddk-parent/pom.xml --batch-mode + ;; + spotbugs) + mvn spotbugs:check -f ./ddk-parent/pom.xml --batch-mode + ;; + esac + + integration-tests: + needs: compile + runs-on: ubuntu-24.04 + steps: + - name: Set up Maven + uses: stCarolas/setup-maven@v5 + with: + maven-version: ${{ env.MAVEN_VERSION }} + - uses: actions/checkout@v5 + - name: Set up JDK 21 + uses: actions/setup-java@v5 + with: + distribution: 'temurin' + java-version: ${{ env.JAVA_VERSION }} + - name: Set up Workspace Environment Variable + run: echo "WORKSPACE=${{ github.workspace }}" >> $GITHUB_ENV + - name: Cache Maven dependencies + uses: actions/cache@v4 + with: + path: /home/runner/.m2/repository + key: ${{ runner.os }}-maven-0-${{ hashFiles('**/pom.xml') }} + - name: Download compiled artifacts + uses: actions/download-artifact@v4 + with: + name: compiled-classes + - name: Run integration tests with Maven within a virtual X Server Environment + run: xvfb-run mvn verify -f ./ddk-parent/pom.xml --batch-mode --fail-at-end - name: Archive Tycho Surefire Plugin if: ${{ failure() }} uses: actions/upload-artifact@v4 with: - name: tycho-surefire-plugin + name: tycho-surefire-plugin-integration path: ${{ env.GITHUB_WORKSPACE }}/com.avaloq.tools.ddk.xtext.test/target/work/data/.metadata/.log From 2fff55063d95ff68b4a8cee15beffad22550f794 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Dinis=20Ferreira?= Date: Sat, 20 Sep 2025 00:54:29 +0200 Subject: [PATCH 2/6] try further parallelization --- .github/workflows/verify.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 0d4ab1b3b8..11c06b9a15 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -122,13 +122,13 @@ jobs: run: | case "${{ matrix.tool }}" in checkstyle) - mvn checkstyle:check -f ./ddk-parent/pom.xml --batch-mode + mvn checkstyle:check -f ./ddk-parent/pom.xml --batch-mode -T1C ;; pmd) - mvn pmd:pmd pmd:check pmd:cpd-check -f ./ddk-parent/pom.xml --batch-mode + mvn pmd:pmd pmd:check pmd:cpd-check -f ./ddk-parent/pom.xml --batch-mode -T1C ;; spotbugs) - mvn spotbugs:check -f ./ddk-parent/pom.xml --batch-mode + mvn spotbugs:check -f ./ddk-parent/pom.xml --batch-mode -T1C ;; esac @@ -158,7 +158,7 @@ jobs: with: name: compiled-classes - name: Run integration tests with Maven within a virtual X Server Environment - run: xvfb-run mvn verify -f ./ddk-parent/pom.xml --batch-mode --fail-at-end + run: xvfb-run mvn verify -f ./ddk-parent/pom.xml --batch-mode --fail-at-end -T1C - name: Archive Tycho Surefire Plugin if: ${{ failure() }} uses: actions/upload-artifact@v4 From d0f87248ce7cbc6104f3ff60079197d759f53078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Dinis=20Ferreira?= Date: Sat, 20 Sep 2025 08:32:26 +0200 Subject: [PATCH 3/6] split up static checks for early results --- .github/workflows/verify.yml | 44 ++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 11c06b9a15..2b0190e89d 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -89,13 +89,12 @@ jobs: if: steps.pmd.outputs.violations != 0 run: exit 1 - static-analysis: - needs: compile + early-static-analysis: runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: - tool: [checkstyle, pmd, spotbugs] + tool: [checkstyle, pmd] steps: - name: Set up Maven uses: stCarolas/setup-maven@v5 @@ -114,24 +113,45 @@ jobs: with: path: /home/runner/.m2/repository key: ${{ runner.os }}-maven-0-${{ hashFiles('**/pom.xml') }} - - name: Download compiled artifacts - uses: actions/download-artifact@v4 - with: - name: compiled-classes - name: Run ${{ matrix.tool }} run: | case "${{ matrix.tool }}" in checkstyle) - mvn checkstyle:check -f ./ddk-parent/pom.xml --batch-mode -T1C + mvn checkstyle:check -f ./ddk-parent/pom.xml --batch-mode -T2C ;; pmd) - mvn pmd:pmd pmd:check pmd:cpd-check -f ./ddk-parent/pom.xml --batch-mode -T1C - ;; - spotbugs) - mvn spotbugs:check -f ./ddk-parent/pom.xml --batch-mode -T1C + mvn pmd:pmd pmd:check pmd:cpd-check -f ./ddk-parent/pom.xml --batch-mode -T2C ;; esac + spotbugs: + needs: compile + runs-on: ubuntu-24.04 + steps: + - name: Set up Maven + uses: stCarolas/setup-maven@v5 + with: + maven-version: ${{ env.MAVEN_VERSION }} + - uses: actions/checkout@v5 + - name: Set up JDK 21 + uses: actions/setup-java@v5 + with: + distribution: 'temurin' + java-version: ${{ env.JAVA_VERSION }} + - name: Set up Workspace Environment Variable + run: echo "WORKSPACE=${{ github.workspace }}" >> $GITHUB_ENV + - name: Cache Maven dependencies + uses: actions/cache@v4 + with: + path: /home/runner/.m2/repository + key: ${{ runner.os }}-maven-0-${{ hashFiles('**/pom.xml') }} + - name: Download compiled artifacts + uses: actions/download-artifact@v4 + with: + name: compiled-classes + - name: Run SpotBugs + run: mvn spotbugs:check -f ./ddk-parent/pom.xml --batch-mode -T2C + integration-tests: needs: compile runs-on: ubuntu-24.04 From 9193b6f335f5b921491952830bcee0ef5335e10e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Dinis=20Ferreira?= Date: Sat, 20 Sep 2025 08:55:48 +0200 Subject: [PATCH 4/6] fix: set actions/download-artifact@v4 path --- .github/workflows/verify.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 2b0190e89d..e5297b5bff 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -149,6 +149,7 @@ jobs: uses: actions/download-artifact@v4 with: name: compiled-classes + path: . - name: Run SpotBugs run: mvn spotbugs:check -f ./ddk-parent/pom.xml --batch-mode -T2C @@ -177,6 +178,7 @@ jobs: uses: actions/download-artifact@v4 with: name: compiled-classes + path: . - name: Run integration tests with Maven within a virtual X Server Environment run: xvfb-run mvn verify -f ./ddk-parent/pom.xml --batch-mode --fail-at-end -T1C - name: Archive Tycho Surefire Plugin From fbd7a15b2825e4e38a42bc83e579dbb6de035fe0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Dinis=20Ferreira?= Date: Sat, 20 Sep 2025 09:07:06 +0200 Subject: [PATCH 5/6] fix spotbugs classpath --- ddk-parent/pom.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ddk-parent/pom.xml b/ddk-parent/pom.xml index ea94cdecba..50dc76d2ae 100644 --- a/ddk-parent/pom.xml +++ b/ddk-parent/pom.xml @@ -50,7 +50,7 @@ 11.0.1 3.5.0 3.1.4 - 4.9.4.2 + 4.9.6.0 4.9.5 3.27.0 7.17.0 @@ -359,6 +359,8 @@ Low ${spotbugs.excludeFilterFile} 1024 + ${project.build.directory}/classes + ${project.build.directory}/../*/target/classes From fa0ae86212819953ee22cdd03e6062290d3325b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Dinis=20Ferreira?= Date: Sat, 20 Sep 2025 09:49:49 +0200 Subject: [PATCH 6/6] use spotbugs cli to solve classpath issue --- .github/workflows/verify.yml | 205 ++++++++++++++++++++++++++++------- ddk-parent/pom.xml | 8 +- 2 files changed, 167 insertions(+), 46 deletions(-) diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index e5297b5bff..e1931b87fd 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -5,9 +5,9 @@ env: MAVEN_VERSION: 3.9.11 PMD_VERSION: '7.15.0' jobs: - compile: - runs-on: ubuntu-24.04 - steps: + compile: + runs-on: ubuntu-24.04 + steps: - name: Set up Maven uses: stCarolas/setup-maven@v5 with: @@ -20,21 +20,31 @@ jobs: java-version: ${{ env.JAVA_VERSION }} - name: Set up Workspace Environment Variable run: echo "WORKSPACE=${{ github.workspace }}" >> $GITHUB_ENV - - name: Cache Maven dependencies - uses: actions/cache@v4 - with: - path: /home/runner/.m2/repository - key: ${{ runner.os }}-maven-0-${{ hashFiles('**/pom.xml') }} + - name: Cache Maven and p2 dependencies + uses: actions/cache@v4 + with: + path: | + /home/runner/.m2/repository + /home/runner/.p2 + key: ${{ runner.os }}-maven-0-${{ hashFiles('**/pom.xml', 'ddk-target/*.target') }} - name: Compile with Maven run: mvn clean compile -f ./ddk-parent/pom.xml --batch-mode -T3C - - name: Upload compiled artifacts - uses: actions/upload-artifact@v4 - with: - name: compiled-classes - path: | - **/target/classes - **/target/generated-sources - retention-days: 1 + - name: Upload compiled artifacts + uses: actions/upload-artifact@v4 + with: + name: compiled-classes + path: | + **/target/classes + **/target/generated-sources + retention-days: 1 + - name: Upload p2 pool cache for SpotBugs + if: always() + uses: actions/upload-artifact@v4 + with: + name: p2-pool + path: /home/runner/.p2/pool + if-no-files-found: ignore + retention-days: 1 # test: # needs: compile @@ -108,11 +118,13 @@ jobs: java-version: ${{ env.JAVA_VERSION }} - name: Set up Workspace Environment Variable run: echo "WORKSPACE=${{ github.workspace }}" >> $GITHUB_ENV - - name: Cache Maven dependencies - uses: actions/cache@v4 - with: - path: /home/runner/.m2/repository - key: ${{ runner.os }}-maven-0-${{ hashFiles('**/pom.xml') }} + - name: Cache Maven and p2 dependencies + uses: actions/cache@v4 + with: + path: | + /home/runner/.m2/repository + /home/runner/.p2 + key: ${{ runner.os }}-maven-0-${{ hashFiles('**/pom.xml', 'ddk-target/*.target') }} - name: Run ${{ matrix.tool }} run: | case "${{ matrix.tool }}" in @@ -124,10 +136,10 @@ jobs: ;; esac - spotbugs: - needs: compile - runs-on: ubuntu-24.04 - steps: + spotbugs: + needs: compile + runs-on: ubuntu-24.04 + steps: - name: Set up Maven uses: stCarolas/setup-maven@v5 with: @@ -140,18 +152,125 @@ jobs: java-version: ${{ env.JAVA_VERSION }} - name: Set up Workspace Environment Variable run: echo "WORKSPACE=${{ github.workspace }}" >> $GITHUB_ENV - - name: Cache Maven dependencies - uses: actions/cache@v4 - with: - path: /home/runner/.m2/repository - key: ${{ runner.os }}-maven-0-${{ hashFiles('**/pom.xml') }} - - name: Download compiled artifacts - uses: actions/download-artifact@v4 - with: - name: compiled-classes - path: . - - name: Run SpotBugs - run: mvn spotbugs:check -f ./ddk-parent/pom.xml --batch-mode -T2C + - name: Cache Maven and p2 dependencies + uses: actions/cache@v4 + with: + path: | + /home/runner/.m2/repository + /home/runner/.p2 + key: ${{ runner.os }}-maven-0-${{ hashFiles('**/pom.xml', 'ddk-target/*.target') }} + - name: Download compiled artifacts + uses: actions/download-artifact@v4 + with: + name: compiled-classes + path: . + - name: Download p2 pool cache + continue-on-error: true + uses: actions/download-artifact@v4 + with: + name: p2-pool + path: /home/runner/.p2 + - name: Run SpotBugs + run: | + set -eo pipefail + mkdir -p target/spotbugs + + # Collect all compiled class directories + mapfile -t CLASS_DIRS < <(find . -type d -path '*/target/classes' -print | sort) + if [ "${#CLASS_DIRS[@]}" -eq 0 ]; then + echo "No class directories found. Did the compile artifacts download?" + exit 1 + fi + + # Build classpath from all class directories + CLASS_CP=$(IFS=:; echo "${CLASS_DIRS[*]}") + + # Also include Tycho cache location used by some setups + TYCHO_CACHE_ROOT="$HOME/.m2/repository/.cache/tycho" + TYCHO_CP="" + if [ -d "$TYCHO_CACHE_ROOT" ]; then + echo "Collecting Tycho cache bundle jars from $TYCHO_CACHE_ROOT" + mapfile -t TYCHO_JARS < <(find "$TYCHO_CACHE_ROOT" -type f \( -path '*/plugins/*.jar' -o -path '*/bundles/*.jar' \) -print | sort -u) + if [ "${#TYCHO_JARS[@]}" -gt 0 ]; then + TYCHO_CP=$(IFS=:; echo "${TYCHO_JARS[*]}") + fi + fi + + # Include Eclipse p2 shared pool used by Tycho on GitHub runners + P2_POOL_ROOT="$HOME/.p2/pool" + P2_POOL_CP="" + if [ -d "$P2_POOL_ROOT" ]; then + echo "Collecting p2 pool bundle jars from $P2_POOL_ROOT" + mapfile -t P2_POOL_JARS < <(find "$P2_POOL_ROOT" -type f -path '*/plugins/*.jar' -print | sort -u) + if [ "${#P2_POOL_JARS[@]}" -gt 0 ]; then + P2_POOL_CP=$(IFS=:; echo "${P2_POOL_JARS[*]}") + fi + fi + + # Include any built bundle jars (if present) for extra coverage + mapfile -t BUNDLE_JARS < <(find . -type f -path '*/target/*.jar' -print | sort -u) + BUNDLE_CP="" + if [ "${#BUNDLE_JARS[@]}" -gt 0 ]; then + BUNDLE_CP=$(IFS=:; echo "${BUNDLE_JARS[*]}") + fi + + # Combine to final AUX_CP + AUX_CP="$CLASS_CP" + if [ -n "$TYCHO_CP" ]; then + AUX_CP="$AUX_CP:$TYCHO_CP" + fi + if [ -n "$P2_POOL_CP" ]; then + AUX_CP="$AUX_CP:$P2_POOL_CP" + fi + if [ -n "$BUNDLE_CP" ]; then + AUX_CP="$AUX_CP:$BUNDLE_CP" + fi + + # Fetch SpotBugs distribution ZIP (includes all dependencies) + mvn -q dependency:copy \ + -Dartifact=com.github.spotbugs:spotbugs:4.9.6:zip \ + -DoutputDirectory=target/spotbugs + + unzip -q -o target/spotbugs/spotbugs-4.9.6.zip -d target/spotbugs/dist + SPOTBUGS_HOME=$(find target/spotbugs/dist -maxdepth 1 -type d -name 'spotbugs-*' | head -n1) + echo "Using SpotBugs home: $SPOTBUGS_HOME" + + # Run SpotBugs CLI via main class with full lib classpath + set +e + java -Xmx6g -cp "$SPOTBUGS_HOME/lib/*" edu.umd.cs.findbugs.LaunchAppropriateUI \ + -textui -effort:max -low -maxRank 15 -exitcode \ + -exclude ddk-configuration/findbugs/exclusion-filter.xml \ + -auxclasspath "$AUX_CP" \ + -xml:withMessages \ + -output target/spotbugs/spotbugs.xml \ + "${CLASS_DIRS[@]}" 2>&1 | tee target/spotbugs/spotbugs.log + SPOTBUGS_RC=${PIPESTATUS[0]} + set -e + + # Optional: fail if any missing classes remain + MISSING=0 + if grep -q "needed for analysis were missing" target/spotbugs/spotbugs.log; then + echo "ERROR: SpotBugs reported missing classes. Aux classpath is incomplete." + MISSING=1 + fi + + # Preserve SpotBugs exit status but still report missing-classes + if [ "$SPOTBUGS_RC" -ne 0 ]; then + exit "$SPOTBUGS_RC" + fi + if [ "$MISSING" -ne 0 ]; then + exit 2 + fi + + - name: Upload SpotBugs report + if: always() + uses: actions/upload-artifact@v4 + with: + name: spotbugs-report + path: | + target/spotbugs/spotbugs.xml + target/spotbugs/spotbugs.log + retention-days: 7 integration-tests: needs: compile @@ -169,11 +288,13 @@ jobs: java-version: ${{ env.JAVA_VERSION }} - name: Set up Workspace Environment Variable run: echo "WORKSPACE=${{ github.workspace }}" >> $GITHUB_ENV - - name: Cache Maven dependencies - uses: actions/cache@v4 - with: - path: /home/runner/.m2/repository - key: ${{ runner.os }}-maven-0-${{ hashFiles('**/pom.xml') }} + - name: Cache Maven and p2 dependencies + uses: actions/cache@v4 + with: + path: | + /home/runner/.m2/repository + /home/runner/.p2 + key: ${{ runner.os }}-maven-0-${{ hashFiles('**/pom.xml', 'ddk-target/*.target') }} - name: Download compiled artifacts uses: actions/download-artifact@v4 with: diff --git a/ddk-parent/pom.xml b/ddk-parent/pom.xml index 50dc76d2ae..0faae44257 100644 --- a/ddk-parent/pom.xml +++ b/ddk-parent/pom.xml @@ -1,5 +1,5 @@ - + 4.0.0 com.avaloq.tools.ddk @@ -51,13 +51,14 @@ 3.5.0 3.1.4 4.9.6.0 - 4.9.5 + 4.9.6 3.27.0 7.17.0 5.0.0 2.40.0 + ../ddk-target ../ddk-repository @@ -360,7 +361,6 @@ ${spotbugs.excludeFilterFile} 1024 ${project.build.directory}/classes - ${project.build.directory}/../*/target/classes