Writing a Plug-in That Generates Reports

Throughout this book you have used several Maven plug-ins that generate reports when you type maven site (Checkstyle, Dashboard, JUnit, etc.). Wouldn't it be nice if you could add your own report type that users of your plug-in could add to their reports section in the POM? In this lab you'll add a report that displays the logs generated by the Logging Aspect of your Logifier plug-in.

How do I do that?

Any plug-in can generate a report. All you need to do is define three goals in your plug-in's plugin.jelly file. Assuming you want to name the report maven-logifier-plugin, these goals are:

  • maven-logifier-plugin:register

  • maven-logifier-plugin:deregister

  • maven-logifier-plugin:report

Have a look at how to implement the maven-logifier-plugin:register goal:

<?xml version="1.0"?>
  
<project
    xmlns:j="jelly:core"
    xmlns:ant="jelly:ant"
    xmlns:maven="jelly:maven"
    xmlns:doc="doc">
[...] 
  <goal name="maven-logifier-plugin:register">
               <doc:registerReport 
               name="Logifier"
        pluginName="maven-logifier-plugin"
        description=
            "Report showing all debugging logs generated by the Logging   
               Aspect" link="logifier-report"/>
               </goal>

You need to understand how the maven-logifier-plugin:register goal fits in the report generation lifecycle. It is called by the XDoc plug-in when the user types maven site (as you'll recall, the XDoc plug-in is used by the Site plug-in). The XDoc plug-in gets the list of reports defined in the reports section of the POM (as seen in Section 1.1) and calls ...

Get Maven: A Developer's Notebook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.