NextStack

maven 4.0.0-rc-7

pre-release PublishedSep 24, 2026 Sourceapache/maven

maven maven-4.0.0-rc-7

This release candidate is expected to be the last before the Maven 4.0.0 GA release, which we aim to publish in the coming weeks, pending community feedback.

🚀 New features and improvements

  • Log API enhancements and mojo MDC (#12690) @gnodet
  • Optimize reactor sort and phase comparator performance (#12901) @gnodet
  • Add AsyncDrainWriter to eliminate PrintWriter lock contention (#12892) @gnodet
  • Add validation for Plexus-based plugin dependency injection (#12649) @slawekjaranowski

🔧 Maintenance

  • Externalize default lifecycle plugin versions to POM properties (#13137) @gnodet

🐛 Bug Fixes

  • Improve standalone ApiRunner to properly apply settings (#13014) @gnodet

  • Strip executable() conditions from consumer POMs (#12960) @gnodet

  • Emit clear error when running JDK cannot compile source level (#12922) @gnodet

  • Enable PathConflictResolver by default (#12893) @gnodet

  • [mvnup] Add maven-war-plugin and maven-ear-plugin to plugin upgrade list (#12685) @gnodet

  • Fix #13191: add -Dmaven.maven3Personality hint to FATAL message for wrong parent relativePath (#13202) @gnodet

  • Fix #13200: publish a complete set from MavenProject.getArtifacts (#13203) @gnodet

  • Fix #13190: pre-build full reactor once using BUILD_PROJECT, drop temp dir in PluginUpgradeStrategy (#13197) @gnodet

  • Fix #13192: PomInlinerTransformer fails when CI-friendly property is defined in POM (#13195) @gnodet

  • Fix #13189: mvnup generates invalid JDK version constraint ’(,-1]’ (#13199) @gnodet

  • Fix mvnup compatibility: jar-plugin 3.4.2, exec-plugin submodule coverage, toolchain warning (#13179) @gnodet

  • Fixes #13135, ensure completude of the reactor summary but privilege failures to be last to stay human efficient (#13167) @gnodet

  • Fix glob patterns in exists()/missing() profile conditions on Windows (#13163) @gnodet

  • Fix #13084: sandbox profile activation context for external model builds (#13158) @gnodet

  • Fix: implement Node.getRepository() via local repository manager lookup (#13159) @gnodet

  • Fix #13100: honor repositories from legitimately-active external model profiles (#13155) @gnodet

  • [MNG-5146] - Fix parent relativePath mismatch check (#13157) @gnodet

  • Lower-case the OS family before matching it against the family names (#13154) @gnodet

  • Normalize lazy StAX parse failures in MavenXpp3Reader (#13149) @gnodet

  • Evaluate profile activation conditions lazily (#13144) @gnodet

  • [MNG-6979] - Initialize the current project from the execution root (#13143) @gnodet

  • Fix NPE on a recursive property reference in a list field (#13145) @gnodet

  • [MNG-6568] - Fix comparison cycles in version qualifiers (#13113) @gnodet

  • [MNG-8678] - Concurrent executor ignores java.lang.Error subclasses (#13067) @gnodet

  • Keep the basedir unset for a parent served from the project-local repository (#13212) @slachiewicz

  • Fix #13068: make PluginDependenciesResolver methods default (#13069) @ascheman

  • Fix filterByScope to expand lifecycle scopes for build ordering (#13070) @gnodet

  • Fix getDispatchedPaths() leaking mutable nested lists (#13057) @gnodet

  • [MNG-8174] - Fix NPE when a property references itself in a plugin configuration (#12935) @elharo

  • Fix #12985: Upgrade toolchains-plugin when adding select-jdk-toolchain execution (#13026) @gnodet

  • Fix ToolchainPluginStrategy to detect inherited source levels from parent POMs (#13025) @gnodet

  • Fix consumer POM leaving extension-contributed user properties uninterpolated (#13023) @gnodet

  • Fix #12986: Throw descriptive UnsupportedOperationException instead of NPE in MavenSession.lookup() (#13020) @gnodet

  • Fix #12989: mvnup plugin upgrades should respect project JDK version (#13024) @gnodet

  • [MNG-8633] - mvnup: inject standalone Nashorn for antrun JavaScript compatibility (#13022) @gnodet

  • mvnup: upgrade BND plugins to fix ConcurrentModificationException on JDK 17.0.13+ (#13021) @gnodet

  • [MNG-8765] - Pre-interpolate plugin configuration before type conversion (#13019) @gnodet

  • Fix #13004: enable deterministic profile activation for BUILD_CONSUMER (#13015) @gnodet

  • [MNG-8765] - Pre-interpolate plugin configuration before type conversion (#13017) @gnodet

  • Fix #12991: skip shade-plugin upgrade when custom ResourceTransformers are present (#13016) @gnodet

  • [MNG-12984] - Fix invalid Automatic-Module-Name entries in mvnup plugin upgrades (#13013) @gnodet

  • Fix compatibility spelling in CLI help text (#13012) @gnodet

  • [MNG-8708] - Fix parent inference (#13010) @gnodet

  • Scope server credentials and validate legacy relocation coordinates (#12977) @gnodet

  • Fix version comparison and parsing inconsistencies in maven-artifact (#12942) @slachiewicz

  • Validate metadata inputs across legacy and new API paths, clone proxies before decryption (#12945) @slachiewicz

  • [MNG-8450] - Report BOM import warnings only at declaration sites (#13003) @gnodet

  • [MNG-8287] - Fix consumer POM packaging profile resolution (#12967) @gnodet

  • Fix #12931: do not rewrite unmodified POMs in mvnup apply (#12972) @gnodet

  • Fix modello velocity phase for concurrent builder compatibility (#12963) @gnodet

  • Fix #12912: assign FastTerminal before starting the build thread (#12961) @gnodet

  • Fix #12774: skip consumer POM re-attachment on repeated task segments (#12916) @gnodet

  • Fix #12660: inherit version from imported BOM when local dep mgmt entry has no version (#12915) @gnodet

  • Fix #12912: use a dumb fallback terminal for all build-thread reentrant calls (#12921) @gnodet

  • Fix operator precedence skipping type=bom dependency imports (#12930) @gnodet

  • Fix: make ProjectIndex thread-safe for parallel builds (#12926) @gnodet

  • Fix #12602: Preserve Properties defaults in immutable copies (#12910) @goutamadwant

  • [MNG-8693] - Avoid resolving unused plugins for direct goals (#12920) @gnodet

  • Fix: interpolate properties in module/subproject path before filesystem resolution (#12924) @gnodet

  • Fix #12600: handle missing project index in forked executions (#12917) @gnodet

  • Re-include macOS JLine native libraries in distribution (#12888) @gnodet

  • Fix #2520: default maven.mainClass in Java instead of classworlds config (#12889) @gnodet

  • Fix #12646: project-local-repo clean race condition when root pom has parent (#12891) @gnodet

  • Wire ModelBuilderRequest.isLocationTracking() to XML parser (#12905) @gnodet

  • Fix #12590: NPE on null rootDirectory in DefaultModelBuilder (#12903) @gnodet

  • Fix #12749: suppress false ERROR in mvnsh for successful commands (#12896) @gnodet

  • Fix #12769: merge duplicate mirror repos to preserve snapshot policies (#12900) @gnodet

  • Fix #12868: Restore —define as long option for -D (#12899) @gnodet

  • Fix #12592: use string-based ID for forked execution cycle detection (#12898) @gnodet

  • Fix #12605: remove synchronized bottleneck in createProjectRealm() (#12897) @gnodet

  • Fix #12607: prevent session scope leak on MavenChainedWorkspaceReader constructor exception (#12895) @gnodet

  • Fix #12598: prevent StackOverflow from path representation mismatch in getEnhancedProperties (#12894) @gnodet

  • Fix field cache to let child class fields take precedence over parent (#12626) @gnodet

  • Fix #12685: Add tests for war/ear plugin upgrades, extract Quarkus tests (#12876) @gnodet

  • Preserve coordinates when merging InputLocation (#12806) @gnodet

  • Fix: synchronize ReflectionValueExtractor class-introspection caches (#12862) @gnodet

  • Fix duplicate model problem reporting, fixes #12691 (#12807) @gnodet

  • Fix ArtifactCoordinates.getId() double colon when classifier is empty (#12855) @gnodet

  • [MNG-8129] - Handle InvalidPathException for broken relativePath on Windows (#12849) @gnodet

  • Fix #12761: do not wait for the terminal on the thread building it (#12854) @gnodet

  • Make run-its profile extract the built distribution (#12852) @gnodet

  • [MDEP-590] - Resolve classified POM artifacts from the reactor (#12831) @wilx

  • [MNG-8709] - Use active profile properties for consumer POM validation (#12684) @goutamadwant

  • Fix #12730: quiet mode implies raw streams to avoid stdout decoration (#12830) @gnodet

  • Fix #12640: BOM consumer POM must not include inherited dependency management (#12802) @gnodet

  • [MNG-8129] - Handle InvalidPathException for broken relativePath on Windows (#12741) @gnodet

  • Make profile activation conditions locale-independent (#12798) @gnodet

  • Fix parent profile cache matching across activation contexts (#12801) @gnodet

  • fix(api-core): properly implement Clock.withZone() in MonotonicClock (#12797) @gnodet

  • Support the logical not operator in profile activation conditions (#12799) @gnodet

  • Fix BuildPlanExecutor thread pool leak on constructor failure (#12800) @gnodet

  • fix configuration page generation (#12657) @hboutemy

  • Fix #12704: Do not report an independent, built module as skipped (#12706) @slachiewicz

  • Fix SubList.get() accepting an index equal to its own size (#12656) @renechoi

📝 Documentation updates

  • Fix default-bindings doc snippet to reference PluginVersions (#13140) @gnodet
  • Fix #11504: add replacement guidance to deprecated model and settings APIs (#12890) @gnodet
  • Port the site documentation from APT to Markdown (#12711) @slachiewicz
  • consistency on Maven 4 vs 3 vs 2 references (#12642) @hboutemy

👻 Maintenance

  • Fixes #13135: address review on reactor summary (UNKNOWN group, local StringBuilder) (#13181) @gnodet
  • chore: add toolbox:plugin-versions workflow for lifecycle plugin versions (#13172) @gnodet
  • Replace static TestSuiteOrdering registry with dynamic class orderer (#13169) @gnodet
  • Implement getOutputPath() in the site IT plugin (#13096) @slachiewicz
  • Update NOTICE file in distribution packages (#13043) @slawekjaranowski
  • Optimize computeLocations() and simplify ModelObjectPool location handling (#13042) @gnodet
  • deps: Bump Mimir to 0.12.3 (#13048) (#13049) @cstamas
  • Restrict what a repository-resolved model contributes to the build (#12943) @slachiewicz
  • Output, transport and consumer POM robustness fixes (#12946) @slachiewicz
  • Validate coordinates and repository precedence during artifact resolution (#12944) @slachiewicz
  • Fix flaky FastTerminalReentrancyTest by avoiding PTY creation (#12971) @gnodet
  • Replace deprecated Terminal.getWidth/getHeight with getColumns/getRows (#12969) @gnodet
  • [MNG-8129] - Clarify relativePath validation comment (#12965) @gnodet
  • Add integration test for #12660: BOM version from imported BOM (#12940) @gnodet
  • Use try-with-resources for AuthenticationContext (#12844) @slachiewicz
  • Fix deprecated Maven testing API compatibility (#12683) @goutamadwant
  • Move the core IT suite off the JUnit 4 assertions (#12719) @slachiewicz
  • Remove workaround for creating site output directory (#12715) @slawekjaranowski
  • Build and deploy through the wrapper on Jenkins (#12677) @slachiewicz
  • Build the wrapper job with Maven 4.0.0-rc-6 (#12675) @slachiewicz

🔧 Build

  • Replace nicoulaj checksum plugin with maveniverse checksum plugin (#13052) @slawekjaranowski
  • Upgrade the IT suite to Jetty 12.1.12 and the core Jetty API (#12693) @slachiewicz
  • Restore the Google Cloud mirror for CI resolution (#12701) @slachiewicz

📦 Dependency updates


Source apache/maven · maven-4.0.0-rc-7 · 2026-09-24 · upstream release

Mirrored verbatim for indexing. All rights belong to the upstream project.

Release notes are published by the upstream project and mirrored here for indexing. All rights belong to their authors.