From f705f4d1d7fa66eea06109f761957859d0c48aae Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 23 Jul 2026 09:28:50 +0000
Subject: [PATCH 1/9] feat: add JaCoCo code coverage reporting and Codecov
upload
- Add jacoco-maven-plugin 0.8.12 to pom.xml with prepare-agent and report executions
- Exclude dictgenerator from coverage report
- Wire argLine into maven-surefire-plugin so JaCoCo agent is activated during tests
- Add test-coverage GitHub Actions job that runs tests and uploads to Codecov
---
.github/workflows/maven.yml | 21 +++++++++++++++++++++
pom.xml | 29 +++++++++++++++++++++++++++++
2 files changed, 50 insertions(+)
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index a8a0cf4ea..40e3423fa 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -64,3 +64,24 @@ jobs:
cache: 'maven'
- name: Test with Maven on Windows
run: ./mvnw.cmd install -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"
+
+ test-coverage:
+ runs-on: ubuntu-latest
+ name: Run tests and upload coverage
+ permissions:
+ contents: read
+ steps:
+ - uses: actions/checkout@v7
+ - name: Set up JDK
+ uses: actions/setup-java@v5
+ with:
+ distribution: 'temurin'
+ java-version: 21
+ cache: 'maven'
+ - name: Test with Maven
+ run: ./mvnw install -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"
+ - name: Upload coverage reports to Codecov
+ uses: codecov/codecov-action@v5
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
+ slug: quickfix-j/quickfixj
diff --git a/pom.xml b/pom.xml
index d22bcb205..8a8034fd8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -73,6 +73,7 @@
3.15.0
3.5.0
3.5.6
+ 0.8.12
3.28.0
3.4.0
3.12.0
@@ -236,6 +237,9 @@
org.apache.maven.plugins
maven-surefire-plugin
${maven-surefire-plugin-version}
+
+ @{argLine} -Dfile.encoding=${project.build.sourceEncoding}
+
org.apache.maven.plugins
@@ -448,6 +452,31 @@
+
+ org.jacoco
+ jacoco-maven-plugin
+ ${jacoco-maven-plugin-version}
+
+
+ jacoco-initialize
+
+ prepare-agent
+
+
+
+ jacoco-site
+ package
+
+ report
+
+
+
+ org/quickfixj/dictgenerator/**
+
+
+
+
+
From 189f22a7cf48f5ee172f76f2d66e1df49f6b0123 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 23 Jul 2026 09:51:41 +0000
Subject: [PATCH 2/9] fix: jacoco version 0.8.15, correct exclusion pattern,
add nightly coverage upload
---
.github/workflows/nightly-build.yml | 6 ++++++
pom.xml | 4 ++--
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml
index 35663ec1c..388073823 100644
--- a/.github/workflows/nightly-build.yml
+++ b/.github/workflows/nightly-build.yml
@@ -24,6 +24,12 @@ jobs:
- name: Build SNAPSHOT
run: ./mvnw clean package -pl '!quickfixj-distribution' -B -V -D"maven.javadoc.skip"="true" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"
+ - name: Upload coverage reports to Codecov
+ uses: codecov/codecov-action@v5
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
+ slug: quickfix-j/quickfixj
+
- name: Delete old packages
continue-on-error: true
uses: SmartsquareGmbH/delete-old-packages@v1.0.0
diff --git a/pom.xml b/pom.xml
index 8a8034fd8..2cb27ec13 100644
--- a/pom.xml
+++ b/pom.xml
@@ -73,7 +73,7 @@
3.15.0
3.5.0
3.5.6
- 0.8.12
+ 0.8.15
3.28.0
3.4.0
3.12.0
@@ -471,7 +471,7 @@
- org/quickfixj/dictgenerator/**
+ quickfixj-messages/quickfixj-messages-*/target/classes/**
From c71a70d1d6564f2d33990174968fe669e1cd3c41 Mon Sep 17 00:00:00 2001
From: Christoph John
Date: Thu, 23 Jul 2026 13:19:44 +0200
Subject: [PATCH 3/9] Remove test-coverage job from maven.yml
... it is done on the nightly build.
---
.github/workflows/maven.yml | 21 ---------------------
1 file changed, 21 deletions(-)
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 40e3423fa..a8a0cf4ea 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -64,24 +64,3 @@ jobs:
cache: 'maven'
- name: Test with Maven on Windows
run: ./mvnw.cmd install -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"
-
- test-coverage:
- runs-on: ubuntu-latest
- name: Run tests and upload coverage
- permissions:
- contents: read
- steps:
- - uses: actions/checkout@v7
- - name: Set up JDK
- uses: actions/setup-java@v5
- with:
- distribution: 'temurin'
- java-version: 21
- cache: 'maven'
- - name: Test with Maven
- run: ./mvnw install -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"
- - name: Upload coverage reports to Codecov
- uses: codecov/codecov-action@v5
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- slug: quickfix-j/quickfixj
From 072ac8c0927f831be13678a00c73096cd61dd651 Mon Sep 17 00:00:00 2001
From: Christoph John
Date: Thu, 23 Jul 2026 13:31:20 +0200
Subject: [PATCH 4/9] Add Codecov badge to README
Added Codecov badge to README for coverage tracking.
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index c7c7cdfbb..245c236aa 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,7 @@ QuickFIX/J
[](https://github.com/quickfix-j/quickfixj/actions/workflows/maven.yml)
[](https://github.com/quickfix-j/quickfixj/actions/workflows/codeql-analysis.yml)
[](https://maven-badges.sml.io/sonatype-central/org.quickfixj/quickfixj-core)
+[](https://codecov.io/gh/quickfix-j/quickfixj)
This is the official QuickFIX/J project repository.
From 4b681f91de2b448ee6789636922c8e789215b513 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 23 Jul 2026 12:40:09 +0000
Subject: [PATCH 5/9] refactor: move JaCoCo to a coverage Maven profile,
activate only on nightly build
- Add default empty argLine property so surefire @{argLine} expands safely without the profile
- Move jacoco-maven-plugin (prepare-agent + report) into a new coverage profile
- Activate -Pcoverage only on the nightly Build SNAPSHOT step
---
.github/workflows/nightly-build.yml | 2 +-
pom.xml | 64 +++++++++++++++++------------
2 files changed, 38 insertions(+), 28 deletions(-)
diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml
index 388073823..54c54da6b 100644
--- a/.github/workflows/nightly-build.yml
+++ b/.github/workflows/nightly-build.yml
@@ -22,7 +22,7 @@ jobs:
cache: maven
- name: Build SNAPSHOT
- run: ./mvnw clean package -pl '!quickfixj-distribution' -B -V -D"maven.javadoc.skip"="true" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"
+ run: ./mvnw clean package -pl '!quickfixj-distribution' -B -V -D"maven.javadoc.skip"="true" -P"coverage" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
diff --git a/pom.xml b/pom.xml
index 2cb27ec13..8f158cee2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -74,6 +74,7 @@
3.5.0
3.5.6
0.8.15
+
3.28.0
3.4.0
3.12.0
@@ -451,35 +452,44 @@
-
-
- org.jacoco
- jacoco-maven-plugin
- ${jacoco-maven-plugin-version}
-
-
- jacoco-initialize
-
- prepare-agent
-
-
-
- jacoco-site
- package
-
- report
-
-
-
- quickfixj-messages/quickfixj-messages-*/target/classes/**
-
-
-
-
-
-
+
+
+ coverage
+
+ false
+
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ ${jacoco-maven-plugin-version}
+
+
+ jacoco-initialize
+
+ prepare-agent
+
+
+
+ jacoco-site
+ package
+
+ report
+
+
+
+ quickfixj-messages/quickfixj-messages-*/target/classes/**
+
+
+
+
+
+
+
+
skipBundlePlugin
From 94f5e1c32972c14f4d3351f69c857ddad6964c54 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 23 Jul 2026 13:42:01 +0000
Subject: [PATCH 6/9] fix: correct mismatched closing tag in pom.xml (
vs )
---
pom.xml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 8f158cee2..665802d00 100644
--- a/pom.xml
+++ b/pom.xml
@@ -452,7 +452,8 @@
-
+
+
From 9efddeb645ffc6fbd837542cf0f2e5bd8e595b0c Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 24 Jul 2026 09:45:37 +0000
Subject: [PATCH 7/9] refactor: move Codecov upload from nightly build to
maven.yml coverage job
---
.github/workflows/maven.yml | 20 ++++++++++++++++++++
.github/workflows/nightly-build.yml | 8 +-------
2 files changed, 21 insertions(+), 7 deletions(-)
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index a8a0cf4ea..8d9d6468c 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -38,6 +38,26 @@ jobs:
- name: Test with Maven
run: ./mvnw install -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"
+ coverage:
+ runs-on: ubuntu-latest
+ name: Coverage JDK 21, ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v7
+ - name: Set up JDK
+ uses: actions/setup-java@v5
+ with:
+ distribution: 'corretto'
+ java-version: 21
+ cache: 'maven'
+ - name: Test with Maven (coverage)
+ run: ./mvnw install -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest,coverage" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"
+ - name: Upload coverage reports to Codecov
+ uses: codecov/codecov-action@v5
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
+ slug: quickfix-j/quickfixj
+
test-windows:
runs-on: ${{ matrix.os }}
strategy:
diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml
index 54c54da6b..66c02b0f1 100644
--- a/.github/workflows/nightly-build.yml
+++ b/.github/workflows/nightly-build.yml
@@ -22,13 +22,7 @@ jobs:
cache: maven
- name: Build SNAPSHOT
- run: ./mvnw clean package -pl '!quickfixj-distribution' -B -V -D"maven.javadoc.skip"="true" -P"coverage" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"
-
- - name: Upload coverage reports to Codecov
- uses: codecov/codecov-action@v5
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- slug: quickfix-j/quickfixj
+ run: ./mvnw clean package -pl '!quickfixj-distribution' -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"
- name: Delete old packages
continue-on-error: true
From ea6f47c02b3e9d411a757a8dfbfdc5d588567c05 Mon Sep 17 00:00:00 2001
From: Christoph John
Date: Fri, 24 Jul 2026 11:54:33 +0200
Subject: [PATCH 8/9] Removed incorrectly added profiles
---
.github/workflows/nightly-build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml
index 66c02b0f1..35663ec1c 100644
--- a/.github/workflows/nightly-build.yml
+++ b/.github/workflows/nightly-build.yml
@@ -22,7 +22,7 @@ jobs:
cache: maven
- name: Build SNAPSHOT
- run: ./mvnw clean package -pl '!quickfixj-distribution' -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"
+ run: ./mvnw clean package -pl '!quickfixj-distribution' -B -V -D"maven.javadoc.skip"="true" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"
- name: Delete old packages
continue-on-error: true
From 26979eea9d5398e95840faa1e7673c717ca136f9 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 24 Jul 2026 10:51:51 +0000
Subject: [PATCH 9/9] refactor: move JaCoCo to main build; upload coverage from
ubuntu/JDK21 test job
---
.github/workflows/maven.yml | 16 +---------
pom.xml | 62 ++++++++++++++++---------------------
2 files changed, 27 insertions(+), 51 deletions(-)
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 8d9d6468c..c8e56320d 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -37,22 +37,8 @@ jobs:
cache: 'maven'
- name: Test with Maven
run: ./mvnw install -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"
-
- coverage:
- runs-on: ubuntu-latest
- name: Coverage JDK 21, ubuntu-latest
-
- steps:
- - uses: actions/checkout@v7
- - name: Set up JDK
- uses: actions/setup-java@v5
- with:
- distribution: 'corretto'
- java-version: 21
- cache: 'maven'
- - name: Test with Maven (coverage)
- run: ./mvnw install -B -V -D"maven.javadoc.skip"="true" -P"skipBundlePlugin,minimal-fix-latest,coverage" -D"java.util.logging.config.file"="${{github.workspace}}/quickfixj-core/src/test/resources/logging.properties" -D"http.keepAlive"="false" -D"maven.wagon.http.pool"="false" -D"maven.wagon.httpconnectionManager.ttlSeconds"="120"
- name: Upload coverage reports to Codecov
+ if: matrix.os == 'ubuntu-latest' && matrix.java == 21
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
diff --git a/pom.xml b/pom.xml
index 665802d00..f5463f23e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -453,44 +453,34 @@
-
+
+ org.jacoco
+ jacoco-maven-plugin
+ ${jacoco-maven-plugin-version}
+
+
+ jacoco-initialize
+
+ prepare-agent
+
+
+
+ jacoco-site
+ package
+
+ report
+
+
+
+ quickfixj-messages/quickfixj-messages-*/target/classes/**
+
+
+
+
+
+
-
- coverage
-
- false
-
-
-
-
- org.jacoco
- jacoco-maven-plugin
- ${jacoco-maven-plugin-version}
-
-
- jacoco-initialize
-
- prepare-agent
-
-
-
- jacoco-site
- package
-
- report
-
-
-
- quickfixj-messages/quickfixj-messages-*/target/classes/**
-
-
-
-
-
-
-
-
skipBundlePlugin