Repository navigation
Conversation
Replace maven.compiler.source/target (11) with maven.compiler.release (21). The release flag also verifies that no API newer than the target is referenced, so a Java 21 method cannot silently leak into a build claiming an older target. Pin maven-compiler-plugin in pluginManagement via a new version.compiler.plugin property; it was previously unpinned and its version floated with the Maven version in use. Move the build, javadoc and publish workflows to java-version 21 and distribution temurin. The adopt distribution is deprecated and publishes no Java 21 builds. No source changes are needed: the existing main and test sources, including the ANTLR-generated parsers, compile unchanged under release 21. This raises the bytecode level of a published artifact, so consumers must be on Java 21 or later. README and CHANGELOG record the new requirement.
|
Reviewed commit 22b8af0. The Java 21 compiler configuration, plugin pin, three workflows, README and changelog changes look sound. EXT is already on the Please coordinate the ECL dependency with the version change requested on ECL PR #74. Once the Java 21 ECL build is available as <version.eforms-core>2.0.0-SNAPSHOT</version.eforms-core>I tested that combination locally on JDK 21 in an isolated Maven repository: ECL PR #74 at a7d0f62f60724b6f6bfa12910255d25d1157ca9b, rebuilt with only its project version changed to
Java 21 can consume the current Java 11 ECL, so the existing pin does not itself break this PR. The update aligns EXT with the new ECL version line. Recommended sequence: make ECL |
Merge prerequisites — on hold
Keep this PR in draft while MDM is not ready for Java 21. This is the agreed hold for the coordinated migration.
2.0.0-SNAPSHOTis published. Update this PR's ECL pin to that version and verify against it before merging.MDM currently targets Java 11 and already consumes EXT
2.0.0-SNAPSHOT, Analyzer1.16.0-SNAPSHOTand Notice Viewer0.14.0-SNAPSHOT. Avoid publishing Java 21 replacements for those active coordinates before MDM is ready. ECL uses the new2.0.0-SNAPSHOTcoordinate; holding ECL too is part of the agreed rollout sequence.After the hold is lifted: ECL → EXT → Analyzer and Notice Viewer (either order) → CLI after Notice Viewer. Wait for successful upstream snapshot publication and downstream verification between dependent merges.
Moves the EFX Toolkit from Java 11 to Java 21. Java 11 left Oracle premier support in September 2023; Java 21 is the current LTS and matches the direction already taken for ECL (TEDEFO-5287) and the MDM (TEDEFO-5065).
Changes
pom.xml: replacedmaven.compiler.source/target(11) withmaven.compiler.release(21). Thereleaseflag also verifies no API newer than the target is referenced, so a Java 21 method cannot silently leak into a build claiming an older target.pom.xml: pinnedmaven-compiler-plugininpluginManagementvia a newversion.compiler.pluginproperty. It was previously unpinned, so its version floated with whatever Maven version was in use.build,javadoc,publish):java-version11 -> 21 anddistributionadopt->temurin. Theadoptdistribution is deprecated and publishes no Java 21 builds.README.md/CHANGELOG.md: record the new requirement.No source changes were needed - the existing main and test sources, including the ANTLR-generated parsers, compile unchanged under
release 21.Testing
Verified locally against Temurin 21.0.12:
mvn install- 1550/1550 tests pass, compiler reportsrelease 21javadoc:javadoc+javadoc:test-javadoc- clean (thejavadoc.ymlgate)-Prelease verify- produces main, sources and javadoc jarsdeployto a local file repository - upload mechanics, checksums and metadata intactBuild-Jdk-Spec: 21release 21and ran the public API successfullyBreaking change
This raises the bytecode level of a published artifact, so every consumer must be on Java 21 or later. Targets EXT 2.0.0. Consumers to confirm: Notice Viewer, SDK Analyzer, MDM.
Java 21 can consume Java 11 bytecode, but this coordinated migration will adopt ECL 2.0.0-SNAPSHOT and therefore follows ECL PR #74 as linked above.
Not addressed here
Publishing is blocked for an unrelated reason: the version is
2.0.0-SNAPSHOTand depends oneforms-core 1.10.0-SNAPSHOTandeforms-sdk 1.16.0/2.0.0-SNAPSHOT. Central does not accept a release depending on snapshots, so the version and those pins need settling before a 2.0.0 deploy. Worth noting the release profile setsautoPublish=true, which pushes straight to Central with no staging gate to inspect or drop.