Build against Maven 4.0.0-rc-6 - #1714
Conversation
Move maven.version to the current RC, and the wrapper's distributionUrl with it so the two do not drift apart. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gnodet
left a comment
There was a problem hiding this comment.
This PR bumps maven.version to 4.0.0-rc-6 but does not update the companion dependency properties explicitly marked <!-- Keep in sync with Maven --> in pom.xml:
| Property | Current (this PR) | Maven rc-6 ships |
|---|---|---|
maven.resolver.version |
2.0.20 | 2.0.21 |
slf4j.version |
2.0.17 | 2.0.18 |
jline.version |
3.30.16 | 4.3.1 |
The JLine gap is especially significant — Maven rc-6 moves from JLine 3.x to 4.x, which includes artifact renames (e.g. jline-terminal-jansi → jansi-core). The current pom.xml still declares dependencies on the old JLine 3.x artifact names, so bumping maven.version alone risks build failures or runtime classpath conflicts.
Note: PR #1696 by @gnodet already handles the full rc-6 upgrade comprehensively — including all synced dependencies, artifact renames, and provisio assembly changes — and appears to supersede this PR.
This review was generated by an AI agent and may contain inaccuracies. Please verify all suggestions before applying.
Claude Code on behalf of @gnodet
rc-6 ships slf4j 2.0.18. With mvnd still on 2.0.17 the assembled distro carries both, and DistroIT.noDuplicateJars fails: contains duplicates jars[[jul-to-slf4j-2.0.18.jar, jul-to-slf4j-2.0.17.jar]] Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The rc-6 distribution ships resolver 2.0.21 and JLine 4.3.1, while this pom pinned 2.0.20 and 3.30.16. The native-image classpath showed the split plainly: resolver transport-file/transport-apache/named-locks at 2.0.21 coming from Maven's own poms next to api/spi/util/impl/connector-basic at 2.0.20 pinned here, and JLine 4.3.1 reader/style/builtins/console next to 3.30.16 terminal/native/terminal-jni. JLine 4 renames jline-terminal-jansi to jansi-core, so the dependencyManagement entry moves with it — there is no jline-terminal-jansi jar in the rc-6 distribution and jansi-core-4.3.1.jar is there instead. Drops <jansi.version> while here: nothing in the tree references it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Thanks — the three synced properties were right and are now all in: On #1696 superseding this one — I do not think it does, on three counts:
Happy to be overruled if the intent is to track One note on the remaining red: the GraalVM |
gnodet
left a comment
There was a problem hiding this comment.
Thanks for updating slf4j.version to 2.0.18 — that aligns with Maven rc-6.
One remaining item: maven.resolver.version is still at 2.0.20, but Maven 4.0.0-rc-6 ships 2.0.21. This property is under the <!-- Keep in sync with Maven --> comment, so it should be bumped as well.
Regarding my previous comment about jline.version — upon closer review, that property is in the general dependency versions section, not under the "Keep in sync" comment, and mvnd was already using a different JLine version than Maven before this PR. The JLine 3.x→4.x migration is a larger effort tracked separately (PR #1696). Apologies for the noise on that one.
This review was generated by an AI agent and may contain inaccuracies. Please verify all suggestions before applying.
Claude Code on behalf of @gnodet
gnodet
left a comment
There was a problem hiding this comment.
All previously raised concerns are now addressed:
- ✅
maven.resolver.versionbumped to 2.0.21 (matching Maven rc-6) - ✅
slf4j.versionbumped to 2.0.18 (from previous commit) - ✅ JLine 3→4 artifact rename (
jline-terminal-jansi→jansi-core) withjansi.versionproperty removed - ✅ Stale staging repository (
maven-2247) cleaned up
All "Keep in sync with Maven" properties verified correct against the Maven 4.0.0-rc-6 parent POM. LGTM!
This review was generated by an AI agent and may contain inaccuracies. Please verify all suggestions before applying.
Claude Code on behalf of @gnodet
The assembly unpacks apache-maven's bin tarball into /mvn and then adds org.slf4j:jul-to-slf4j into /mvn/lib separately. While mvnd pinned 2.0.17 and Maven shipped 2.0.18 the two landed side by side — the duplicate DistroIT.noDuplicateJars was reporting. Now that slf4j is aligned to 2.0.18 the file names collide and provisio fails outright: Conflict: artifact org.slf4j:jul-to-slf4j:jar:2.0.18 would overwrite existing file: jul-to-slf4j-2.0.18.jar Maven's own distribution already provides the jar in that directory, so drop the explicit entry. Verified on a clean build: /mvn/lib holds exactly one jul-to-slf4j-2.0.18.jar, and no jar name appears twice in the distro. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gnodet
left a comment
There was a problem hiding this comment.
New commit 2ef67ca1 removes the bundled jul-to-slf4j from the provisio descriptor — correct, since Maven 4.0.0-rc-6 supplies it in its own distribution. Avoids duplicate JARs.
All five commits remain focused and well-scoped: Maven rc-6 bump, dependency alignment (resolver 2.0.21, slf4j 2.0.18), JLine 3→4 rename, stale staging repo cleanup, and now jul-to-slf4j deduplication. LGTM!
This review was generated by an AI agent and may contain inaccuracies. Please verify all suggestions before applying.
Claude Code on behalf of @gnodet
Moves
maven.versionto the current RC, and the wrapperdistributionUrlwith it so the two do not drift apart.Note: this repo's workflows only trigger on pushes to
master/mvnd-1.xand onpull_request, so it could not be pre-verified on a fork branch — CI runs here on the PR.