From b902dc521b1d214a0e897079068bb90290a452f1 Mon Sep 17 00:00:00 2001 From: "Marc R. Hoffmann" Date: Sat, 7 Nov 2020 09:47:30 +0100 Subject: [PATCH] Remove Dependency on maven-reporting-impl This dependency is not really useful for JaCoCo reports and has several transitive dependencies where security vulnerabilities have been reported. Fixes #641, #920 --- jacoco-maven-plugin/pom.xml | 20 -------- .../org/jacoco/maven/AbstractReportMojo.java | 46 +++++++++---------- .../src/org/jacoco/maven/FileFilter.java | 3 +- .../org/jacoco/maven/ReportAggregateMojo.java | 12 ++--- .../src/org/jacoco/maven/ReportITMojo.java | 10 ++-- .../src/org/jacoco/maven/ReportMojo.java | 10 ++-- org.jacoco.doc/docroot/doc/changes.html | 2 + 7 files changed, 39 insertions(+), 64 deletions(-) diff --git a/jacoco-maven-plugin/pom.xml b/jacoco-maven-plugin/pom.xml index 7c89b71608..4b3774860f 100644 --- a/jacoco-maven-plugin/pom.xml +++ b/jacoco-maven-plugin/pom.xml @@ -31,22 +31,6 @@ 3.0 - - - - - org.apache.maven.reporting - maven-reporting-impl - 2.1 - - - commons-collections - commons-collections - 3.2.2 - - - - org.apache.maven @@ -74,10 +58,6 @@ maven-reporting-api ${project.prerequisites.maven} - - org.apache.maven.reporting - maven-reporting-impl - ${project.groupId} diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java index fd22fa3ceb..04638e68d9 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java @@ -16,12 +16,12 @@ 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; @@ -30,7 +30,8 @@ * 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. @@ -86,29 +87,16 @@ 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; } /** @@ -129,7 +117,6 @@ List getExcludes() { return excludes; } - @Override public boolean canGenerateReport() { if (skip) { getLog().info( @@ -153,11 +140,25 @@ public boolean canGenerateReport() { abstract boolean canGenerateReportRegardingClassesDirectory(); + 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; @@ -170,8 +171,7 @@ public void execute() throws MojoExecutionException { } } - @Override - protected void executeReport(final Locale locale) + private void executeReport(final Locale locale) throws MavenReportException { try { final ReportSupport support = new ReportSupport(getLog()); diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/FileFilter.java b/jacoco-maven-plugin/src/org/jacoco/maven/FileFilter.java index 116215e2c0..8a1bff3aa8 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/FileFilter.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/FileFilter.java @@ -17,7 +17,6 @@ import java.io.IOException; import java.util.List; -import org.apache.commons.collections.CollectionUtils; import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.StringUtils; @@ -94,7 +93,7 @@ public String getExcludes() { private String buildPattern(final List patterns, final String defaultPattern) { String pattern = defaultPattern; - if (CollectionUtils.isNotEmpty(patterns)) { + if (patterns != null && !patterns.isEmpty()) { pattern = StringUtils.join(patterns.iterator(), ","); } return pattern; diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/ReportAggregateMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/ReportAggregateMojo.java index 74c4b1ac7a..a1fb501e19 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/ReportAggregateMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/ReportAggregateMojo.java @@ -107,7 +107,7 @@ void loadExecutionData(final ReportSupport support) throws IOException { final FileFilter filter = new FileFilter(dataFileIncludes, dataFileExcludes); - loadExecutionData(support, filter, getProject().getBasedir()); + loadExecutionData(support, filter, project.getBasedir()); for (final MavenProject dependency : findDependencies( Artifact.SCOPE_COMPILE, Artifact.SCOPE_RUNTIME, Artifact.SCOPE_PROVIDED, Artifact.SCOPE_TEST)) { @@ -141,12 +141,10 @@ void createReport(final IReportGroupVisitor visitor, } } - @Override - protected String getOutputDirectory() { - return outputDirectory.getAbsolutePath(); + public File getReportOutputDirectory() { + return outputDirectory; } - @Override public void setReportOutputDirectory(final File reportOutputDirectory) { if (reportOutputDirectory != null && !reportOutputDirectory .getAbsolutePath().endsWith("jacoco-aggregate")) { @@ -168,7 +166,7 @@ public String getName(final Locale locale) { private List findDependencies(final String... scopes) { final List result = new ArrayList(); final List scopeList = Arrays.asList(scopes); - for (final Object dependencyObject : getProject().getDependencies()) { + for (final Object dependencyObject : project.getDependencies()) { final Dependency dependency = (Dependency) dependencyObject; if (scopeList.contains(dependency.getScope())) { final MavenProject project = findProjectFromReactor(dependency); @@ -192,7 +190,7 @@ private MavenProject findProjectFromReactor(final Dependency d) { try { depVersionAsRange = VersionRange .createFromVersionSpec(d.getVersion()); - } catch (InvalidVersionSpecificationException e) { + } catch (final InvalidVersionSpecificationException e) { throw new AssertionError(e); } diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/ReportITMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/ReportITMojo.java index 0061b161cc..f24a1ae668 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/ReportITMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/ReportITMojo.java @@ -58,7 +58,7 @@ boolean canGenerateReportRegardingDataFiles() { @Override boolean canGenerateReportRegardingClassesDirectory() { - return new File(getProject().getBuild().getOutputDirectory()).exists(); + return new File(project.getBuild().getOutputDirectory()).exists(); } @Override @@ -76,16 +76,14 @@ void addFormatters(final ReportSupport support, final Locale locale) @Override void createReport(final IReportGroupVisitor visitor, final ReportSupport support) throws IOException { - support.processProject(visitor, title, getProject(), getIncludes(), + support.processProject(visitor, title, project, getIncludes(), getExcludes(), sourceEncoding); } - @Override - protected String getOutputDirectory() { - return outputDirectory.getAbsolutePath(); + public File getReportOutputDirectory() { + return outputDirectory; } - @Override public void setReportOutputDirectory(final File reportOutputDirectory) { if (reportOutputDirectory != null && !reportOutputDirectory .getAbsolutePath().endsWith("jacoco-it")) { diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/ReportMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/ReportMojo.java index b71d27891d..29a6da6ee3 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/ReportMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/ReportMojo.java @@ -53,7 +53,7 @@ boolean canGenerateReportRegardingDataFiles() { @Override boolean canGenerateReportRegardingClassesDirectory() { - return new File(getProject().getBuild().getOutputDirectory()).exists(); + return new File(project.getBuild().getOutputDirectory()).exists(); } @Override @@ -71,16 +71,14 @@ void addFormatters(final ReportSupport support, final Locale locale) @Override void createReport(final IReportGroupVisitor visitor, final ReportSupport support) throws IOException { - support.processProject(visitor, title, getProject(), getIncludes(), + support.processProject(visitor, title, project, getIncludes(), getExcludes(), sourceEncoding); } - @Override - protected String getOutputDirectory() { - return outputDirectory.getAbsolutePath(); + public File getReportOutputDirectory() { + return outputDirectory; } - @Override public void setReportOutputDirectory(final File reportOutputDirectory) { if (reportOutputDirectory != null && !reportOutputDirectory .getAbsolutePath().endsWith("jacoco")) { diff --git a/org.jacoco.doc/docroot/doc/changes.html b/org.jacoco.doc/docroot/doc/changes.html index c160ab8c26..3332688687 100644 --- a/org.jacoco.doc/docroot/doc/changes.html +++ b/org.jacoco.doc/docroot/doc/changes.html @@ -32,6 +32,8 @@

Non-functional Changes

  • JaCoCo now depends on ASM 9.0 (GitHub #1094, #1097).
  • +
  • Maven plug-in has no dependency on maven-reporting-impl any more + (GitHub #1121).