This is an automated email from the ASF dual-hosted git repository. hboutemy pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-plugin-tools.git
commit d9f8d8941d6996ad39b6f4c427f8e126c1176154 Author: Tamas Cservenak <ta...@cservenak.net> AuthorDate: Mon Mar 4 17:40:59 2024 +0100 [MPLUGIN-511] prepare method to list releases history --- .../maven/plugin/plugin/report/PluginReport.java | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java b/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java index 954363c5..3c47a3cf 100644 --- a/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java +++ b/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java @@ -26,7 +26,10 @@ import java.util.ArrayList; import java.util.List; import java.util.Locale; +import org.apache.maven.RepositoryUtils; import org.apache.maven.doxia.sink.Sink; +import org.apache.maven.execution.MavenSession; +import org.apache.maven.model.building.ModelBuildingRequest; import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.apache.maven.plugin.descriptor.PluginDescriptorBuilder; @@ -36,12 +39,24 @@ import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.plugin.descriptor.EnhancedPluginDescriptorBuilder; +import org.apache.maven.project.DefaultProjectBuildingRequest; +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.ProjectBuilder; +import org.apache.maven.project.ProjectBuildingException; +import org.apache.maven.project.ProjectBuildingRequest; +import org.apache.maven.project.ProjectBuildingResult; import org.apache.maven.reporting.AbstractMavenReport; import org.apache.maven.reporting.MavenReportException; import org.apache.maven.rtinfo.RuntimeInformation; import org.codehaus.plexus.configuration.PlexusConfigurationException; import org.codehaus.plexus.i18n.I18N; import org.codehaus.plexus.util.xml.XmlStreamReader; +import org.eclipse.aether.RepositorySystem; +import org.eclipse.aether.artifact.DefaultArtifact; +import org.eclipse.aether.resolution.VersionRangeRequest; +import org.eclipse.aether.resolution.VersionRangeResolutionException; +import org.eclipse.aether.resolution.VersionRangeResult; +import org.eclipse.aether.version.Version; /** * Generates the Plugin's documentation report: <code>plugin-info.html</code> plugin overview page, @@ -123,6 +138,15 @@ public class PluginReport extends AbstractMavenReport { @Parameter(property = "maven.plugin.report.disableInternalJavadocLinkValidation") private boolean disableInternalJavadocLinkValidation; + @Component + private MavenSession mavenSession; + + @Component + private RepositorySystem repositorySystem; + + @Component + private ProjectBuilder projectBuilder; + /** * {@inheritDoc} */ @@ -232,4 +256,33 @@ public class PluginReport extends AbstractMavenReport { } } } + + private List<Version> discoverVersions() throws VersionRangeResolutionException { + MavenProject currentProject = mavenSession.getCurrentProject(); + VersionRangeRequest rangeRequest = new VersionRangeRequest(); + rangeRequest.setArtifact( + new DefaultArtifact(currentProject.getGroupId() + ":" + currentProject.getArtifactId() + ":[0,)")); + rangeRequest.setRepositories( + RepositoryUtils.toRepos(mavenSession.getCurrentProject().getRemoteArtifactRepositories())); + VersionRangeResult rangeResult = + repositorySystem.resolveVersionRange(mavenSession.getRepositorySession(), rangeRequest); + return rangeResult.getVersions(); + } + + private ProjectBuildingResult buildMavenProject(String version) throws ProjectBuildingException { + MavenProject currentProject = mavenSession.getCurrentProject(); + ProjectBuildingRequest buildRequest = new DefaultProjectBuildingRequest(); + buildRequest.setLocalRepository(mavenSession.getLocalRepository()); + buildRequest.setRemoteRepositories(mavenSession.getCurrentProject().getRemoteArtifactRepositories()); + buildRequest.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL); + buildRequest.setProcessPlugins(false); + buildRequest.setRepositoryMerging(ProjectBuildingRequest.RepositoryMerging.REQUEST_DOMINANT); + buildRequest.setSystemProperties(mavenSession.getSystemProperties()); + buildRequest.setUserProperties(mavenSession.getUserProperties()); + buildRequest.setRepositorySession(mavenSession.getRepositorySession()); + return projectBuilder.build( + RepositoryUtils.toArtifact(new DefaultArtifact( + currentProject.getGroupId() + ":" + currentProject.getArtifactId() + ":pom:" + version)), + buildRequest); + } }