You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2023/02/19 16:05:36 UTC

[maven-project-info-reports-plugin] branch doxia-2.0.0 updated (c99984b -> db0f634)

This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a change to branch doxia-2.0.0
in repository https://gitbox.apache.org/repos/asf/maven-project-info-reports-plugin.git


 discard c99984b  Prepare for Doxia 2.0.0
     new db0f634  Prepare for Doxia 2.0.0

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (c99984b)
            \
             N -- N -- N   refs/heads/doxia-2.0.0 (db0f634)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 pom.xml                                                               | 2 +-
 .../apache/maven/report/projectinfo/AbstractProjectInfoTestCase.java  | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)


[maven-project-info-reports-plugin] 01/01: Prepare for Doxia 2.0.0

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch doxia-2.0.0
in repository https://gitbox.apache.org/repos/asf/maven-project-info-reports-plugin.git

commit db0f6347b731e6d41c75361a63e63707708d774f
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Sat Jul 2 23:58:47 2022 +0200

    Prepare for Doxia 2.0.0
---
 pom.xml                                            |  58 ++-------
 src/it/dependencies-java-1.7-and-1.8/verify.groovy |  28 ++---
 src/it/full-pom/pom.xml                            |   2 +-
 src/it/minimal-pom/pom.xml                         |   2 +-
 src/it/multi-module/pom.xml                        |   5 +-
 src/it/multi-module/verify.groovy                  |   4 +-
 .../projectinfo/AbstractProjectInfoRenderer.java   |  36 ------
 .../projectinfo/AbstractProjectInfoReport.java     |  14 +--
 .../projectinfo/DependencyConvergenceReport.java   |   8 +-
 .../maven/report/projectinfo/TeamReport.java       |   2 +-
 .../renderer/DependenciesRenderer.java             | 140 +--------------------
 .../projectinfo/AbstractProjectInfoTestCase.java   |  26 ++--
 .../report/projectinfo/CiManagementReportTest.java |  13 +-
 .../DependencyConvergenceReportTest.java           |   2 +-
 .../DependencyManagementReportTest.java            |   4 +-
 .../maven/report/projectinfo/IndexReportTest.java  |   4 +-
 .../projectinfo/IssueManagementReportTest.java     |   8 +-
 .../report/projectinfo/LicensesReportTest.java     |  24 ++--
 .../report/projectinfo/MailingListsReportTest.java |  20 +--
 .../report/projectinfo/ModulesReportTest.java      |   7 +-
 .../projectinfo/PluginManagementReportTest.java    |   4 +-
 .../maven/report/projectinfo/ScmReportTest.java    |  15 +--
 .../report/projectinfo/SummaryReportTest.java      |  10 +-
 .../maven/report/projectinfo/TeamReportTest.java   |  17 +--
 .../plugin-configs/ci-management-plugin-config.xml |   3 +-
 ...ci-management-plugin-with-ci-section-config.xml |   3 +-
 .../dependency-convergence-plugin-config.xml       |   3 +-
 .../dependency-management-plugin-config.xml        |   1 +
 .../plugin-configs/index-plugin-config.xml         |   3 +-
 .../issue-management-plugin-config.xml             |   3 +-
 .../licenses-plugin-config-linkonly.xml            |   3 +-
 .../plugin-configs/licenses-plugin-config.xml      |   3 +-
 ...nfig.xml => mailing-lists-plugin-config-fr.xml} |   2 +
 .../mailing-lists-plugin-config-invalidlink.xml    |   1 +
 .../plugin-configs/mailing-lists-plugin-config.xml |   1 +
 .../plugin-configs/modules-plugin-config.xml       |   6 +-
 ...ariable-settings-interpolated-plugin-config.xml |   8 +-
 .../plugin-management-plugin-config-MPIR-375.xml   |   6 +-
 .../plugin-management-plugin-config.xml            |   2 +-
 .../resources/plugin-configs/scm-plugin-config.xml |   3 +-
 .../plugin-configs/scm-wrong-url-plugin-config.xml |   3 +-
 .../plugin-configs/summary-plugin-config.xml       |   3 +-
 .../plugin-configs/team-plugin-config.xml          |   3 +-
 43 files changed, 150 insertions(+), 363 deletions(-)

diff --git a/pom.xml b/pom.xml
index c611962..466dd21 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,7 +30,7 @@ under the License.
   </parent>
 
   <artifactId>maven-project-info-reports-plugin</artifactId>
-  <version>3.4.3-SNAPSHOT</version>
+  <version>4.0.0-M1-SNAPSHOT</version>
   <packaging>maven-plugin</packaging>
 
   <name>Apache Maven Project Info Reports Plugin</name>
@@ -119,14 +119,14 @@ under the License.
 
   <properties>
     <javaVersion>8</javaVersion>
-    <doxiaVersion>1.11.1</doxiaVersion>
-    <doxia-sitetoolsVersion>1.11.1</doxia-sitetoolsVersion>
+    <doxiaVersion>2.0.0-M5</doxiaVersion>
+    <doxiaSitetoolsVersion>2.0.0-M5</doxiaSitetoolsVersion>
     <mavenVersion>3.2.5</mavenVersion>
     <scmVersion>1.13.0</scmVersion>
     <aetherVersion>1.0.0.v20140518</aetherVersion>
-    <sitePluginVersion>3.12.1</sitePluginVersion>
-    <fluidoSkinVersion>1.11.1</fluidoSkinVersion>
-    <surefire.version>2.22.2</surefire.version>
+    <sitePluginVersion>4.0.0-M5</sitePluginVersion>
+    <fluidoSkinVersion>2.0.0-M3</fluidoSkinVersion>
+    <surefire.version>3.0.0-M8</surefire.version>
     <checkstyle.violation.ignore>ParameterNumber,MethodLength</checkstyle.violation.ignore>
     <project.build.outputTimestamp>2023-01-06T21:01:13Z</project.build.outputTimestamp>
   </properties>
@@ -135,12 +135,12 @@ under the License.
     <dependency>
       <groupId>org.apache.maven.reporting</groupId>
       <artifactId>maven-reporting-api</artifactId>
-      <version>3.1.1</version>
+      <version>4.0.0-M4</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.reporting</groupId>
       <artifactId>maven-reporting-impl</artifactId>
-      <version>3.2.0</version>
+      <version>4.0.0-M4</version>
       <exclusions>
         <exclusion>
           <groupId>org.apache.maven</groupId>
@@ -326,56 +326,18 @@ under the License.
       <groupId>org.apache.maven.doxia</groupId>
       <artifactId>doxia-sink-api</artifactId>
       <version>${doxiaVersion}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.codehaus.plexus</groupId>
-          <artifactId>plexus-container-default</artifactId>
-        </exclusion>
-      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.doxia</groupId>
       <artifactId>doxia-core</artifactId>
       <version>${doxiaVersion}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.codehaus.plexus</groupId>
-          <artifactId>plexus-container-default</artifactId>
-        </exclusion>
-      </exclusions>
     </dependency>
 
     <!-- Doxia Sitetools -->
-    <dependency>
-      <groupId>org.apache.maven.doxia</groupId>
-      <artifactId>doxia-decoration-model</artifactId>
-      <version>${doxia-sitetoolsVersion}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven.doxia</groupId>
-      <artifactId>doxia-site-renderer</artifactId>
-      <version>${doxia-sitetoolsVersion}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.codehaus.plexus</groupId>
-          <artifactId>plexus-container-default</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.codehaus.plexus</groupId>
-          <artifactId>plexus-component-api</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
     <dependency>
       <groupId>org.apache.maven.doxia</groupId>
       <artifactId>doxia-integration-tools</artifactId>
-      <version>${doxia-sitetoolsVersion}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.codehaus.plexus</groupId>
-          <artifactId>plexus-container-default</artifactId>
-        </exclusion>
-      </exclusions>
+      <version>${doxiaSitetoolsVersion}</version>
     </dependency>
 
     <!-- Plexus -->
@@ -393,7 +355,7 @@ under the License.
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
-      <version>3.4.2</version>
+      <version>3.5.0</version>
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
diff --git a/src/it/dependencies-java-1.7-and-1.8/verify.groovy b/src/it/dependencies-java-1.7-and-1.8/verify.groovy
index 2edcd4e..2a344fe 100644
--- a/src/it/dependencies-java-1.7-and-1.8/verify.groovy
+++ b/src/it/dependencies-java-1.7-and-1.8/verify.groovy
@@ -19,24 +19,24 @@
 File dependencies = new File( basedir, 'target/site/dependencies.html' )
 def mavenModel = '''\
 <tr class="a">
-<td align="left">maven-model-3.3.9.jar</td>
-<td align="right">164 kB</td>
-<td align="right">71</td>
-<td align="right">54</td>
-<td align="right">3</td>
-<td align="center">1.7</td>
-<td align="center">Yes</td></tr>
+<td style="text-align: left;">maven-model-3.3.9.jar</td>
+<td style="text-align: right;">164 kB</td>
+<td style="text-align: right;">71</td>
+<td style="text-align: right;">54</td>
+<td style="text-align: right;">3</td>
+<td style="text-align: center;">1.7</td>
+<td style="text-align: center;">Yes</td></tr>
 '''
 
 def jacksonDataTypeJsr310 = '''\
 <tr class="a">
-<td align="left">jackson-datatype-jsr310-2.6.4.jar</td>
-<td align="right">78.1 kB</td>
-<td align="right">69</td>
-<td align="right">51</td>
-<td align="right">5</td>
-<td align="center">1.8</td>
-<td align="center">Yes</td></tr>
+<td style="text-align: left;">jackson-datatype-jsr310-2.6.4.jar</td>
+<td style="text-align: right;">78.1 kB</td>
+<td style="text-align: right;">69</td>
+<td style="text-align: right;">51</td>
+<td style="text-align: right;">5</td>
+<td style="text-align: center;">1.8</td>
+<td style="text-align: center;">Yes</td></tr>
 '''
 
 assert dependencies.text.contains( mavenModel.replaceAll( "\n", System.getProperty( "line.separator" ) ) )
diff --git a/src/it/full-pom/pom.xml b/src/it/full-pom/pom.xml
index c6e92f3..ff4ef62 100644
--- a/src/it/full-pom/pom.xml
+++ b/src/it/full-pom/pom.xml
@@ -174,7 +174,7 @@
           <artifactId>maven-site-plugin</artifactId>
           <version>@sitePluginVersion@</version>
           <configuration>
-            <locales>en,cs,de,en,es,fr,gl,hu,it,ja,ko,lt,nl,no,pl,pt,pt_BR,ru,sk,sv,tr,zh_CN,zh_TW</locales>
+            <locales>default,en,cs,de,en,es,fr,gl,hu,it,ja,ko,lt,nl,no,pl,pt,pt_BR,ru,sk,sv,tr,zh_CN,zh_TW</locales>
           </configuration>
         </plugin>
       </plugins>
diff --git a/src/it/minimal-pom/pom.xml b/src/it/minimal-pom/pom.xml
index a2c013b..0c92814 100644
--- a/src/it/minimal-pom/pom.xml
+++ b/src/it/minimal-pom/pom.xml
@@ -44,7 +44,7 @@
           <artifactId>maven-site-plugin</artifactId>
           <version>@sitePluginVersion@</version>
           <configuration>
-            <locales>en,cs,de,es,fr,hu,it,ja,ko,nl,no,pl,pt,pt_BR,sk,sv,tr,zh_CN,zh_TW</locales>
+            <locales>default,en,cs,de,es,fr,hu,it,ja,ko,nl,no,pl,pt,pt_BR,sk,sv,tr,zh_CN,zh_TW</locales>
           </configuration>
         </plugin>
       </plugins>
diff --git a/src/it/multi-module/pom.xml b/src/it/multi-module/pom.xml
index 60cd695..cccb3d0 100644
--- a/src/it/multi-module/pom.xml
+++ b/src/it/multi-module/pom.xml
@@ -26,7 +26,7 @@
   <parent>
     <groupId>org.apache</groupId>
     <artifactId>apache</artifactId>
-    <version>16</version>
+    <version>28</version>
   </parent>
 
   <groupId>org.apache.maven.plugins.project-info-reports.its</groupId>
@@ -79,9 +79,6 @@
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-site-plugin</artifactId>
         <version>@sitePluginVersion@</version>
-        <configuration>
-          <locales>en</locales>
-        </configuration>
       </plugin>
     </plugins>
   </build>
diff --git a/src/it/multi-module/verify.groovy b/src/it/multi-module/verify.groovy
index 7fdfb6b..afc2cb4 100644
--- a/src/it/multi-module/verify.groovy
+++ b/src/it/multi-module/verify.groovy
@@ -21,5 +21,5 @@ File mainDependencies = new File( basedir, 'main/target/site/dependencies.html'
 
 // Dependency File Details section should display dep-1.0-SNAPSHOT.jar packaged from previous build (package phase),
 // not dep/target/classes from current build (site phase)
-assert !mainDependencies.text.contains( '<td align="left">dep/target/classes</td>' )
-assert mainDependencies.text.contains( '<td align="left">dep-1.0-SNAPSHOT.jar</td>' )
+assert !mainDependencies.text.contains( '<td style="text-align: left;">dep/target/classes</td>' )
+assert mainDependencies.text.contains( '<td style="text-align: left;">dep-1.0-SNAPSHOT.jar</td>' )
diff --git a/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoRenderer.java b/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoRenderer.java
index 26ea74b..90d9cbc 100644
--- a/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoRenderer.java
+++ b/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoRenderer.java
@@ -105,41 +105,5 @@ public abstract class AbstractProjectInfoRenderer
         }
     }
 
-    /* FIXME The next two methods need to be retained until Doxia and Maven Reporting Impl properly implement
-     * the difference of a (boxed) real verbatim text and (boxed) source code.
-     */
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected void verbatimText( String text )
-    {
-        sink.verbatim( null );
-
-        text( text );
-
-        sink.verbatim_();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected void verbatimLink( String text, String href )
-    {
-        if ( StringUtils.isEmpty( href ) )
-        {
-            verbatimText( text );
-        }
-        else
-        {
-            sink.verbatim( null );
-
-            link( href, text );
-
-            sink.verbatim_();
-        }
-    }
-
     protected abstract String getI18Nsection();
 }
diff --git a/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoReport.java b/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoReport.java
index 4d6f9c9..4a38938 100644
--- a/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoReport.java
+++ b/src/main/java/org/apache/maven/report/projectinfo/AbstractProjectInfoReport.java
@@ -102,14 +102,6 @@ public abstract class AbstractProjectInfoReport
     @Parameter( property = "project.pluginArtifactRepositories" )
     protected List<ArtifactRepository> pluginRepositories;
 
-    /**
-     * The reactor projects.
-     *
-     * @since 2.10
-     */
-    @Parameter( defaultValue = "${reactorProjects}", required = true, readonly = true )
-    protected List<MavenProject> reactorProjects;
-
     /**
      * The current user system settings for use in Maven.
      *
@@ -226,11 +218,6 @@ public abstract class AbstractProjectInfoReport
         return session;
     }
 
-    /**
-     * Reactor projects
-     *
-     * @return List of projects
-     */
     protected List<MavenProject> getReactorProjects()
     {
         return reactorProjects;
@@ -329,6 +316,7 @@ public abstract class AbstractProjectInfoReport
         return getI18nString( locale, "description" );
     }
 
+    // TODO Review, especially Locale.getDefault()
     private static class CustomI18N
         implements I18N
     {
diff --git a/src/main/java/org/apache/maven/report/projectinfo/DependencyConvergenceReport.java b/src/main/java/org/apache/maven/report/projectinfo/DependencyConvergenceReport.java
index cefe5cf..2ba429e 100644
--- a/src/main/java/org/apache/maven/report/projectinfo/DependencyConvergenceReport.java
+++ b/src/main/java/org/apache/maven/report/projectinfo/DependencyConvergenceReport.java
@@ -300,7 +300,7 @@ public class DependencyConvergenceReport
     private void generateDependencyDetails( Locale locale, Sink sink, List<ReverseDependencyLink> depList )
     {
         sink.table();
-        sink.tableRows( null, false );
+        sink.tableRows();
 
         Map<String, List<ReverseDependencyLink>> artifactMap = getSortedUniqueArtifactMap( depList );
 
@@ -315,7 +315,7 @@ public class DependencyConvergenceReport
         sink.tableCell();
 
         sink.table();
-        sink.tableRows( null, false );
+        sink.tableRows();
 
         for ( String version : artifactMap.keySet() )
         {
@@ -523,7 +523,7 @@ public class DependencyConvergenceReport
     private void generateLegend( Locale locale, Sink sink )
     {
         sink.table();
-        sink.tableRows( null, false );
+        sink.tableRows();
         sink.tableCaption();
         sink.bold();
         sink.text( getI18nString( locale, "legend" ) );
@@ -564,7 +564,7 @@ public class DependencyConvergenceReport
 
         // Create report
         sink.table();
-        sink.tableRows( null, false );
+        sink.tableRows();
         sink.tableCaption();
         sink.bold();
         sink.text( getI18nString( locale, "stats.caption" ) );
diff --git a/src/main/java/org/apache/maven/report/projectinfo/TeamReport.java b/src/main/java/org/apache/maven/report/projectinfo/TeamReport.java
index 4ff61b1..30e242f 100644
--- a/src/main/java/org/apache/maven/report/projectinfo/TeamReport.java
+++ b/src/main/java/org/apache/maven/report/projectinfo/TeamReport.java
@@ -266,7 +266,7 @@ public class TeamReport
                     }
                     else
                     {
-                        tableCell( "<a name=\"" + id + "\"></a>" + id, true );
+                        tableCell( "<a id=\"" + id + "\"></a>" + id, true );
                     }
                 }
             }
diff --git a/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java b/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java
index 02f848a..f32dd77 100644
--- a/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java
+++ b/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java
@@ -43,7 +43,6 @@ import org.apache.maven.artifact.Artifact;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
-import org.apache.maven.doxia.util.HtmlTools;
 import org.apache.maven.model.License;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
@@ -96,11 +95,6 @@ public class DependenciesRenderer
     /** Used to format file length values */
     private final DecimalFormat fileLengthDecimalFormat;
 
-    /**
-     * @since 2.1.1
-     */
-    private int section;
-
     /** Counter for unique IDs that is consistent across generations. */
     private int idCounter = 0;
 
@@ -236,124 +230,6 @@ public class DependenciesRenderer
         }
     }
 
-    // ----------------------------------------------------------------------
-    // Protected methods
-    // ----------------------------------------------------------------------
-
-    /** {@inheritDoc} */
-    // workaround for MPIR-140
-    // TODO Remove me when MSHARED-390 has been resolved
-    @Override
-    protected void startSection( String name )
-    {
-        startSection( name, name );
-    }
-
-    /**
-     * Start section with a name and a specific anchor.
-     *
-     * @param anchor not null
-     * @param name not null
-     */
-    // TODO Remove me when MSHARED-390 has been resolved
-    protected void startSection( String anchor, String name )
-    {
-        section = section + 1;
-
-        super.sink.anchor( HtmlTools.encodeId( anchor ) );
-        super.sink.anchor_();
-
-        switch ( section )
-        {
-            case 1:
-                sink.section1();
-                sink.sectionTitle1();
-                break;
-            case 2:
-                sink.section2();
-                sink.sectionTitle2();
-                break;
-            case 3:
-                sink.section3();
-                sink.sectionTitle3();
-                break;
-            case 4:
-                sink.section4();
-                sink.sectionTitle4();
-                break;
-            case 5:
-                sink.section5();
-                sink.sectionTitle5();
-                break;
-
-            default:
-                // TODO: warning - just don't start a section
-                break;
-        }
-
-        text( name );
-
-        switch ( section )
-        {
-            case 1:
-                sink.sectionTitle1_();
-                break;
-            case 2:
-                sink.sectionTitle2_();
-                break;
-            case 3:
-                sink.sectionTitle3_();
-                break;
-            case 4:
-                sink.sectionTitle4_();
-                break;
-            case 5:
-                sink.sectionTitle5_();
-                break;
-
-            default:
-                // TODO: warning - just don't start a section
-                break;
-        }
-    }
-
-    /** {@inheritDoc} */
-    // workaround for MPIR-140
-    // TODO Remove me when MSHARED-390 has been resolved
-    @Override
-    protected void endSection()
-    {
-        switch ( section )
-        {
-            case 1:
-                sink.section1_();
-                break;
-            case 2:
-                sink.section2_();
-                break;
-            case 3:
-                sink.section3_();
-                break;
-            case 4:
-                sink.section4_();
-                break;
-            case 5:
-                sink.section5_();
-                break;
-
-            default:
-                // TODO: warning - just don't start a section
-                break;
-        }
-
-        section = section - 1;
-
-        if ( section < 0 )
-        {
-            throw new IllegalStateException( "Too many closing sections" );
-        }
-    }
-
     // ----------------------------------------------------------------------
     // Private methods
     // ----------------------------------------------------------------------
@@ -462,7 +338,7 @@ public class DependenciesRenderer
         PrintWriter pw = new PrintWriter( sw );
 
         pw.println( "" );
-        pw.println( "<script language=\"javascript\" type=\"text/javascript\">" );
+        pw.println( "<script>" );
         pw.println( "      function toggleDependencyDetails( divId, imgId )" );
         pw.println( "      {" );
         pw.println( "        var div = document.getElementById( divId );" );
@@ -742,7 +618,7 @@ public class DependenciesRenderer
             String anchorByScope =
                 ( isTransitive ? getI18nString( "transitive.title" ) + "_" + scope : getI18nString( "title" ) + "_"
                     + scope );
-            startSection( anchorByScope, scope );
+            startSection( scope, anchorByScope );
 
             paragraph( getI18nString( "intro." + scope ) );
 
@@ -910,8 +786,7 @@ public class DependenciesRenderer
 
                 List<License> licenses = artifactProject.getLicenses();
 
-                sink.table();
-                sink.tableRows( null, false );
+                startTable();
 
                 sink.tableRow();
                 sink.tableHeaderCell();
@@ -1008,8 +883,7 @@ public class DependenciesRenderer
                 sink.tableCell_();
                 sink.tableRow_();
 
-                sink.tableRows_();
-                sink.table_();
+                endTable();
             }
             catch ( ProjectBuildingException e )
             {
@@ -1028,8 +902,7 @@ public class DependenciesRenderer
         }
         else
         {
-            sink.table();
-            sink.tableRows( null, false );
+            startTable();
 
             sink.tableRow();
             sink.tableHeaderCell();
@@ -1060,8 +933,7 @@ public class DependenciesRenderer
             sink.tableCell_();
             sink.tableRow_();
 
-            sink.tableRows_();
-            sink.table_();
+            endTable();
         }
 
         sink.rawText( "</div>" );
diff --git a/src/test/java/org/apache/maven/report/projectinfo/AbstractProjectInfoTestCase.java b/src/test/java/org/apache/maven/report/projectinfo/AbstractProjectInfoTestCase.java
index 4ae02ca..f1e767d 100644
--- a/src/test/java/org/apache/maven/report/projectinfo/AbstractProjectInfoTestCase.java
+++ b/src/test/java/org/apache/maven/report/projectinfo/AbstractProjectInfoTestCase.java
@@ -21,8 +21,10 @@ package org.apache.maven.report.projectinfo;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.Locale;
+import java.util.Collections;
+import java.util.List;
 
+import org.apache.maven.doxia.tools.SiteTool;
 import org.apache.maven.plugin.LegacySupport;
 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
 import org.apache.maven.plugin.testing.ArtifactStubFactory;
@@ -38,6 +40,8 @@ import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
 import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.repository.LocalRepository;
 
+import com.meterware.httpunit.HttpUnitOptions;
+
 /**
  * Abstract class to test reports generation with <a href="http://www.httpunit.org/">HTTPUnit</a> framework.
  *
@@ -50,11 +54,6 @@ public abstract class AbstractProjectInfoTestCase
 {
     private ArtifactStubFactory artifactStubFactory;
 
-    /**
-     * The default locale is English.
-     */
-    protected static final Locale DEFAULT_LOCALE = Locale.ENGLISH;
-
     /**
      * The current project to be test.
      */
@@ -72,14 +71,13 @@ public abstract class AbstractProjectInfoTestCase
         // required for mojo lookups to work
         super.setUp();
 
+        HttpUnitOptions.setScriptingEnabled( false );
+
         i18n = getContainer().lookup( I18N.class );
         setVariableValueToObject( i18n, "defaultBundleName", "project-info-reports" );
 
         artifactStubFactory = new DependencyArtifactStubFactory( getTestFile( "target" ), true, false );
         artifactStubFactory.getWorkingDir().mkdirs();
-
-        // Set the default Locale
-        Locale.setDefault( DEFAULT_LOCALE );
     }
 
     @Override
@@ -102,7 +100,7 @@ public abstract class AbstractProjectInfoTestCase
             throw new IllegalArgumentException( "The key cannot be empty" );
         }
 
-        return i18n.getString( key, Locale.getDefault() ).trim();
+        return i18n.getString( key, SiteTool.DEFAULT_LOCALE ).trim();
     }
 
     /**
@@ -153,7 +151,7 @@ public abstract class AbstractProjectInfoTestCase
         File report = new File( outputDirectory, name );
         if ( !report.exists() )
         {
-            throw new IOException( "File not found. Attempted :" + report );
+            throw new IOException( "File not found. Attempted: " + report );
         }
 
         return report;
@@ -179,7 +177,7 @@ public abstract class AbstractProjectInfoTestCase
         throws Exception
     {
         AbstractProjectInfoReport mojo = (AbstractProjectInfoReport) lookupMojo( goal, pluginXmlFile );
-        assertNotNull( "Mojo found.", mojo );
+        assertNotNull( "Mojo not found.", mojo );
 
         LegacySupport legacySupport = lookup( LegacySupport.class );
         legacySupport.setSession( newMavenSession( new MavenProjectStub() ) );
@@ -187,9 +185,13 @@ public abstract class AbstractProjectInfoTestCase
             (DefaultRepositorySystemSession) legacySupport.getRepositorySession();
         repoSession.setLocalRepositoryManager( new SimpleLocalRepositoryManagerFactory().newInstance( repoSession, new LocalRepository( artifactStubFactory.getWorkingDir() ) ) );
 
+        List<MavenProject> reactorProjects = mojo.getReactorProjects() != null ? mojo.getReactorProjects() : Collections.emptyList();
+
         setVariableValueToObject( mojo, "session", legacySupport.getSession() );
+        setVariableValueToObject( mojo, "reactorProjects", reactorProjects );
         setVariableValueToObject( mojo, "remoteRepositories", mojo.getProject().getRemoteArtifactRepositories() );
         setVariableValueToObject( mojo, "pluginRepositories", mojo.getProject().getPluginArtifactRepositories() );
+        setVariableValueToObject( mojo, "siteDirectory", new File( mojo.getProject().getBasedir(), "src/site" ) );
         return mojo;
     }
 
diff --git a/src/test/java/org/apache/maven/report/projectinfo/CiManagementReportTest.java b/src/test/java/org/apache/maven/report/projectinfo/CiManagementReportTest.java
index 027c328..2acf6a5 100644
--- a/src/test/java/org/apache/maven/report/projectinfo/CiManagementReportTest.java
+++ b/src/test/java/org/apache/maven/report/projectinfo/CiManagementReportTest.java
@@ -69,9 +69,9 @@ public class CiManagementReportTest
         assertEquals( expectedTitle, response.getTitle() );
 
         // Test the texts
-        TextBlock[] textBlocks = response.getTextBlocks();
-        assertEquals( getString( "report.ci-management.name" ), textBlocks[0].getText() );
-        assertEquals( getString( "report.ci-management.nocim" ), textBlocks[1].getText() );
+        TextBlock[] textBlocks = response. getTextBlocks();
+        assertEquals( getString( "report.ci-management.name" ), textBlocks[1].getText() );
+        assertEquals( getString( "report.ci-management.nocim" ), textBlocks[2].getText() );
     }
 
     /**
@@ -99,9 +99,10 @@ public class CiManagementReportTest
 
         // Test the texts
         TextBlock[] textBlocks = response.getTextBlocks();
-        assertTrue( textBlocks[1].getText().startsWith( "This project uses " ) );
-        assertEquals(3, textBlocks[1].getNode().getChildNodes().getLength());
-        HTMLAnchorElement anchor = (HTMLAnchorElement) textBlocks[1].getNode().getChildNodes().item( 1 );
+        TextBlock textBlock = textBlocks[2];
+        assertTrue( textBlock.getText().startsWith( "This project uses " ) );
+        assertEquals(3, textBlock.getNode().getChildNodes().getLength());
+        HTMLAnchorElement anchor = (HTMLAnchorElement) textBlock.getNode().getChildNodes().item( 1 );
         assertEquals( "https://www.jetbrains.com/teamcity/", anchor.getAttribute( "href" ) );
         assertEquals( "TeamCity", anchor.getFirstChild().getNodeValue() );
     }
diff --git a/src/test/java/org/apache/maven/report/projectinfo/DependencyConvergenceReportTest.java b/src/test/java/org/apache/maven/report/projectinfo/DependencyConvergenceReportTest.java
index 91768f2..d10f836 100644
--- a/src/test/java/org/apache/maven/report/projectinfo/DependencyConvergenceReportTest.java
+++ b/src/test/java/org/apache/maven/report/projectinfo/DependencyConvergenceReportTest.java
@@ -69,6 +69,6 @@ public class DependencyConvergenceReportTest
 
         // Test the texts
         TextBlock[] textBlocks = response.getTextBlocks();
-        assertEquals( getString( "report.dependency-convergence.reactor.name" ), textBlocks[0].getText() );
+        assertEquals( getString( "report.dependency-convergence.reactor.name" ), textBlocks[1].getText() );
     }
 }
diff --git a/src/test/java/org/apache/maven/report/projectinfo/DependencyManagementReportTest.java b/src/test/java/org/apache/maven/report/projectinfo/DependencyManagementReportTest.java
index 143cb2d..ea86af2 100644
--- a/src/test/java/org/apache/maven/report/projectinfo/DependencyManagementReportTest.java
+++ b/src/test/java/org/apache/maven/report/projectinfo/DependencyManagementReportTest.java
@@ -78,7 +78,7 @@ public class DependencyManagementReportTest
 
         // Test the texts
         TextBlock[] textBlocks = response.getTextBlocks();
-        assertEquals( getString( "report.dependency-management.title" ), textBlocks[0].getText() );
-        assertEquals( "test", textBlocks[1].getText() );
+        assertEquals( getString( "report.dependency-management.title" ), textBlocks[1].getText() );
+        assertEquals( "test", textBlocks[2].getText() );
     }
 }
diff --git a/src/test/java/org/apache/maven/report/projectinfo/IndexReportTest.java b/src/test/java/org/apache/maven/report/projectinfo/IndexReportTest.java
index ccd6e37..cd6897e 100644
--- a/src/test/java/org/apache/maven/report/projectinfo/IndexReportTest.java
+++ b/src/test/java/org/apache/maven/report/projectinfo/IndexReportTest.java
@@ -71,7 +71,7 @@ public class IndexReportTest
         // Test the texts
         TextBlock[] textBlocks = response.getTextBlocks();
         assertEquals( getString( "report.index.title" ) + " " + getTestMavenProject().getName(),
-                      textBlocks[0].getText() );
-        assertEquals( getString( "report.index.nodescription" ), textBlocks[1].getText() );
+                      textBlocks[1].getText() );
+        assertEquals( getString( "report.index.nodescription" ), textBlocks[2].getText() );
     }
 }
diff --git a/src/test/java/org/apache/maven/report/projectinfo/IssueManagementReportTest.java b/src/test/java/org/apache/maven/report/projectinfo/IssueManagementReportTest.java
index 0f235bf..414b96b 100644
--- a/src/test/java/org/apache/maven/report/projectinfo/IssueManagementReportTest.java
+++ b/src/test/java/org/apache/maven/report/projectinfo/IssueManagementReportTest.java
@@ -70,7 +70,7 @@ public class IssueManagementReportTest
 
         // Test the links
         WebLink[] weblinks = response.getLinks();
-        assertEquals( 3, weblinks.length );
+        assertEquals( 4, weblinks.length );
 
         assertEquals( "JIRA", weblinks[1].getText() );
 
@@ -78,8 +78,8 @@ public class IssueManagementReportTest
 
         // Test the texts
         TextBlock[] textBlocks = response.getTextBlocks();
-        assertEquals( getString( "report.issue-management.overview.title" ), textBlocks[0].getText() );
-        assertEquals( "This project uses JIRA.", textBlocks[1].getText() ); // due to link pattern
-        assertEquals( getString( "report.issue-management.name" ), textBlocks[2].getText() );
+        assertEquals( getString( "report.issue-management.overview.title" ), textBlocks[1].getText() );
+        assertEquals( "This project uses JIRA.", textBlocks[2].getText() ); // due to link pattern
+        assertEquals( getString( "report.issue-management.name" ), textBlocks[3].getText() );
     }
 }
diff --git a/src/test/java/org/apache/maven/report/projectinfo/LicensesReportTest.java b/src/test/java/org/apache/maven/report/projectinfo/LicensesReportTest.java
index 95fdf52..1ca2492 100644
--- a/src/test/java/org/apache/maven/report/projectinfo/LicensesReportTest.java
+++ b/src/test/java/org/apache/maven/report/projectinfo/LicensesReportTest.java
@@ -70,15 +70,15 @@ public class LicensesReportTest
 
         // Test the texts
         TextBlock[] textBlocks = response.getTextBlocks();
-        assertEquals( getString( "report.licenses.overview.title" ), textBlocks[0].getText() );
-        assertEquals( getString( "report.licenses.overview.intro" ), textBlocks[1].getText() );
-        assertEquals( getString( "report.licenses.title" ), textBlocks[2].getText() );
-        assertEquals( "The Apache Software License, Version 2.0", textBlocks[3].getText() );
+        assertEquals( getString( "report.licenses.overview.title" ), textBlocks[1].getText() );
+        assertEquals( getString( "report.licenses.overview.intro" ), textBlocks[2].getText() );
+        assertEquals( getString( "report.licenses.title" ), textBlocks[3].getText() );
+        assertEquals( "The Apache Software License, Version 2.0", textBlocks[4].getText() );
 
         // only 1 link in default report
         final WebLink[] links = response.getLinks();
-        assertEquals( 1, links.length );
-        assertEquals( "http://maven.apache.org/", links[0].getURLString() );
+        assertEquals( 2, links.length );
+        assertEquals( "http://maven.apache.org/", links[1].getURLString() );
     }
 
     public void testReportLinksOnly()
@@ -105,15 +105,15 @@ public class LicensesReportTest
 
         // Test the texts
         TextBlock[] textBlocks = response.getTextBlocks();
-        assertEquals( getString( "report.licenses.overview.title" ), textBlocks[0].getText() );
-        assertEquals( getString( "report.licenses.overview.intro" ), textBlocks[1].getText() );
-        assertEquals( getString( "report.licenses.title" ), textBlocks[2].getText() );
-        assertEquals( "The Apache Software License, Version 2.0", textBlocks[3].getText() );
+        assertEquals( getString( "report.licenses.overview.title" ), textBlocks[1].getText() );
+        assertEquals( getString( "report.licenses.overview.intro" ), textBlocks[2].getText() );
+        assertEquals( getString( "report.licenses.title" ), textBlocks[3].getText() );
+        assertEquals( "The Apache Software License, Version 2.0", textBlocks[4].getText() );
 
         // here's our specific test
         final WebLink[] links = response.getLinks();
-        assertEquals( 2, links.length );
-        assertEquals( "http://maven.apache.org/", links[0].getURLString() );
+        assertEquals( 3, links.length );
+        assertEquals( "http://maven.apache.org", links[0].getURLString() );
         assertEquals( "https://www.apache.org/licenses/LICENSE-2.0.txt", links[1].getURLString() );
         assertEquals( "https://www.apache.org/licenses/LICENSE-2.0.txt", links[1].getText() );
     }
diff --git a/src/test/java/org/apache/maven/report/projectinfo/MailingListsReportTest.java b/src/test/java/org/apache/maven/report/projectinfo/MailingListsReportTest.java
index 2a96e15..61c2a50 100644
--- a/src/test/java/org/apache/maven/report/projectinfo/MailingListsReportTest.java
+++ b/src/test/java/org/apache/maven/report/projectinfo/MailingListsReportTest.java
@@ -20,7 +20,6 @@ package org.apache.maven.report.projectinfo;
  */
 
 import java.net.URL;
-import java.util.Locale;
 
 import com.meterware.httpunit.GetMethodWebRequest;
 import com.meterware.httpunit.TextBlock;
@@ -71,8 +70,8 @@ public class MailingListsReportTest
 
         // Test the texts
         TextBlock[] textBlocks = response.getTextBlocks();
-        assertEquals( getString( "report.mailing-lists.title" ), textBlocks[0].getText() );
-        assertEquals( getString( "report.mailing-lists.intro" ), textBlocks[1].getText() );
+        assertEquals( getString( "report.mailing-lists.title" ), textBlocks[1].getText() );
+        assertEquals( getString( "report.mailing-lists.intro" ), textBlocks[2].getText() );
 
         // MPIR-385 + MPIR-401: Test links are URIs otherwise assume a plain email address
         String post = getString("report.mailing-lists.column.post");
@@ -97,19 +96,8 @@ public class MailingListsReportTest
     public void testFrenchReport()
         throws Exception
     {
-        Locale oldLocale = Locale.getDefault();
-
-        try
-        {
-            Locale.setDefault( Locale.FRENCH );
-
-            generateReport( "mailing-lists", "mailing-lists-plugin-config.xml" );
-            assertTrue( "Test html generated", getGeneratedReport( "mailing-lists.html" ).exists() );
-        }
-        finally
-        {
-            Locale.setDefault( oldLocale );
-        }
+        generateReport( "mailing-lists", "mailing-lists-plugin-config-fr.xml" );
+        assertTrue( "Test html generated", getGeneratedReport( "mailing-lists.html" ).exists() );
     }
 
     /**
diff --git a/src/test/java/org/apache/maven/report/projectinfo/ModulesReportTest.java b/src/test/java/org/apache/maven/report/projectinfo/ModulesReportTest.java
index 7a1463a..ae98a70 100644
--- a/src/test/java/org/apache/maven/report/projectinfo/ModulesReportTest.java
+++ b/src/test/java/org/apache/maven/report/projectinfo/ModulesReportTest.java
@@ -87,9 +87,10 @@ public class ModulesReportTest
 
         // Test the texts
         TextBlock[] textBlocks = response.getTextBlocks();
-        assertEquals( 2, textBlocks.length );
-        assertEquals( getString( "report.modules.title" ), textBlocks[0].getText() );
-        assertEquals( getString( "report.modules.intro" ), textBlocks[1].getText() );
+        // Last one is footer noise
+        assertEquals( 4, textBlocks.length - 1 );
+        assertEquals( getString( "report.modules.title" ), textBlocks[1].getText() );
+        assertEquals( getString( "report.modules.intro" ), textBlocks[2].getText() );
 
         String[][] cellTexts = response.getTables()[0].asText();
         assertEquals( 3, cellTexts.length );
diff --git a/src/test/java/org/apache/maven/report/projectinfo/PluginManagementReportTest.java b/src/test/java/org/apache/maven/report/projectinfo/PluginManagementReportTest.java
index 68cd90e..3de654d 100644
--- a/src/test/java/org/apache/maven/report/projectinfo/PluginManagementReportTest.java
+++ b/src/test/java/org/apache/maven/report/projectinfo/PluginManagementReportTest.java
@@ -114,7 +114,7 @@ public class PluginManagementReportTest
 
         // Test the texts
         TextBlock[] textBlocks = response.getTextBlocks();
-        assertEquals( getString( "report.plugin-management.title" ), textBlocks[0].getText() );
+        assertEquals( getString( "report.plugin-management.title" ), textBlocks[1].getText() );
     }
 
     /**
@@ -159,7 +159,7 @@ public class PluginManagementReportTest
 
         // Test the texts
         TextBlock[] textBlocks = response.getTextBlocks();
-        assertEquals( getString( "report.plugin-management.title" ), textBlocks[0].getText() );
+        assertEquals( getString( "report.plugin-management.title" ), textBlocks[1].getText() );
     }
 
     private static ProjectBuildingResult createProjectBuildingResult( Artifact artifact, String url )
diff --git a/src/test/java/org/apache/maven/report/projectinfo/ScmReportTest.java b/src/test/java/org/apache/maven/report/projectinfo/ScmReportTest.java
index 6f23220..05bec0d 100644
--- a/src/test/java/org/apache/maven/report/projectinfo/ScmReportTest.java
+++ b/src/test/java/org/apache/maven/report/projectinfo/ScmReportTest.java
@@ -72,13 +72,14 @@ public class ScmReportTest
 
         // Test the texts
         TextBlock[] textBlocks = response.getTextBlocks();
-        assertEquals( 6, textBlocks.length );
-        assertEquals( getString( "report.scm.overview.title" ), textBlocks[0].getText() );
-        assertEquals( getString( "report.scm.general.intro" ), textBlocks[1].getText() );
-        assertEquals( getString( "report.scm.webaccess.title" ), textBlocks[2].getText() );
-        assertEquals( getString( "report.scm.webaccess.nourl" ), textBlocks[3].getText() );
-        assertEquals( getString( "report.scm.accessbehindfirewall.title" ), textBlocks[4].getText() );
-        assertEquals( getString( "report.scm.accessbehindfirewall.general.intro" ), textBlocks[5].getText() );
+        // Last one is footer noise
+        assertEquals( 8, textBlocks.length - 1 );
+        assertEquals( getString( "report.scm.overview.title" ), textBlocks[1].getText() );
+        assertEquals( getString( "report.scm.general.intro" ), textBlocks[2].getText() );
+        assertEquals( getString( "report.scm.webaccess.title" ), textBlocks[3].getText() );
+        assertEquals( getString( "report.scm.webaccess.nourl" ), textBlocks[4].getText() );
+        assertEquals( getString( "report.scm.accessbehindfirewall.title" ), textBlocks[5].getText() );
+        assertEquals( getString( "report.scm.accessbehindfirewall.general.intro" ), textBlocks[6].getText() );
     }
 
     /**
diff --git a/src/test/java/org/apache/maven/report/projectinfo/SummaryReportTest.java b/src/test/java/org/apache/maven/report/projectinfo/SummaryReportTest.java
index a716488..5a7e560 100644
--- a/src/test/java/org/apache/maven/report/projectinfo/SummaryReportTest.java
+++ b/src/test/java/org/apache/maven/report/projectinfo/SummaryReportTest.java
@@ -70,10 +70,10 @@ public class SummaryReportTest
         // Test the texts
         TextBlock[] textBlocks = response.getTextBlocks();
 
-        assertEquals( getString( "report.summary.title" ), textBlocks[0].getText() );
-        assertEquals( getString( "report.summary.general.title" ), textBlocks[1].getText() );
-        assertEquals( getString( "report.summary.organization.title" ), textBlocks[2].getText() );
-        assertEquals( getString( "report.summary.noorganization" ), textBlocks[3].getText() );
-        assertEquals( getString( "report.summary.build.title" ), textBlocks[4].getText() );
+        assertEquals( getString( "report.summary.title" ), textBlocks[1].getText() );
+        assertEquals( getString( "report.summary.general.title" ), textBlocks[2].getText() );
+        assertEquals( getString( "report.summary.organization.title" ), textBlocks[3].getText() );
+        assertEquals( getString( "report.summary.noorganization" ), textBlocks[4].getText() );
+        assertEquals( getString( "report.summary.build.title" ), textBlocks[5].getText() );
     }
 }
diff --git a/src/test/java/org/apache/maven/report/projectinfo/TeamReportTest.java b/src/test/java/org/apache/maven/report/projectinfo/TeamReportTest.java
index 82d2c4d..37cbce6 100644
--- a/src/test/java/org/apache/maven/report/projectinfo/TeamReportTest.java
+++ b/src/test/java/org/apache/maven/report/projectinfo/TeamReportTest.java
@@ -78,14 +78,15 @@ public class TeamReportTest
 
         // Test the texts
         TextBlock[] textBlocks = response.getTextBlocks();
-        assertEquals( 7, textBlocks.length );
-        assertEquals( getString( "report.team.intro.title" ), textBlocks[0].getText() );
-        assertEquals( getString( "report.team.intro.description1" ), textBlocks[1].getText() );
-        assertEquals( getString( "report.team.intro.description2" ), textBlocks[2].getText() );
-        assertEquals( getString( "report.team.developers.title" ), textBlocks[3].getText() );
-        assertEquals( getString( "report.team.developers.intro" ), textBlocks[4].getText() );
-        assertEquals( getString( "report.team.contributors.title" ), textBlocks[5].getText() );
-        assertEquals( getString( "report.team.nocontributor" ), textBlocks[6].getText() );
+        // Last one is footer noise
+        assertEquals( 9, textBlocks.length - 1 );
+        assertEquals( getString( "report.team.intro.title" ), textBlocks[1].getText() );
+        assertEquals( getString( "report.team.intro.description1" ), textBlocks[2].getText() );
+        assertEquals( getString( "report.team.intro.description2" ), textBlocks[3].getText() );
+        assertEquals( getString( "report.team.developers.title" ), textBlocks[4].getText() );
+        assertEquals( getString( "report.team.developers.intro" ), textBlocks[5].getText() );
+        assertEquals( getString( "report.team.contributors.title" ), textBlocks[6].getText() );
+        assertEquals( getString( "report.team.nocontributor" ), textBlocks[7].getText() );
 
         WebTable[] tables = response.getTables();
         assertEquals(1, tables.length);
diff --git a/src/test/resources/plugin-configs/ci-management-plugin-config.xml b/src/test/resources/plugin-configs/ci-management-plugin-config.xml
index 1aede55..56eff3d 100644
--- a/src/test/resources/plugin-configs/ci-management-plugin-config.xml
+++ b/src/test/resources/plugin-configs/ci-management-plugin-config.xml
@@ -24,6 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>ci mangement project info</name>
+  <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -44,4 +45,4 @@ under the License.
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/src/test/resources/plugin-configs/ci-management-plugin-with-ci-section-config.xml b/src/test/resources/plugin-configs/ci-management-plugin-with-ci-section-config.xml
index 3ec898e..b329f91 100644
--- a/src/test/resources/plugin-configs/ci-management-plugin-with-ci-section-config.xml
+++ b/src/test/resources/plugin-configs/ci-management-plugin-with-ci-section-config.xml
@@ -24,6 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>ci management project info</name>
+  <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -48,4 +49,4 @@ under the License.
     <system>TeamCity</system>
     <url>https://example.com</url>
   </ciManagement>
-</project>
\ No newline at end of file
+</project>
diff --git a/src/test/resources/plugin-configs/dependency-convergence-plugin-config.xml b/src/test/resources/plugin-configs/dependency-convergence-plugin-config.xml
index 831f98e..e252f05 100644
--- a/src/test/resources/plugin-configs/dependency-convergence-plugin-config.xml
+++ b/src/test/resources/plugin-configs/dependency-convergence-plugin-config.xml
@@ -24,6 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>dependency convergence project info</name>
+  <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -48,4 +49,4 @@ under the License.
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/src/test/resources/plugin-configs/dependency-management-plugin-config.xml b/src/test/resources/plugin-configs/dependency-management-plugin-config.xml
index 867689a..7630a65 100644
--- a/src/test/resources/plugin-configs/dependency-management-plugin-config.xml
+++ b/src/test/resources/plugin-configs/dependency-management-plugin-config.xml
@@ -24,6 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>dependency management project info</name>
+  <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
diff --git a/src/test/resources/plugin-configs/index-plugin-config.xml b/src/test/resources/plugin-configs/index-plugin-config.xml
index 7827725..7cc0fc5 100644
--- a/src/test/resources/plugin-configs/index-plugin-config.xml
+++ b/src/test/resources/plugin-configs/index-plugin-config.xml
@@ -24,6 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>index project info</name>
+  <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -44,4 +45,4 @@ under the License.
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/src/test/resources/plugin-configs/issue-management-plugin-config.xml b/src/test/resources/plugin-configs/issue-management-plugin-config.xml
index 889df8c..56c6f49 100644
--- a/src/test/resources/plugin-configs/issue-management-plugin-config.xml
+++ b/src/test/resources/plugin-configs/issue-management-plugin-config.xml
@@ -24,6 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>issue management project info</name>
+  <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -48,4 +49,4 @@ under the License.
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/src/test/resources/plugin-configs/licenses-plugin-config-linkonly.xml b/src/test/resources/plugin-configs/licenses-plugin-config-linkonly.xml
index a6be1a9..62c3265 100644
--- a/src/test/resources/plugin-configs/licenses-plugin-config-linkonly.xml
+++ b/src/test/resources/plugin-configs/licenses-plugin-config-linkonly.xml
@@ -24,6 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>licenses project info</name>
+  <url>http://maven.apache.org</url>
   <licenses>
     <license>
       <name>The Apache Software License, Version 2.0</name>
@@ -54,4 +55,4 @@ under the License.
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/src/test/resources/plugin-configs/licenses-plugin-config.xml b/src/test/resources/plugin-configs/licenses-plugin-config.xml
index 88028d4..d03ba8e 100644
--- a/src/test/resources/plugin-configs/licenses-plugin-config.xml
+++ b/src/test/resources/plugin-configs/licenses-plugin-config.xml
@@ -24,6 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>licenses project info</name>
+  <url>http://maven.apache.org</url>
   <licenses>
     <license>
       <name>The Apache Software License, Version 2.0</name>
@@ -53,4 +54,4 @@ under the License.
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/src/test/resources/plugin-configs/mailing-lists-plugin-config.xml b/src/test/resources/plugin-configs/mailing-lists-plugin-config-fr.xml
similarity index 97%
copy from src/test/resources/plugin-configs/mailing-lists-plugin-config.xml
copy to src/test/resources/plugin-configs/mailing-lists-plugin-config-fr.xml
index 2cd6e45..c50e7eb 100644
--- a/src/test/resources/plugin-configs/mailing-lists-plugin-config.xml
+++ b/src/test/resources/plugin-configs/mailing-lists-plugin-config-fr.xml
@@ -24,6 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>mailing lists project info</name>
+  <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -52,6 +53,7 @@ under the License.
         <configuration>
           <outputDirectory>target/test-harness/mailing-lists</outputDirectory>
           <localRepository>${localRepository}</localRepository>
+          <locale>fr</locale>
           <project implementation="org.apache.maven.report.projectinfo.stubs.MailingListsStub"/>
         </configuration>
       </plugin>
diff --git a/src/test/resources/plugin-configs/mailing-lists-plugin-config-invalidlink.xml b/src/test/resources/plugin-configs/mailing-lists-plugin-config-invalidlink.xml
index 6f4cde9..3ed9413 100644
--- a/src/test/resources/plugin-configs/mailing-lists-plugin-config-invalidlink.xml
+++ b/src/test/resources/plugin-configs/mailing-lists-plugin-config-invalidlink.xml
@@ -24,6 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>mailing lists project info</name>
+  <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
diff --git a/src/test/resources/plugin-configs/mailing-lists-plugin-config.xml b/src/test/resources/plugin-configs/mailing-lists-plugin-config.xml
index 2cd6e45..c35c710 100644
--- a/src/test/resources/plugin-configs/mailing-lists-plugin-config.xml
+++ b/src/test/resources/plugin-configs/mailing-lists-plugin-config.xml
@@ -24,6 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>mailing lists project info</name>
+  <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
diff --git a/src/test/resources/plugin-configs/modules-plugin-config.xml b/src/test/resources/plugin-configs/modules-plugin-config.xml
index b78319e..1340a64 100644
--- a/src/test/resources/plugin-configs/modules-plugin-config.xml
+++ b/src/test/resources/plugin-configs/modules-plugin-config.xml
@@ -24,7 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>modules project info</name>
-
+  <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -33,12 +33,10 @@ under the License.
       <scope>test</scope>
     </dependency>
   </dependencies>
-
   <modules>
     <module>subproject1</module>
     <module>subproject2</module>
   </modules>
-
   <build>
     <plugins>
       <plugin>
@@ -51,4 +49,4 @@ under the License.
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/src/test/resources/plugin-configs/modules-variable-settings-interpolated-plugin-config.xml b/src/test/resources/plugin-configs/modules-variable-settings-interpolated-plugin-config.xml
index 318521c..1560b78 100644
--- a/src/test/resources/plugin-configs/modules-variable-settings-interpolated-plugin-config.xml
+++ b/src/test/resources/plugin-configs/modules-variable-settings-interpolated-plugin-config.xml
@@ -24,7 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>modules project info</name>
-
+  <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -33,11 +33,9 @@ under the License.
       <scope>test</scope>
     </dependency>
   </dependencies>
-
   <modules>
     <module>subproject-site-url</module>
   </modules>
-
   <build>
     <plugins>
       <plugin>
@@ -51,12 +49,10 @@ under the License.
       </plugin>
     </plugins>
   </build>
-  
   <distributionManagement>
     <site>
       <id>projectSite</id>
       <url>${sitePublishLocation}/foo/${project.artifactId}</url>
     </site>
   </distributionManagement>
-  
-</project>
\ No newline at end of file
+</project>
diff --git a/src/test/resources/plugin-configs/plugin-management-plugin-config-MPIR-375.xml b/src/test/resources/plugin-configs/plugin-management-plugin-config-MPIR-375.xml
index fc99bcd..114447a 100644
--- a/src/test/resources/plugin-configs/plugin-management-plugin-config-MPIR-375.xml
+++ b/src/test/resources/plugin-configs/plugin-management-plugin-config-MPIR-375.xml
@@ -24,11 +24,11 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>plugin management project info</name>
-
+  <url>http://maven.apache.org</url>
   <build>
     <pluginManagement>
       <plugins>
-        <!--This plugin's configuration is used to store Eclipse m2e settings only. 
+        <!--This plugin's configuration is used to store Eclipse m2e settings only.
           It has no influence on the Maven build itself. -->
         <plugin>
           <groupId>org.eclipse.m2e</groupId>
@@ -71,7 +71,7 @@ under the License.
           <outputDirectory>target/test-harness/plugin-management</outputDirectory>
           <localRepository>${localRepository}</localRepository>
           <project implementation="org.apache.maven.report.projectinfo.stubs.PluginManagementMPIR375Stub"/>
-          
+
           <pluginManagementExcludes>
             <pluginManagementExclude>org.eclipse.m2e:lifecycle-mapping</pluginManagementExclude>
           </pluginManagementExcludes>
diff --git a/src/test/resources/plugin-configs/plugin-management-plugin-config.xml b/src/test/resources/plugin-configs/plugin-management-plugin-config.xml
index c06ed75..ac962fe 100644
--- a/src/test/resources/plugin-configs/plugin-management-plugin-config.xml
+++ b/src/test/resources/plugin-configs/plugin-management-plugin-config.xml
@@ -24,6 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>plugin management project info</name>
+  <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -31,7 +32,6 @@ under the License.
       <version>3.8.1</version>
     </dependency>
   </dependencies>
-
   <build>
     <pluginManagement>
       <plugins>
diff --git a/src/test/resources/plugin-configs/scm-plugin-config.xml b/src/test/resources/plugin-configs/scm-plugin-config.xml
index cc4fa04..6f0cded 100644
--- a/src/test/resources/plugin-configs/scm-plugin-config.xml
+++ b/src/test/resources/plugin-configs/scm-plugin-config.xml
@@ -24,6 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>scm project info</name>
+  <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -50,4 +51,4 @@ under the License.
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/src/test/resources/plugin-configs/scm-wrong-url-plugin-config.xml b/src/test/resources/plugin-configs/scm-wrong-url-plugin-config.xml
index ce9c1eb..ceaf5ae 100644
--- a/src/test/resources/plugin-configs/scm-wrong-url-plugin-config.xml
+++ b/src/test/resources/plugin-configs/scm-wrong-url-plugin-config.xml
@@ -24,6 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>scm project info</name>
+  <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -45,4 +46,4 @@ under the License.
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/src/test/resources/plugin-configs/summary-plugin-config.xml b/src/test/resources/plugin-configs/summary-plugin-config.xml
index d47e9c8..e53e574 100644
--- a/src/test/resources/plugin-configs/summary-plugin-config.xml
+++ b/src/test/resources/plugin-configs/summary-plugin-config.xml
@@ -24,6 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>summary project info</name>
+  <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -44,4 +45,4 @@ under the License.
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/src/test/resources/plugin-configs/team-plugin-config.xml b/src/test/resources/plugin-configs/team-plugin-config.xml
index f94a7b6..d6f2f89 100644
--- a/src/test/resources/plugin-configs/team-plugin-config.xml
+++ b/src/test/resources/plugin-configs/team-plugin-config.xml
@@ -24,6 +24,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>team project info</name>
+  <url>http://maven.apache.org</url>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -61,4 +62,4 @@ under the License.
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>