gnodet opened a new issue, #13462: URL: https://github.com/apache/maven/issues/13462
Part of #13460 — Migrate Maven internals from v3 to v4 API ## Context Currently the v4 `DefaultSession` wraps the v3 `MavenSession`. This means every v4 service that needs session state reaches through to the v3 object underneath. Inverting this is foundational for all later migration phases — every service needs a session. ## Goal Create a v4-native session implementation so `MavenSession` (v3) becomes a thin compat wrapper over the v4 session, instead of the other way around. ## Key files - **v4 API**: `api/maven-api-core/.../Session.java`, `ProtoSession.java` - **v4 impl**: `impl/maven-core/.../internal/impl/DefaultSession.java` - **v3 session**: `impl/maven-core/.../execution/MavenSession.java` - **Bridge**: `impl/maven-core/.../internal/impl/InternalMavenSession.java` ## Approach 1. Create a v4-native session implementation in `impl/maven-impl` that holds its own state (projects, settings, repositories, properties, etc.) 2. Make `MavenSession` (v3) a thin wrapper that delegates to the v4 session 3. Update `DefaultMaven` to create the v4 session first, then wrap it for v3 callers 4. `MavenSession` is imported in ~59 files — these don't all need to change at once, since `MavenSession` stays available ## Compatibility `MavenSession` stays available for plugin injection (`@Parameter`). Plugins calling `session.getCurrentProject()`, `session.getGoals()`, etc. continue to work unchanged. ## Dependencies - Ideally done after or alongside the Project Builder inversion (#13461), since the session holds projects ## Complexity High. `MavenSession` is a data holder used in 59+ files, but the inversion is conceptually straightforward since the interface doesn't change. _Claude Code on behalf of Guillaume Nodet_ -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
