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]