Creating a Maven report plugin -
i'm trying build custom report plugin maven, used mvn site.
but can't find updated documentation on how proceed.
official documentation creating plugin mentions extending org.apache.maven.plugin.abstractmojo. "regular" plugins usual build lifecycle. it's not site build lifecycle.
there similar question on (writing maven custom report plugin; how generate html body or "middle" of report?) refers document 2015, mentions abstractmavenreport class instead of abstractmojo class, can't find anywhere imported in project.
i looked @ code of recent report plugins (the changes plugin here: http://svn.apache.org/viewvc/maven/plugins/tags/maven-changes-plugin-2.12.1/), can't find i'm looking for.
isn't there @ least archetype report plugins? has experience in this?
thank you! -- bertrand
a bit more digging , found answer: http://maven.apache.org/shared/maven-reporting-impl/index.html
and working example: http://svn.apache.org/viewvc/maven/shared/tags/maven-reporting-impl-3.0.0/src/it/setup-reporting-plugin/
so, basically, you'll need in pom.xml:
<dependencies> <dependency> <groupid>org.apache.maven.reporting</groupid> <artifactid>maven-reporting-impl</artifactid> <version>@project.version@</version> </dependency> <dependency> <groupid>org.apache.maven.reporting</groupid> <artifactid>maven-reporting-api</artifactid> <version>3.0</version> </dependency> <!-- plugin api , plugin-tools --> <dependency> <groupid>org.apache.maven</groupid> <artifactid>maven-plugin-api</artifactid> <version>3.0.5</version> </dependency> <dependency> <groupid>org.apache.maven.plugin-tools</groupid> <artifactid>maven-plugin-annotations</artifactid> <version>3.3</version> <scope>provided</scope> </dependency> <dependency> <groupid>org.apache.maven.shared</groupid> <artifactid>maven-shared-utils</artifactid> <version>0.7</version> </dependency> </dependencies> and then, main class has extend abstractmavenreport:
import java.util.locale; import org.apache.maven.plugins.annotations.mojo; import org.apache.maven.reporting.abstractmavenreport; import org.apache.maven.reporting.mavenreportexception; /** * typical code copy reporting plugin start: choose goal name, implement getoutputname(), * getname( locale ), getdescription( locale ) , of course executereport( locale ). */ @mojo( name = "custom" ) public class customreport extends abstractmavenreport { public string getoutputname() { return "custom-report"; } public string getname( locale locale ) { return "custom maven report"; } public string getdescription( locale locale ) { return "custom maven report description"; } @override protected void executereport( locale locale ) throws mavenreportexception { // direct report generation using doxia: compare customreportrenderer see benefits of using // reportrenderer getsink().head(); getsink().title(); getsink().text( "custom report title" ); getsink().title_(); getsink().head_(); getsink().body(); getsink().section1(); getsink().sectiontitle1(); getsink().text( "section" ); getsink().sectiontitle1_(); getsink().text( "custom maven report content." ); getsink().section1_(); getsink().body_(); } } hope future developers of maven plugins! ;-)
Comments
Post a Comment