Feature proposal
The published artifact is compiled once against a baseline Vaadin (14) but is meant to run unchanged on Vaadin 14, 23, 24, and 25, adapting at runtime to each version's JSON layer (elemental.json on ≤24, Jackson on 25+).
Currently the test suite runs against a single Vaadin version, so version-specific behavior — most importantly the elemental.json ↔ Jackson conversions that only execute on Vaadin 25 — is never exercised automatically. We need a build layout that runs the same tests against each supported Vaadin runtime, so a regression on any one version is caught by CI rather than discovered downstream.
Describe solution expectations
Restructure the Maven build into a core library plus per-version test modules:
core — a standalone module (no parent) that produces the published artifact, compiled against the baseline Vaadin version.
tests-shared — holds the shared test sources, reused by every version module.
tests-v14 / tests-v23 / tests-v24 / tests-v25 — thin modules that depend on core + tests-shared and pin a specific Vaadin version, so the shared tests run against each runtime.
- The root
pom.xml becomes an aggregator that builds core and all test modules.
Tests asserting version-specific behavior can branch by major version (e.g. the existing ...Test24 / ...Test25 variants).
Additional information
This guarantees cross-version compatibility (Vaadin 14/23/24/25) is continuously validated rather than assumed, which is the core promise of the add-on.
Feature proposal
The published artifact is compiled once against a baseline Vaadin (14) but is meant to run unchanged on Vaadin 14, 23, 24, and 25, adapting at runtime to each version's JSON layer (elemental.json on ≤24, Jackson on 25+).
Currently the test suite runs against a single Vaadin version, so version-specific behavior — most importantly the
elemental.json↔ Jackson conversions that only execute on Vaadin 25 — is never exercised automatically. We need a build layout that runs the same tests against each supported Vaadin runtime, so a regression on any one version is caught by CI rather than discovered downstream.Describe solution expectations
Restructure the Maven build into a core library plus per-version test modules:
core— a standalone module (no parent) that produces the published artifact, compiled against the baseline Vaadin version.tests-shared— holds the shared test sources, reused by every version module.tests-v14/tests-v23/tests-v24/tests-v25— thin modules that depend oncore+tests-sharedand pin a specific Vaadin version, so the shared tests run against each runtime.pom.xmlbecomes an aggregator that buildscoreand all test modules.Tests asserting version-specific behavior can branch by major version (e.g. the existing
...Test24/...Test25variants).Additional information
This guarantees cross-version compatibility (Vaadin 14/23/24/25) is continuously validated rather than assumed, which is the core promise of the add-on.