From https://github.com/FlowingCode/GridExporterAddon * branch master -> FETCH_HEAD Already on 'master' Your branch is up to date with 'origin/master'. HEAD is now at 86e4ec4 feat(demo): add demo for joined headers with custom header $ mvn versions:set-property -Dproperty=vaadin.version -DnewVersion=25.1-SNAPSHOT -DgenerateBackupPoms=false -DprofileId=v25 -B --no-transfer-progress --settings /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/settings.xml [INFO] Scanning for projects... [INFO] [INFO] ---------< org.vaadin.addons.flowingcode:grid-exporter-addon >---------- [INFO] Building Grid Exporter Add-on 3.1.0-SNAPSHOT [INFO] from pom.xml [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- versions:2.21.0:set-property (default-cli) @ grid-exporter-addon --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.154 s [INFO] Finished at: 2026-06-11T20:03:01Z [INFO] ------------------------------------------------------------------------ $ mvn versions:set -DnewVersion=25.1-SNAPSHOT -DartifactId=vaadin-bom -DgenerateBackupPoms=false -DprofileId=v25 -B --no-transfer-progress --settings /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/settings.xml [INFO] Scanning for projects... [INFO] [INFO] ---------< org.vaadin.addons.flowingcode:grid-exporter-addon >---------- [INFO] Building Grid Exporter Add-on 3.1.0-SNAPSHOT [INFO] from pom.xml [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- versions:2.21.0:set (default-cli) @ grid-exporter-addon --- [INFO] Searching for local aggregator root... [INFO] Local aggregation root: /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on [INFO] Processing change of org.vaadin.addons.flowingcode:vaadin-bom:3.1.0-SNAPSHOT -> 25.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.031 s [INFO] Finished at: 2026-06-11T20:03:04Z [INFO] ------------------------------------------------------------------------ $ mvn clean verify -B --no-transfer-progress --settings /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/settings.xml -Pv25 [INFO] Scanning for projects... [INFO] [INFO] ---------< org.vaadin.addons.flowingcode:grid-exporter-addon >---------- [INFO] Building Grid Exporter Add-on 3.1.0-SNAPSHOT [INFO] from pom.xml [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- clean:3.2.0:clean (default-clean) @ grid-exporter-addon --- [INFO] Deleting /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/target [INFO] [INFO] --- resources:3.3.1:resources (default-resources) @ grid-exporter-addon --- [INFO] Copying 5 resources from src/main/resources to target/classes [INFO] [INFO] --- vaadin:25.1-SNAPSHOT:prepare-frontend (default) @ grid-exporter-addon --- [INFO] ClassFinder initialized: 149 urls, 14972 classes scanned, 59 annotation types cached, 3273 subtype relationships cached, took 976ms [INFO] Visited 106 classes. Took 115 ms. [INFO] Copying frontend resources from jar files ... [INFO] Visited 159 resources. Took 138 ms. [INFO] [INFO] --- compiler:3.13.0:compile (default-compile) @ grid-exporter-addon --- [INFO] Recompiling the module because of changed source code. [INFO] Compiling 17 source files with javac [debug target 21] to target/classes [INFO] Annotation processing is enabled because one or more processors were found on the class path. A future release of javac may disable annotation processing unless at least one processor is specified by name (-processor), or a search path is specified (--processor-path, --processor-module-path), or annotation processing is enabled explicitly (-proc:only, -proc:full). Use -Xlint:-options to suppress this message. Use -proc:none to disable annotation processing. [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java:[171,23] setHref(com.vaadin.flow.server.AbstractStreamResource) in com.vaadin.flow.component.html.Anchor has been deprecated and marked for removal [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java:[181,26] setHref(com.vaadin.flow.server.AbstractStreamResource) in com.vaadin.flow.component.html.Anchor has been deprecated and marked for removal [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java:[191,26] setHref(com.vaadin.flow.server.AbstractStreamResource) in com.vaadin.flow.component.html.Anchor has been deprecated and marked for removal [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java:[201,26] setHref(com.vaadin.flow.server.AbstractStreamResource) in com.vaadin.flow.component.html.Anchor has been deprecated and marked for removal [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java:[430,10] com.vaadin.flow.server.StreamResource in com.vaadin.flow.server has been deprecated and marked for removal [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java:[430,10] com.vaadin.flow.server.StreamResource in com.vaadin.flow.server has been deprecated and marked for removal [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java:[430,10] com.vaadin.flow.server.StreamResource in com.vaadin.flow.server has been deprecated and marked for removal [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java:[430,10] com.vaadin.flow.server.StreamResource in com.vaadin.flow.server has been deprecated and marked for removal [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java:[430,10] com.vaadin.flow.server.StreamResource in com.vaadin.flow.server has been deprecated and marked for removal [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java:[431,16] com.vaadin.flow.server.StreamResource in com.vaadin.flow.server has been deprecated and marked for removal [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java:[448,51] com.vaadin.flow.server.StreamResource in com.vaadin.flow.server has been deprecated and marked for removal [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java:[448,51] com.vaadin.flow.server.StreamResource in com.vaadin.flow.server has been deprecated and marked for removal [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java:[448,51] com.vaadin.flow.server.StreamResource in com.vaadin.flow.server has been deprecated and marked for removal [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java:[448,51] com.vaadin.flow.server.StreamResource in com.vaadin.flow.server has been deprecated and marked for removal [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java:[448,51] com.vaadin.flow.server.StreamResource in com.vaadin.flow.server has been deprecated and marked for removal [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/DocxStreamResourceWriter.java:[169,23] totalcells in com.flowingcode.vaadin.addons.gridexporter.GridExporter has been deprecated and marked for removal [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/DocxStreamResourceWriter.java:[169,45] totalcells in com.flowingcode.vaadin.addons.gridexporter.GridExporter has been deprecated and marked for removal [INFO] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java: /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java uses unchecked or unsafe operations. [INFO] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java: Recompile with -Xlint:unchecked for details. [INFO] [INFO] --- resources:3.3.1:testResources (default-testResources) @ grid-exporter-addon --- [INFO] Copying 9 resources from src/test/resources to target/test-classes [INFO] [INFO] --- compiler:3.13.0:testCompile (default-testCompile) @ grid-exporter-addon --- [INFO] Recompiling the module because of changed dependency. [INFO] Compiling 21 source files with javac [debug target 21] to target/test-classes [INFO] Annotation processing is enabled because one or more processors were found on the class path. A future release of javac may disable annotation processing unless at least one processor is specified by name (-processor), or a search path is specified (--processor-path, --processor-module-path), or annotation processing is enabled explicitly (-proc:only, -proc:full). Use -Xlint:-options to suppress this message. Use -proc:none to disable annotation processing. [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/test/java/com/flowingcode/vaadin/addons/gridexporter/GridExporterCustomLinkDemo.java:[79,14] setHref(com.vaadin.flow.server.AbstractStreamResource) in com.vaadin.flow.component.html.Anchor has been deprecated and marked for removal [WARNING] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/test/java/com/flowingcode/vaadin/addons/gridexporter/it/ViewIT.java:[61,48] first() in com.vaadin.testbench.ElementQuery has been deprecated and marked for removal [INFO] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/test/java/com/flowingcode/vaadin/addons/gridexporter/it/ViewIT.java: Some input files use or override a deprecated API. [INFO] /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/src/test/java/com/flowingcode/vaadin/addons/gridexporter/it/ViewIT.java: Recompile with -Xlint:deprecation for details. [INFO] [INFO] --- surefire:2.22.1:test (default-test) @ grid-exporter-addon --- [INFO] [INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running com.flowingcode.vaadin.addons.gridexporter.test.SerializationTest [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.681 s - in com.flowingcode.vaadin.addons.gridexporter.test.SerializationTest [INFO] Running com.flowingcode.vaadin.addons.gridexporter.test.ConcurrentExportTests [t= 41ms] [download-q1] download-q1: thread started (interrupted=false) [t= 56ms] [download-q1] download-q1: onAccept() [t= 56ms] [download-q1] download-q1: delegate running — counting down latch [t= 57ms] [download-q1] download-q1: delegate entering barrier (waiting=0) [t= 59ms] [download-q1] await(barrier): entering (waiting=0, parties=2) [t= 61ms] [download-q2] download-q2: thread started (interrupted=false) [t= 61ms] [download-q2] download-q2: onAccept() [t= 61ms] [download-q2] download-q2: delegate running — counting down latch [t= 61ms] [download-q2] download-q2: delegate entering barrier (waiting=1) [t= 61ms] [download-q2] await(barrier): entering (waiting=1, parties=2) [t= 61ms] [download-q2] await(barrier): returned [t= 61ms] [download-q1] await(barrier): returned [t= 61ms] [download-q2] download-q2: delegate exited barrier [t= 61ms] [download-q1] download-q1: delegate exited barrier [t= 61ms] [download-q2] download-q2: onFinish() [t= 61ms] [download-q1] download-q1: onFinish() [t= 61ms] [download-q2] download-q2: entering exchanger [t= 61ms] [download-q1] download-q1: entering exchanger [t= 66ms] [download-q1] download-q1: exchanger completed [t= 66ms] [download-q2] download-q2: exchanger completed [t= 70ms] [download-q1] download-q1: thread started (interrupted=false) [t= 70ms] [download-q1] download-q1: onAccept() [t= 70ms] [download-q1] download-q1: delegate running — counting down latch [t= 72ms] [download-q1] download-q1: delegate entering barrier (waiting=0) [t= 72ms] [download-q1] await(barrier): entering (waiting=0, parties=2) [t= 75ms] [download-q2] download-q2: thread started (interrupted=false) [t= 75ms] [download-q2] download-q2: onAccept() [t= 76ms] [download-q2] download-q2: onTimeout() — semaphore not acquired within timeout [t= 76ms] [download-q2] download-q2: onFinish() [t= 76ms] [download-q2] download-q2: writer.accept() threw InterruptedByTimeoutException [t= 76ms] [download-q2] download-q2: counting down latch (fallback) and entering exchanger [t= 77ms] [Time-limited test] await(barrier): entering (waiting=1, parties=2) [t= 77ms] [Time-limited test] await(barrier): returned [t= 77ms] [download-q1] await(barrier): returned [t= 77ms] [download-q1] download-q1: delegate exited barrier [t= 77ms] [download-q1] download-q1: onFinish() [t= 77ms] [download-q1] download-q1: entering exchanger [t= 77ms] [download-q1] download-q1: exchanger completed [t= 77ms] [download-q2] download-q2: exchanger completed [t= 80ms] [download-q1] download-q1: thread started (interrupted=false) [t= 80ms] [download-q1] download-q1: onAccept() [t= 80ms] [download-q1] download-q1: delegate running — counting down latch [t= 80ms] [download-q1] download-q1: delegate entering barrier (waiting=0) [t= 81ms] [download-q1] await(barrier): entering (waiting=0, parties=3) [t= 81ms] [download-q2] download-q2: thread started (interrupted=false) [t= 81ms] [download-q2] download-q2: onAccept() [t= 81ms] [download-q2] download-q2: delegate running — counting down latch [t= 81ms] [download-q2] download-q2: delegate entering barrier (waiting=1) [t= 81ms] [download-q2] await(barrier): entering (waiting=1, parties=3) [t= 82ms] [download-q3] download-q3: thread started (interrupted=false) [t= 82ms] [download-q3] download-q3: onAccept() [t= 82ms] [download-q3] download-q3: onTimeout() — semaphore not acquired within timeout [t= 82ms] [download-q3] download-q3: onFinish() [t= 82ms] [download-q3] download-q3: writer.accept() threw InterruptedByTimeoutException [t= 82ms] [download-q3] download-q3: counting down latch (fallback) and entering exchanger [t= 82ms] [Time-limited test] await(barrier): entering (waiting=2, parties=3) [t= 83ms] [Time-limited test] await(barrier): returned [t= 84ms] [download-q1] await(barrier): returned [t= 84ms] [download-q2] await(barrier): returned [t= 85ms] [download-q1] download-q1: delegate exited barrier [t= 85ms] [download-q2] download-q2: delegate exited barrier [t= 85ms] [download-q1] download-q1: onFinish() [t= 85ms] [download-q2] download-q2: onFinish() [t= 85ms] [download-q2] download-q2: entering exchanger [t= 85ms] [download-q1] download-q1: entering exchanger [t= 85ms] [download-q1] download-q1: exchanger completed [t= 85ms] [download-q3] download-q3: exchanger completed [t= 86ms] [download-q2] download-q2: exchanger completed [t= 89ms] [download-q1] download-q1: thread started (interrupted=false) [t= 90ms] [download-q1] download-q1: onAccept() [t= 90ms] [download-q1] download-q1: delegate running — counting down latch [t= 90ms] [download-q1] download-q1: delegate entering barrier (waiting=0) [t= 90ms] [download-q1] await(barrier): entering (waiting=0, parties=2) [t= 91ms] [download-q2] download-q2: thread started (interrupted=false) [t= 91ms] [download-q2] download-q2: onAccept() [t= 91ms] [download-q2] download-q2: onTimeout() — semaphore not acquired within timeout [t= 91ms] [download-q2] download-q2: onFinish() [t= 91ms] [download-q2] download-q2: writer.accept() threw InterruptedByTimeoutException [t= 91ms] [download-q2] download-q2: counting down latch (fallback) and entering exchanger [t= 92ms] [download-q3] download-q3: thread started (interrupted=false) [t= 92ms] [download-q3] download-q3: onAccept() [t= 92ms] [download-q3] download-q3: onTimeout() — semaphore not acquired within timeout [t= 92ms] [download-q3] download-q3: onFinish() [t= 92ms] [download-q3] download-q3: writer.accept() threw InterruptedByTimeoutException [t= 93ms] [download-q3] download-q3: counting down latch (fallback) and entering exchanger [t= 93ms] [Time-limited test] await(barrier): entering (waiting=1, parties=2) [t= 93ms] [Time-limited test] await(barrier): returned [t= 93ms] [download-q1] await(barrier): returned [t= 93ms] [download-q1] download-q1: delegate exited barrier [t= 94ms] [download-q1] download-q1: onFinish() [t= 94ms] [download-q1] download-q1: entering exchanger [t= 94ms] [download-q1] download-q1: exchanger completed [t= 94ms] [download-q3] download-q3: exchanger completed [t= 94ms] [download-q2] download-q2: exchanger completed [t= 98ms] [download-q1] download-q1: thread started (interrupted=false) [t= 99ms] [download-q1] download-q1: onAccept() [t= 99ms] [download-q1] download-q1: delegate running — counting down latch [t= 100ms] [download-q1] download-q1: delegate entering barrier (waiting=0) [t= 100ms] [download-q1] await(barrier): entering (waiting=0, parties=2) [t= 101ms] [download-q2] download-q2: thread started (interrupted=false) [t= 101ms] [download-q2] download-q2: onAccept() [t= 101ms] [download-q2] download-q2: delegate running — counting down latch [t= 101ms] [download-q2] download-q2: delegate entering barrier (waiting=1) [t= 101ms] [download-q2] await(barrier): entering (waiting=1, parties=2) [t= 101ms] [download-q2] await(barrier): returned [t= 102ms] [download-q1] await(barrier): returned [t= 102ms] [download-q1] download-q1: delegate exited barrier [t= 103ms] [download-q1] download-q1: onFinish() [t= 103ms] [download-q1] download-q1: entering exchanger [t= 102ms] [download-q2] download-q2: delegate exited barrier [t= 103ms] [download-q2] download-q2: onFinish() [t= 103ms] [download-q2] download-q2: entering exchanger [t= 104ms] [download-q2] download-q2: exchanger completed [t= 105ms] [download-q1] download-q1: exchanger completed [t= 107ms] [download-q1] download-q1: thread started (interrupted=false) [t= 108ms] [download-q1] download-q1: onAccept() [t= 109ms] [download-q1] download-q1: delegate running — counting down latch [t= 109ms] [download-q1] download-q1: delegate entering barrier (waiting=0) [t= 109ms] [download-q1] await(barrier): entering (waiting=0, parties=2) [t= 112ms] [download-q2] download-q2: thread started (interrupted=false) [t= 113ms] [download-q2] download-q2: onAccept() [t= 113ms] [download-q1] await(barrier): returned [t= 113ms] [download-q1] download-q1: delegate exited barrier [t= 113ms] [download-q1] download-q1: onFinish() [t= 113ms] [download-q1] download-q1: entering exchanger [t= 113ms] [download-q1] download-q1: exchanger completed [t= 113ms] [download-q2] download-q2: onFinish() [t= 113ms] [download-q2] download-q2: writer.accept() threw IOException [t= 113ms] [download-q2] download-q2: counting down latch (fallback) and entering exchanger [t= 114ms] [download-q2] download-q2: exchanger completed [t= 116ms] [download-q1] download-q1: thread started (interrupted=false) [t= 117ms] [download-q1] download-q1: onAccept() [t= 117ms] [download-q1] download-q1: delegate running — counting down latch [t= 117ms] [download-q1] download-q1: delegate entering barrier (waiting=0) [t= 117ms] [download-q1] await(barrier): entering (waiting=0, parties=2) [t= 119ms] [download-q2] download-q2: thread started (interrupted=false) [t= 119ms] [download-q2] download-q2: onAccept() [t= 119ms] [download-q2] download-q2: delegate running — counting down latch [t= 119ms] [download-q2] download-q2: delegate entering barrier (waiting=1) [t= 119ms] [download-q2] await(barrier): entering (waiting=1, parties=2) [t= 119ms] [download-q2] await(barrier): returned [t= 119ms] [download-q2] download-q2: delegate exited barrier [t= 119ms] [download-q2] download-q2: onFinish() [t= 120ms] [download-q2] download-q2: entering exchanger [t= 120ms] [download-q1] await(barrier): returned [t= 120ms] [download-q1] download-q1: delegate exited barrier [t= 120ms] [download-q1] download-q1: onFinish() [t= 120ms] [download-q1] download-q1: entering exchanger [t= 122ms] [download-q1] download-q1: exchanger completed [t= 123ms] [download-q2] download-q2: exchanger completed [INFO] Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.1 s - in com.flowingcode.vaadin.addons.gridexporter.test.ConcurrentExportTests [INFO] [INFO] Results: [INFO] [INFO] Tests run: 11, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] [INFO] --- jar:3.1.2:jar (default-jar) @ grid-exporter-addon --- [INFO] Building jar: /home/ghrunner/actions-runner/_work/vaadin-ecosystem-build/vaadin-ecosystem-build/work/Grid Exporter Add-on/target/grid-exporter-addon-3.1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 8.999 s [INFO] Finished at: 2026-06-11T20:03:17Z [INFO] ------------------------------------------------------------------------