in src/main/java/org/apache/maven/reporting/exec/DefaultMavenReportExecutor.java [381:438]
private boolean isMavenReport(MojoExecution mojoExecution, PluginDescriptor pluginDescriptor) {
ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();
// get the plugin's goal Mojo class
Class<?> mojoClass;
try {
Thread.currentThread()
.setContextClassLoader(mojoExecution.getMojoDescriptor().getRealm());
mojoClass = pluginDescriptor
.getClassRealm()
.loadClass(mojoExecution.getMojoDescriptor().getImplementation());
} catch (ClassNotFoundException e) {
if (LOGGER.isDebugEnabled()) {
LOGGER.warn("Skipping ClassNotFoundException mojoExecution.goal {}", mojoExecution.getGoal(), e);
} else {
LOGGER.warn("Skipping ClassNotFoundException mojoExecution.goal {}", mojoExecution.getGoal());
}
return false;
} finally {
Thread.currentThread().setContextClassLoader(originalClassLoader);
}
// check if it is a report
try {
Thread.currentThread()
.setContextClassLoader(mojoExecution.getMojoDescriptor().getRealm());
MojoDescriptor mojoDescriptor = pluginDescriptor.getMojo(mojoExecution.getGoal());
boolean isMavenReport = MavenReport.class.isAssignableFrom(mojoClass);
if (LOGGER.isDebugEnabled()) {
if (mojoDescriptor != null && mojoDescriptor.getImplementationClass() != null) {
LOGGER.debug(
"Class {} is MavenReport: ",
mojoDescriptor.getImplementationClass().getName(),
isMavenReport);
}
if (!isMavenReport) {
LOGGER.debug(
"Skipping non MavenReport {}",
mojoExecution.getMojoDescriptor().getId());
}
}
return isMavenReport;
} catch (LinkageError e) {
if (LOGGER.isDebugEnabled()) {
LOGGER.warn("Skipping LinkageError mojoExecution.goal {}", mojoExecution.getGoal(), e);
} else {
LOGGER.warn("Skipping LinkageError mojoExecution.goal {}", mojoExecution.getGoal());
}
return false;
} finally {
Thread.currentThread().setContextClassLoader(originalClassLoader);
}
}