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]

Reply via email to