package org; /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import java.io.File; import java.util.Locale; import java.util.ResourceBundle; import org.apache.maven.doxia.sink.Sink; import org.apache.maven.doxia.siterenderer.Renderer; import org.apache.maven.project.MavenProject; import org.apache.maven.reporting.AbstractMavenReport; import org.apache.maven.reporting.AbstractMavenReportRenderer; import org.apache.maven.reporting.MavenReportException; /** * Dummy Reporting Plugin. * * @goal report * @requiresReports true * @execute phase="compile" */ public class DummyReport extends AbstractMavenReport { /** * Report output directory. * * @parameter default-value="${project.build.directory}/generated-site/xdoc" */ private File outputDirectory; /** * Doxia Site Renderer. * * @component */ private Renderer siteRenderer; /** * The Maven Project. * * @parameter expression="${project}" * @required * @readonly */ private MavenProject project; /** * The goal prefix that will appear before the ":". * * @parameter expression="${goalPrefix}" * @since 2.4 */ protected String goalPrefix; /** * Set this to "true" to skip invoking any goals or reports of the plugin. * * @parameter default-value="false" expression="${maven.plugin.skip}" * @since 2.8 */ private boolean skip; /** * Set this to "true" to skip generating the report. * * @parameter default-value="false" expression="${maven.plugin.report.skip}" * @since 2.8 */ private boolean skipReport; /** {@inheritDoc} */ protected Renderer getSiteRenderer() { return siteRenderer; } /** {@inheritDoc} */ protected String getOutputDirectory() { return outputDirectory.getPath(); } /** {@inheritDoc} */ protected MavenProject getProject() { return project; } /** {@inheritDoc} */ public boolean canGenerateReport() { return true; } /** {@inheritDoc} */ protected void executeReport( Locale locale ) throws MavenReportException { if ( !canGenerateReport() ) { return; } if (skip || skipReport) { getLog().info( "Maven Plugin Plugin Report generation skipped." ); return; } // Generate the plugin's documentation generatePluginDocumentation( locale ); } /** {@inheritDoc} */ public String getDescription( Locale locale ) { return getBundle( locale ).getString( "report.plugin.description" ); } /** {@inheritDoc} */ public String getName( Locale locale ) { return getBundle( locale ).getString( "report.plugin.name" ); } /** {@inheritDoc} */ public String getOutputName() { return "plugin-info"; } /** * @param pluginDescriptor not null * @param locale not null * @throws MavenReportException if any */ private void generatePluginDocumentation( Locale locale ) throws MavenReportException { File outputDir = new File( getOutputDirectory() ); outputDir.mkdirs(); PluginOverviewRenderer r = new PluginOverviewRenderer( getSink(), locale ); r.render(); } /** * @param locale not null * @return the bundle for this report */ protected static ResourceBundle getBundle( Locale locale ) { return ResourceBundle.getBundle( "plugin-report", locale, DummyReport.class.getClassLoader() ); } /** * Generates an overview page with the list of goals * and a link to the goal's page. */ static class PluginOverviewRenderer extends AbstractMavenReportRenderer { private final Locale locale; /** * @param project not null * @param sink not null * @param locale not null */ public PluginOverviewRenderer( Sink sink, Locale locale ) { super( sink ); this.locale = locale; } /** {@inheritDoc} */ public String getTitle() { return getBundle( locale ).getString( "report.plugin.title" ); } /** {@inheritDoc} */ public void renderBody() { startSection( getTitle() ); paragraph( "This is a report." ); endSection(); } } }