Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »


You need to implement your Mojo as AbstractMavenReport, then you can simply add it to the <plugin> section within the <reporting><plugins> section of your POM and your report will be generated and linked into the Maven site automagically:

* @author me
* @goal my-report
* @phase site
public class MyReportMojo extends AbstractMavenReport {
* Directory where reports will go.
* @parameter expression="$
* @required
* @readonly
 private String outputDirectory;

and so on. @phase site binds your plugin to the site lifecycle of the build.

You need to implement or override the following methods:

  • public void executeReport(Locale defaultLocale) throws MavenReportException
  • This method is called during site phase to actually produce your report.
     protected MavenProject getProject()
    {         return project;     }
     protected String getOutputDirectory()
    {         return outputDirectory;     }
     protected Renderer getSiteRenderer()
    {         return siteRenderer;     }
    - \- - -
     public String getDescription( Locale locale )
    {         return getBundle( locale ).getString( "report.myreport.description" );     }
    - \- - -
     public String getName( Locale locale )
    {         return getBundle( locale ).getString( "" );     }
     public String getOutputName()
    {         return "my-report";     }
     private ResourceBundle getBundle( Locale locale )
    {         return ResourceBundle.getBundle( "my-report", locale, this.getClass().getClassLoader() );     }
    For the use of getBundle() you need to provide a resource bundle in src/main/resources/ that contains the necessary keys for your plugin, e.g.
    report.dashboard.description=Dashboard Report of the Project.
    report.dashboard.header=Dashboard Report
    Note:: If you want to create the report without using Doxia, e.g. via XSL transformation from some XML file, then simply add the following method to your Mojo:
    public boolean isExternalReport()
    {         return true;     }

Doxia Sink

You also need to use the Doxia Sink API to have complete decoration (ie. menus). That is quite straightforward. You simply import org.apache.maven.doxia.sink.Sink and get an instance by simply calling the class method `getSink()` (you don't even have to implement it). Then you can do things like that:

 sink.text( "some text" );

to get <td>some text</td>.

  • No labels