|
26 | 26 | import java.util.List;
|
27 | 27 | import java.util.Locale;
|
28 | 28 |
|
| 29 | +import org.apache.maven.RepositoryUtils; |
29 | 30 | import org.apache.maven.doxia.sink.Sink;
|
| 31 | +import org.apache.maven.execution.MavenSession; |
| 32 | +import org.apache.maven.model.building.ModelBuildingRequest; |
30 | 33 | import org.apache.maven.plugin.descriptor.MojoDescriptor;
|
31 | 34 | import org.apache.maven.plugin.descriptor.PluginDescriptor;
|
32 | 35 | import org.apache.maven.plugin.descriptor.PluginDescriptorBuilder;
|
|
36 | 39 | import org.apache.maven.plugins.annotations.Mojo;
|
37 | 40 | import org.apache.maven.plugins.annotations.Parameter;
|
38 | 41 | import org.apache.maven.plugins.plugin.descriptor.EnhancedPluginDescriptorBuilder;
|
| 42 | +import org.apache.maven.project.DefaultProjectBuildingRequest; |
| 43 | +import org.apache.maven.project.MavenProject; |
| 44 | +import org.apache.maven.project.ProjectBuilder; |
| 45 | +import org.apache.maven.project.ProjectBuildingException; |
| 46 | +import org.apache.maven.project.ProjectBuildingRequest; |
| 47 | +import org.apache.maven.project.ProjectBuildingResult; |
39 | 48 | import org.apache.maven.reporting.AbstractMavenReport;
|
40 | 49 | import org.apache.maven.reporting.MavenReportException;
|
41 | 50 | import org.apache.maven.rtinfo.RuntimeInformation;
|
42 | 51 | import org.codehaus.plexus.configuration.PlexusConfigurationException;
|
43 | 52 | import org.codehaus.plexus.i18n.I18N;
|
44 | 53 | import org.codehaus.plexus.util.xml.XmlStreamReader;
|
| 54 | +import org.eclipse.aether.RepositorySystem; |
| 55 | +import org.eclipse.aether.artifact.DefaultArtifact; |
| 56 | +import org.eclipse.aether.resolution.VersionRangeRequest; |
| 57 | +import org.eclipse.aether.resolution.VersionRangeResolutionException; |
| 58 | +import org.eclipse.aether.resolution.VersionRangeResult; |
| 59 | +import org.eclipse.aether.version.Version; |
45 | 60 |
|
46 | 61 | /**
|
47 | 62 | * Generates the Plugin's documentation report: <code>plugin-info.html</code> plugin overview page,
|
@@ -123,6 +138,15 @@ public class PluginReport extends AbstractMavenReport {
|
123 | 138 | @Parameter(property = "maven.plugin.report.disableInternalJavadocLinkValidation")
|
124 | 139 | private boolean disableInternalJavadocLinkValidation;
|
125 | 140 |
|
| 141 | + @Component |
| 142 | + private MavenSession mavenSession; |
| 143 | + |
| 144 | + @Component |
| 145 | + private RepositorySystem repositorySystem; |
| 146 | + |
| 147 | + @Component |
| 148 | + private ProjectBuilder projectBuilder; |
| 149 | + |
126 | 150 | /**
|
127 | 151 | * {@inheritDoc}
|
128 | 152 | */
|
@@ -232,4 +256,33 @@ private void generateMojosDocumentation(PluginDescriptor pluginDescriptor, Local
|
232 | 256 | }
|
233 | 257 | }
|
234 | 258 | }
|
| 259 | + |
| 260 | + private List<Version> discoverVersions() throws VersionRangeResolutionException { |
| 261 | + MavenProject currentProject = mavenSession.getCurrentProject(); |
| 262 | + VersionRangeRequest rangeRequest = new VersionRangeRequest(); |
| 263 | + rangeRequest.setArtifact( |
| 264 | + new DefaultArtifact(currentProject.getGroupId() + ":" + currentProject.getArtifactId() + ":[0,)")); |
| 265 | + rangeRequest.setRepositories( |
| 266 | + RepositoryUtils.toRepos(mavenSession.getCurrentProject().getRemoteArtifactRepositories())); |
| 267 | + VersionRangeResult rangeResult = |
| 268 | + repositorySystem.resolveVersionRange(mavenSession.getRepositorySession(), rangeRequest); |
| 269 | + return rangeResult.getVersions(); |
| 270 | + } |
| 271 | + |
| 272 | + private ProjectBuildingResult buildMavenProject(String version) throws ProjectBuildingException { |
| 273 | + MavenProject currentProject = mavenSession.getCurrentProject(); |
| 274 | + ProjectBuildingRequest buildRequest = new DefaultProjectBuildingRequest(); |
| 275 | + buildRequest.setLocalRepository(mavenSession.getLocalRepository()); |
| 276 | + buildRequest.setRemoteRepositories(mavenSession.getCurrentProject().getRemoteArtifactRepositories()); |
| 277 | + buildRequest.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL); |
| 278 | + buildRequest.setProcessPlugins(false); |
| 279 | + buildRequest.setRepositoryMerging(ProjectBuildingRequest.RepositoryMerging.REQUEST_DOMINANT); |
| 280 | + buildRequest.setSystemProperties(mavenSession.getSystemProperties()); |
| 281 | + buildRequest.setUserProperties(mavenSession.getUserProperties()); |
| 282 | + buildRequest.setRepositorySession(mavenSession.getRepositorySession()); |
| 283 | + return projectBuilder.build( |
| 284 | + RepositoryUtils.toArtifact(new DefaultArtifact( |
| 285 | + currentProject.getGroupId() + ":" + currentProject.getArtifactId() + ":pom:" + version)), |
| 286 | + buildRequest); |
| 287 | + } |
235 | 288 | }
|
0 commit comments