Class DefaultMavenReportExecutor

  • All Implemented Interfaces:
    MavenReportExecutor

    @Component(role=MavenReportExecutor.class)
    public class DefaultMavenReportExecutor
    extends Object
    implements MavenReportExecutor

    This component will build some MavenReportExecution from MavenReportExecutorRequest. If a MavenReport needs to fork a lifecycle, this fork is executed here. It will ask the core to get some informations in order to correctly setup MavenReport.

    Note if no version is defined in the report plugin, the version will be searched with resolvePluginVersion(...) method:

    1. use the one defined in the reportPlugin configuration,
    2. search similar (same groupId and artifactId) plugin in the build/plugins section of the pom,
    3. search similar (same groupId and artifactId) plugin in the build/pluginManagement section of the pom,
    4. ask PluginVersionResolver to get a fallback version (display a warning as it's not a recommended use).

    Following steps are done:

    • get PluginDescriptor from the MavenPluginManager (through MavenPluginManagerHelper.getPluginDescriptor(...) to protect from core API change)
    • setup a ClassLoader, with the Site plugin classloader as parent for the report execution.
      Notice that some classes are imported from the current Site plugin ClassRealm: see IMPORTS. Corresponding artifacts are excluded from the artifact resolution: doxia-site-renderer, doxia-sink-api  and maven-reporting-api.
      Work is done using MavenPluginManager (through MavenPluginManagerHelper.setupPluginRealm(...) to protect from core API change)
    • setup the mojo using MavenPluginManager.getConfiguredMojo(...)
    • verify with LifecycleExecutor.calculateForkedExecutions(...) if any forked execution is needed: if yes, execute the forked execution here

    Author:
    Olivier Lamy
    • Field Detail

      • mavenPluginManager

        @Requirement
        protected org.apache.maven.plugin.MavenPluginManager mavenPluginManager
      • lifecycleExecutor

        @Requirement
        protected org.apache.maven.lifecycle.LifecycleExecutor lifecycleExecutor
      • pluginVersionResolver

        @Requirement
        protected org.apache.maven.plugin.version.PluginVersionResolver pluginVersionResolver
    • Constructor Detail

      • DefaultMavenReportExecutor

        public DefaultMavenReportExecutor()
    • Method Detail

      • resolvePluginVersion

        protected String resolvePluginVersion​(ReportPlugin reportPlugin,
                                              MavenReportExecutorRequest mavenReportExecutorRequest)
                                       throws org.apache.maven.plugin.version.PluginVersionResolutionException
        Resolve report plugin version. Steps to find a plugin version stop after each step if a non null value has been found:
        1. use the one defined in the reportPlugin configuration,
        2. search similar (same groupId and artifactId) mojo in the build/plugins section of the pom,
        3. search similar (same groupId and artifactId) mojo in the build/pluginManagement section of the pom,
        4. ask PluginVersionResolver to get a fallback version and display a warning as it's not a recommended use.
        Parameters:
        reportPlugin - the report plugin to resolve the version
        mavenReportExecutorRequest - the current report execution context
        Returns:
        the report plugin version
        Throws:
        org.apache.maven.plugin.version.PluginVersionResolutionException