in src/main/java/org/apache/maven/plugins/help/DescribeMojo.java [856:885]
private boolean isReportGoal(MojoDescriptor md) {
PluginDescriptor pd = md.getPluginDescriptor();
List<URL> urls = new ArrayList<>();
ProjectBuildingRequest pbr = new DefaultProjectBuildingRequest(session.getProjectBuildingRequest());
pbr.setRemoteRepositories(project.getRemoteArtifactRepositories());
pbr.setPluginArtifactRepositories(project.getPluginArtifactRepositories());
pbr.setResolveDependencies(true);
pbr.setProject(null);
pbr.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);
try {
Artifact jar = resolveArtifact(
new DefaultArtifact(pd.getGroupId(), pd.getArtifactId(), "jar", pd.getVersion()))
.getArtifact();
Artifact pom = resolveArtifact(
new DefaultArtifact(pd.getGroupId(), pd.getArtifactId(), "pom", pd.getVersion()))
.getArtifact();
MavenProject mavenProject = projectBuilder.build(pom.getFile(), pbr).getProject();
urls.add(jar.getFile().toURI().toURL());
for (String artifact : mavenProject.getCompileClasspathElements()) {
urls.add(new File(artifact).toURI().toURL());
}
try (URLClassLoader classLoader =
new URLClassLoader(urls.toArray(new URL[0]), getClass().getClassLoader())) {
return MavenReport.class.isAssignableFrom(Class.forName(md.getImplementation(), false, classLoader));
}
} catch (Exception e) {
getLog().warn("Couldn't identify if this goal is a report goal: " + e.getMessage());
return false;
}
}