diff options
Diffstat (limited to 'jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java')
-rw-r--r-- | jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java | 89 |
1 files changed, 54 insertions, 35 deletions
diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java index ecd48ab5..097ecb10 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java @@ -1,26 +1,29 @@ /******************************************************************************* - * Copyright (c) 2009, 2019 Mountainminds GmbH & Co. KG and Contributors - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html + * Copyright (c) 2009, 2021 Mountainminds GmbH & Co. KG and Contributors + * This program and the accompanying materials are made available under + * the terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 * * Contributors: * Evgeny Mandrikov - initial API and implementation + * troosan - add support for format selection * *******************************************************************************/ package org.jacoco.maven; +import java.io.File; import java.io.IOException; import java.util.List; import java.util.Locale; -import org.apache.maven.doxia.siterenderer.Renderer; +import org.apache.maven.doxia.sink.SinkFactory; +import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; -import org.apache.maven.reporting.AbstractMavenReport; +import org.apache.maven.reporting.MavenMultiPageReport; import org.apache.maven.reporting.MavenReportException; import org.jacoco.report.IReportGroupVisitor; import org.jacoco.report.IReportVisitor; @@ -29,7 +32,8 @@ import org.jacoco.report.IReportVisitor; * Base class for creating a code coverage report for tests of a single project * in multiple formats (HTML, XML, and CSV). */ -public abstract class AbstractReportMojo extends AbstractMavenReport { +public abstract class AbstractReportMojo extends AbstractMojo + implements MavenMultiPageReport { /** * Encoding of the generated reports. @@ -38,6 +42,15 @@ public abstract class AbstractReportMojo extends AbstractMavenReport { String outputEncoding; /** + * A list of report formats to generate. Supported formats are HTML, XML and + * CSV. Defaults to all formats if no values are given. + * + * @since 0.8.7 + */ + @Parameter(defaultValue = "HTML,XML,CSV") + List<ReportFormat> formats; + + /** * Name of the root node HTML report pages. * * @since 0.7.7 @@ -85,34 +98,21 @@ public abstract class AbstractReportMojo extends AbstractMavenReport { @Parameter(property = "project", readonly = true) MavenProject project; - /** - * Doxia Site Renderer. - */ - @Component - Renderer siteRenderer; - public String getDescription(final Locale locale) { return getName(locale) + " Coverage Report."; } - @Override public boolean isExternalReport() { return true; } - @Override - protected MavenProject getProject() { - return project; - } - - @Override - protected Renderer getSiteRenderer() { - return siteRenderer; + public String getCategoryName() { + return CATEGORY_PROJECT_REPORTS; } /** * Returns the list of class files to include in the report. - * + * * @return class files to include, may contain wildcard characters */ List<String> getIncludes() { @@ -121,14 +121,13 @@ public abstract class AbstractReportMojo extends AbstractMavenReport { /** * Returns the list of class files to exclude from the report. - * + * * @return class files to exclude, may contain wildcard characters */ List<String> getExcludes() { return excludes; } - @Override public boolean canGenerateReport() { if (skip) { getLog().info( @@ -152,11 +151,27 @@ public abstract class AbstractReportMojo extends AbstractMavenReport { abstract boolean canGenerateReportRegardingClassesDirectory(); + abstract File getOutputDirectory(); + + public void generate( + @SuppressWarnings("deprecation") final org.codehaus.doxia.sink.Sink sink, + final Locale locale) throws MavenReportException { + generate(sink, null, locale); + } + + public void generate(final org.apache.maven.doxia.sink.Sink sink, + final SinkFactory sinkFactory, final Locale locale) + throws MavenReportException { + if (!canGenerateReport()) { + return; + } + executeReport(locale); + } + /** * This method is called when the report generation is invoked directly as a * standalone Mojo. */ - @Override public void execute() throws MojoExecutionException { if (!canGenerateReport()) { return; @@ -169,8 +184,7 @@ public abstract class AbstractReportMojo extends AbstractMavenReport { } } - @Override - protected void executeReport(final Locale locale) + private void executeReport(final Locale locale) throws MavenReportException { try { final ReportSupport support = new ReportSupport(getLog()); @@ -180,15 +194,20 @@ public abstract class AbstractReportMojo extends AbstractMavenReport { createReport(visitor, support); visitor.visitEnd(); } catch (final IOException e) { - throw new MavenReportException("Error while creating report: " - + e.getMessage(), e); + throw new MavenReportException( + "Error while creating report: " + e.getMessage(), e); } } - abstract void loadExecutionData(final ReportSupport support) - throws IOException; + private void addFormatters(final ReportSupport support, final Locale locale) + throws IOException { + getOutputDirectory().mkdirs(); + for (final ReportFormat f : formats) { + support.addVisitor(f.createVisitor(this, locale)); + } + } - abstract void addFormatters(final ReportSupport support, final Locale locale) + abstract void loadExecutionData(final ReportSupport support) throws IOException; abstract void createReport(final IReportGroupVisitor visitor, |