slachiewicz commented on issue #13302:
URL: https://github.com/apache/maven/issues/13302#issuecomment-5914123773

   ### maven-doxia-sitetools
   PR: apache/maven-doxia-sitetools#701. Status: **ported**, 3.0.0-SNAPSHOT, 
Java 17; usable only at Maven 4 runtime.
   
   Verified locally: `mvn verify` with Maven 4.0.0-rc-7, JDK 21 → 68 tests 
before and after, 0 failures: site-model 32, integration-tools 16, 
site-renderer 16, scm-context 4. Spotless clean.
   
   **Where the Maven API lives:** doxia-integration-tools uses it throughout. 
doxia-site-renderer uses it in one place, the skin artifact and its 
prerequisite version check. site-model, skin-model and scm-context are 
Maven-free.
   
   **Public API changes**
   - `SiteTool.getSiteModel(File, Locale, MavenExecutionRequest, MavenProject, 
List<MavenProject>, RepositorySystemSession, List<RemoteRepository>)` → `(File, 
Locale, Project, List<Project>, Session, 
List<org.apache.maven.api.RemoteRepository>)`.
   - `SiteTool.getSkinArtifactFromRepository` takes a `Session` and returns 
`DownloadedArtifact`.
   - `SiteRenderer.createContextForSkin(Artifact, …)` → `(Session, 
DownloadedArtifact, …)`; `SiteRenderingContext.get/setSkin` → 
`DownloadedArtifact`.
   - Removed the already-deprecated 6-argument `getSiteModel` and 
`getInterpolatedSiteDescriptorContent(Map, MavenProject, String)`.
   - Behaviour: `${project.*}` in `site.xml` now interpolates against the v4 
`Model`, so `MavenProject`-only getters (`getBasedir`, …) stop resolving; 
`${project.basedir}` is added explicitly. The modules menu also reads 
`<subprojects>` (POM 4.1.0).
   
   **Gaps**
   - DI stays on `javax.inject`/Sisu: the components depend on Doxia and Plexus 
beans (`Doxia`, `ParserModuleManager`, `VelocityComponent`, `I18N`, …) that 
only exist as Sisu components. **Not run inside a real Maven 4 build.**
   - No static version parser: the skin prerequisite check needs 
`Session.parseVersionConstraint`, which is why `Session` leaks into the 
renderer API.
   - No v4 equivalent of `LocalRepositoryManager.find(...).isAvailable()` or 
`ArtifactNotFoundException`; the port approximates with 
`getPathForLocalArtifact` and `ResultItem.isMissing()`.
   - Test support: `ApiRunner.createSession()` (maven-impl rc-7) registers no 
transporter, so tests can't download anything and now use a seeded local repo. 
The real download path and the missing-artifact locale fallback have no 
automated coverage. There is no public `Project` implementation for tests, so a 
hand-written stub replaces `MavenProjectStub`.
   
   **Consumers that break:** maven-site-plugin (`AbstractSiteRenderingMojo`, 
`AbstractSiteDescriptorMojo`, `SiteMojo`), maven-reporting-impl 
(`AbstractMavenReport`), mojohaus clirr-maven-plugin (`ClirrReport`), and 
mojohaus versions-test (`MockUtils`, hence versions-maven-plugin tests). All of 
them run on the Maven 3 API and have no v4 `Session` to pass.
   
   **Recommendation:** split. Keep site-model, skin-model and a `Path`-based 
renderer on the 2.x line for Maven 3 consumers. Ship integration-tools as a 
separate Maven 4 release, first in the order sitetools → maven-site-plugin → 
reporting-impl → reporting-exec.


-- 
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