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/11 22:37:49 UTC

[maven-plugin-tools] 01/01: Prepare for Doxia 2.0.0

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-plugin-tools.git

commit 7e686743397e0f46853ca6049bd9e73922e1d34a
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Thu Jul 21 18:03:20 2022 +0200

    Prepare for Doxia 2.0.0
---
 maven-plugin-plugin/pom.xml                        |  18 -
 .../plugin/plugin/report_old/PluginReport.java     | 803 ---------------------
 .../plugin/plugin/report_old/Requirements.java     |  94 ---
 .../plugin/report_old/RequirementsHistory.java     |  70 --
 .../EnhancedPluginDescriptorBuilder.java           | 104 ---
 .../src/main/resources/plugin-report.properties    |  54 --
 .../src/main/resources/plugin-report_de.properties |  54 --
 .../src/main/resources/plugin-report_en.properties |  23 -
 .../src/main/resources/plugin-report_fr.properties |  54 --
 .../src/main/resources/plugin-report_sv.properties |  54 --
 maven-plugin-report-plugin/pom.xml                 |  15 +-
 .../src/it/mplugin-187/invoker.properties          |   6 +-
 .../src/it/mplugin-187/pom.xml                     |   6 +-
 .../src/site/site.xml                              |  30 -
 .../src/it/plugin-report-annotations/pom.xml       |   2 +-
 .../it/plugin-report-with-javadoc-links/pom.xml    |   3 -
 .../plugin-report-with-javadoc-links/verify.groovy |   4 +-
 .../src/it/plugin-report/pom.xml                   |   5 +-
 .../maven/plugin/plugin/report/PluginReport.java   |   6 +-
 maven-plugin-tools-generators/pom.xml              |   3 +-
 .../plugin/generator/PluginXdocGenerator.java      |  21 +-
 pom.xml                                            |  57 +-
 22 files changed, 40 insertions(+), 1446 deletions(-)

diff --git a/maven-plugin-plugin/pom.xml b/maven-plugin-plugin/pom.xml
index 45ebafcc..48ee0dc7 100644
--- a/maven-plugin-plugin/pom.xml
+++ b/maven-plugin-plugin/pom.xml
@@ -95,16 +95,6 @@
       <optional>true</optional>
     </dependency>
 
-    <!-- doxia -->
-    <dependency>
-      <groupId>org.apache.maven.doxia</groupId>
-      <artifactId>doxia-sink-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven.doxia</groupId>
-      <artifactId>doxia-site-renderer</artifactId>
-    </dependency>
-
     <!-- Maven -->
     <dependency>
       <groupId>org.apache.maven</groupId>
@@ -128,12 +118,6 @@
       <scope>provided</scope>
     </dependency>
 
-    <!-- shared -->
-    <dependency>
-      <groupId>org.apache.maven.reporting</groupId>
-      <artifactId>maven-reporting-impl</artifactId>
-    </dependency>
-
     <!-- plexus -->
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
@@ -293,8 +277,6 @@
               <streamLogsOnFailures>true</streamLogsOnFailures>
               <showErrors>true</showErrors>
               <filterProperties>
-                <sitePluginVersion>3.12.1</sitePluginVersion>
-                <projectInfoReportsPlugin>3.4.1</projectInfoReportsPlugin>
                 <antVersion>${antVersion}</antVersion>
               </filterProperties>
               <properties>
diff --git a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report_old/PluginReport.java b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report_old/PluginReport.java
deleted file mode 100644
index 34f39632..00000000
--- a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report_old/PluginReport.java
+++ /dev/null
@@ -1,803 +0,0 @@
-package org.apache.maven.plugin.plugin.report_old;
-
-/*
- * 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.io.IOException;
-import java.io.Reader;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.ResourceBundle;
-
-import org.apache.maven.doxia.sink.Sink;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.plugin.descriptor.MojoDescriptor;
-import org.apache.maven.plugin.descriptor.PluginDescriptor;
-import org.apache.maven.plugin.descriptor.PluginDescriptorBuilder;
-import org.apache.maven.plugin.plugin.DescriptorGeneratorMojo;
-import org.apache.maven.plugins.annotations.Component;
-import org.apache.maven.plugins.annotations.Execute;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.plugins.plugin.descriptor_old.EnhancedPluginDescriptorBuilder;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.reporting.AbstractMavenReport;
-import org.apache.maven.reporting.AbstractMavenReportRenderer;
-import org.apache.maven.reporting.MavenReportException;
-import org.apache.maven.rtinfo.RuntimeInformation;
-import org.apache.maven.tools.plugin.DefaultPluginToolsRequest;
-import org.apache.maven.tools.plugin.PluginToolsRequest;
-import org.apache.maven.tools.plugin.generator.GeneratorException;
-import org.apache.maven.tools.plugin.generator.GeneratorUtils;
-import org.apache.maven.tools.plugin.generator.PluginXdocGenerator;
-import org.apache.maven.tools.plugin.util.PluginUtils;
-import org.codehaus.plexus.configuration.PlexusConfigurationException;
-import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.xml.XmlStreamReader;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-
-/**
- * Generates the Plugin's documentation report: <code>plugin-info.html</code> plugin overview page,
- * and one <code><i>goal</i>-mojo.html</code> per goal.
- * Relies on one output file from {@link DescriptorGeneratorMojo}.
- *
- * @author <a href="snicoll@apache.org">Stephane Nicoll</a>
- * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
- * @since 2.0
- * @deprecated use the maven-plugin-report-plugin instead
- */
-@Deprecated
-@Mojo( name = "report", threadSafe = true )
-@Execute( phase = LifecyclePhase.PROCESS_CLASSES )
-public class PluginReport
-    extends AbstractMavenReport
-{
-    /**
-     * Report output directory for mojos' documentation.
-     */
-    @Parameter( defaultValue = "${project.build.directory}/generated-site/xdoc" )
-    private File outputDirectory;
-
-    /**
-     * The file encoding of the source files.
-     *
-     * @deprecated not used in report, will be removed in the next major version
-     *
-     * @since 2.7
-     */
-    @Deprecated
-    @Parameter( property = "encoding", defaultValue = "${project.build.sourceEncoding}" )
-    private String encoding;
-
-    /**
-     * Specify some requirements to execute this plugin.
-     * Example:
-     * <pre>
-     * &lt;requirements&gt;
-     *   &lt;maven&gt;2.0&lt;/maven&gt;
-     *   &lt;jdk&gt;1.4&lt;/jdk&gt;
-     *   &lt;memory&gt;256m&lt;/memory&gt;
-     *   &lt;diskSpace&gt;1m&lt;/diskSpace&gt;
-     *   &lt;others&gt;
-     *     &lt;property&gt;
-     *       &lt;name&gt;SVN&lt;/name&gt;
-     *       &lt;value&gt;1.4.6&lt;/value&gt;
-     *     &lt;/property&gt;
-     *   &lt;/others&gt;
-     * &lt;/requirements&gt;
-     * </pre>
-     * <p>
-     * If not is specified, Maven requirement is extracted from
-     * <code>&lt;project&gt;&lt;prerequisites&gt;&lt;maven&gt;</code>
-     * and JDK requirement is extracted from maven-compiler-plugin configuration.
-     *
-     * @deprecated will be removed in the next major version, please don't use
-     */
-    @Deprecated
-    @Parameter
-    private Requirements requirements;
-
-    /**
-     * <p>
-     * The goal prefix that will appear before the ":".
-     * By default, this plugin applies a heuristic to derive a heuristic from
-     * the plugin's artifactId.
-     * </p>
-     * <p>
-     * It removes any occurrences of the regular expression <strong>-?maven-?</strong>,
-     * and then removes any occurrences of <strong>-?plugin-?</strong>.
-     * </p>
-     * <p>
-     * For example, horsefeature-maven-plugin becomes horsefeature.
-     * </p>
-     * <p>
-     * (There is a special case for maven-plugin-plugin: it is mapped to 'plugin')
-     * </p>
-     *
-     * @deprecated not used in report, will be removed in the next major version
-     *
-     * @since 2.4
-     */
-    @Deprecated
-    @Parameter( property = "goalPrefix" )
-    protected String goalPrefix;
-
-    /**
-     * Set this to "true" to skip invoking any goals or reports of the plugin.
-     *
-     * @deprecated use {@link #skip} parameter instead
-     *
-     * @since 2.8
-     */
-    @Deprecated
-    @Parameter( defaultValue = "false", property = "maven.plugin.skip" )
-    private boolean skipReport;
-
-    /**
-     * Set this to "true" to skip generating the report.
-     *
-     * @since 2.8
-     */
-    @Parameter( defaultValue = "false", property = "maven.plugin.report.skip" )
-    private boolean skip;
-
-    /**
-     * Set this to "true" to generate the usage section for "plugin-info.html" with
-     * {@code <extensions>true</extensions>}.
-     *
-     * @since 3.7.0
-     */
-    @Parameter( defaultValue = "false", property = "maven.plugin.report.hasExtensionsToLoad" )
-    private boolean hasExtensionsToLoad;
-
-    /**
-     * The Plugin requirements history list.
-     * <p>
-     * Can be specified as list of <code>requirementsHistory</code>:
-     *
-     * <pre>
-     * &lt;requirementsHistories&gt;
-     *   &lt;requirementsHistory&gt;
-     *     &lt;version&gt;plugin version&lt;/version&gt;
-     *     &lt;maven&gt;maven version&lt;/maven&gt;
-     *     &lt;jdk&gt;jdk version&lt;/jdk&gt;
-     *   &lt;/requirementsHistory&gt;
-     * &lt;/requirementsHistories&gt;
-     * </pre>
-     *
-     * @since 3.7.0
-     */
-    @Parameter
-    private List<RequirementsHistory> requirementsHistories = new ArrayList<>();
-
-    /**
-     * @since 3.5.1
-     */
-    @Component
-    private RuntimeInformation rtInfo;
-
-    /**
-     * Path to {@code plugin.xml} plugin descriptor to generate the report from.
-     *
-     * @since 3.5.1
-     * @deprecated No longer evaluated, use {@link #enhancedPluginXmlFile}.
-     */
-    @Parameter( defaultValue = "${project.build.outputDirectory}/META-INF/maven/plugin.xml", required = true,
-                readonly = true )
-    @Deprecated
-    private File pluginXmlFile;
-
-    /**
-     * Path to enhanced plugin descriptor to generate the report from (must contain some XHTML values)
-     *
-     * @since 3.7.0
-     */
-    @Parameter( defaultValue = "${project.build.directory}/plugin-enhanced.xml", required = true,
-                readonly = true )
-    private File enhancedPluginXmlFile;
-
-    /**
-     * In case the internal javadoc site has not been generated when running this report goal
-     * (e.g. when using an aggregator javadoc report) link validation needs to be disabled by setting
-     * this value to {@code true}.
-     * This might have the drawback that some links being generated in the report might be broken
-     * in case not all parameter types and javadoc link references are resolvable through the sites being given to
-     * {@link DescriptorGeneratorMojo}.
-     * 
-     * @since 3.7.0
-     */
-    @Parameter( property = "maven.plugin.report.disableInternalJavadocLinkValidation" )
-    private boolean disableInternalJavadocLinkValidation;
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected String getOutputDirectory()
-    {
-        // PLUGIN-191: output directory of plugin.html, not *-mojo.xml
-        return project.getReporting().getOutputDirectory();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public boolean canGenerateReport()
-    {
-        return enhancedPluginXmlFile != null && enhancedPluginXmlFile.isFile() && enhancedPluginXmlFile.canRead();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected void executeReport( Locale locale )
-        throws MavenReportException
-    {
-        getLog().warn( "The 'report' goal of the maven-plugin-plugin is deprecated, please use "
-                + "the 'report' goal from the maven-plugin-report-plugin instead. This goal will be removed "
-                + "in version 4.0.0." );
-
-        if ( skip || skipReport )
-        {
-            getLog().info( "Maven Plugin Plugin Report generation skipped." );
-            return;
-        }
-
-        PluginDescriptor pluginDescriptor = extractPluginDescriptor();
-
-        // Generate the mojos' documentation
-        generateMojosDocumentation( pluginDescriptor, locale );
-
-        // Write the overview
-        PluginOverviewRenderer r =
-            new PluginOverviewRenderer( getProject(), requirements, requirementsHistories, getSink(),
-                                        pluginDescriptor, locale, hasExtensionsToLoad );
-        r.render();
-    }
-
-    private PluginDescriptor extractPluginDescriptor()
-        throws MavenReportException
-    {
-        PluginDescriptorBuilder builder = new EnhancedPluginDescriptorBuilder( rtInfo );
-
-        try ( Reader input = new XmlStreamReader( Files.newInputStream( enhancedPluginXmlFile.toPath() ) ) )
-        {
-            return builder.build( input );
-        }
-        catch ( IOException | PlexusConfigurationException e )
-        {
-            throw new MavenReportException( "Error extracting plugin descriptor from " + enhancedPluginXmlFile, e );
-        }
-
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public String getDescription( Locale locale )
-    {
-        return getBundle( locale ).getString( "report.plugin.description" );
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public String getName( Locale locale )
-    {
-        return getBundle( locale ).getString( "report.plugin.name" );
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public String getOutputName()
-    {
-        return "plugin-info";
-    }
-
-    /**
-     * Generate the mojos documentation, as xdoc files.
-     *
-     * @param pluginDescriptor not null
-     * @param locale           not null
-     * @throws MavenReportException if any
-     */
-    private void generateMojosDocumentation( PluginDescriptor pluginDescriptor, Locale locale )
-        throws MavenReportException
-    {
-        try
-        {
-            File outputDir = outputDirectory;
-            outputDir.mkdirs();
-
-            PluginXdocGenerator generator = new PluginXdocGenerator( getProject(), locale, getReportOutputDirectory(),
-                                                                     disableInternalJavadocLinkValidation );
-            PluginToolsRequest pluginToolsRequest = new DefaultPluginToolsRequest( getProject(), pluginDescriptor );
-            generator.execute( outputDir, pluginToolsRequest );
-        }
-        catch ( GeneratorException e )
-        {
-            throw new MavenReportException( "Error writing plugin documentation", e );
-        }
-
-    }
-
-    /**
-     * @param locale not null
-     * @return the bundle for this report
-     */
-    protected static ResourceBundle getBundle( Locale locale )
-    {
-        return ResourceBundle.getBundle( "plugin-report", locale, PluginReport.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 MavenProject project;
-
-        private final Requirements requirements;
-
-        private final List<RequirementsHistory> requirementsHistories;
-
-        private final PluginDescriptor pluginDescriptor;
-
-        private final Locale locale;
-
-        private final boolean hasExtensionsToLoad;
-
-        /**
-         * @param project               not null
-         * @param requirements          not null
-         * @param requirementsHistories not null
-         * @param sink                  not null
-         * @param pluginDescriptor      not null
-         * @param locale                not null
-         */
-        PluginOverviewRenderer( MavenProject project, Requirements requirements,
-                                List<RequirementsHistory> requirementsHistories, Sink sink,
-                                PluginDescriptor pluginDescriptor, Locale locale, boolean hasExtensionsToLoad )
-        {
-            super( sink );
-
-            this.project = project;
-
-            this.requirements = ( requirements == null ? new Requirements() : requirements );
-
-            this.requirementsHistories = requirementsHistories;
-
-            this.pluginDescriptor = pluginDescriptor;
-
-            this.locale = locale;
-
-            this.hasExtensionsToLoad = hasExtensionsToLoad;
-        }
-
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public String getTitle()
-        {
-            return getBundle( locale ).getString( "report.plugin.title" );
-        }
-
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public void renderBody()
-        {
-            startSection( getTitle() );
-
-            if ( !( pluginDescriptor.getMojos() != null && pluginDescriptor.getMojos().size() > 0 ) )
-            {
-                paragraph( getBundle( locale ).getString( "report.plugin.goals.nogoal" ) );
-                endSection();
-                return;
-            }
-
-            paragraph( getBundle( locale ).getString( "report.plugin.goals.intro" ) );
-
-            boolean hasMavenReport = false;
-            for ( Iterator<MojoDescriptor> i = pluginDescriptor.getMojos().iterator(); i.hasNext(); )
-            {
-                MojoDescriptor mojo = i.next();
-
-                if ( GeneratorUtils.isMavenReport( mojo.getImplementation(), project ) )
-                {
-                    hasMavenReport = true;
-                }
-            }
-
-            startTable();
-
-            String goalColumnName = getBundle( locale ).getString( "report.plugin.goals.column.goal" );
-            String isMavenReport = getBundle( locale ).getString( "report.plugin.goals.column.isMavenReport" );
-            String descriptionColumnName = getBundle( locale ).getString( "report.plugin.goals.column.description" );
-            if ( hasMavenReport )
-            {
-                tableHeader( new String[] {goalColumnName, isMavenReport, descriptionColumnName} );
-            }
-            else
-            {
-                tableHeader( new String[] {goalColumnName, descriptionColumnName} );
-            }
-
-            List<MojoDescriptor> mojos = new ArrayList<>();
-            mojos.addAll( pluginDescriptor.getMojos() );
-            PluginUtils.sortMojos( mojos );
-            for ( MojoDescriptor mojo : mojos )
-            {
-                String goalName = mojo.getFullGoalName();
-
-                /*
-                 * Added ./ to define a relative path
-                 * @see AbstractMavenReportRenderer#getValidHref(java.lang.String)
-                 */
-                String goalDocumentationLink = "./" + mojo.getGoal() + "-mojo.html";
-
-                String description;
-                if ( StringUtils.isNotEmpty( mojo.getDeprecated() ) )
-                {
-                    description =
-                        "<strong>" + getBundle( locale ).getString( "report.plugin.goal.deprecated" ) + "</strong> "
-                            + mojo.getDeprecated();
-                }
-                else if ( StringUtils.isNotEmpty( mojo.getDescription() ) )
-                {
-                    description = mojo.getDescription();
-                }
-                else
-                {
-                    description = getBundle( locale ).getString( "report.plugin.goal.nodescription" );
-                }
-
-                sink.tableRow();
-                tableCell( createLinkPatternedText( goalName, goalDocumentationLink ) );
-                if ( hasMavenReport )
-                {
-                    if ( GeneratorUtils.isMavenReport( mojo.getImplementation(), project ) )
-                    {
-                        sink.tableCell();
-                        sink.text( getBundle( locale ).getString( "report.plugin.isReport" ) );
-                        sink.tableCell_();
-                    }
-                    else
-                    {
-                        sink.tableCell();
-                        sink.text( getBundle( locale ).getString( "report.plugin.isNotReport" ) );
-                        sink.tableCell_();
-                    }
-                }
-                tableCell( description, true );
-                sink.tableRow_();
-            }
-
-            endTable();
-
-            startSection( getBundle( locale ).getString( "report.plugin.systemrequirements" ) );
-
-            paragraph( getBundle( locale ).getString( "report.plugin.systemrequirements.intro" ) );
-
-            startTable();
-
-            String maven = discoverMavenRequirement( project, requirements );
-            sink.tableRow();
-            tableCell( getBundle( locale ).getString( "report.plugin.systemrequirements.maven" ) );
-            tableCell( ( maven != null
-                ? maven
-                : getBundle( locale ).getString( "report.plugin.systemrequirements.nominimum" ) ) );
-            sink.tableRow_();
-
-            String jdk = discoverJdkRequirement( project, requirements );
-            sink.tableRow();
-            tableCell( getBundle( locale ).getString( "report.plugin.systemrequirements.jdk" ) );
-            tableCell(
-                ( jdk != null ? jdk : getBundle( locale ).getString( "report.plugin.systemrequirements.nominimum" ) ) );
-            sink.tableRow_();
-
-            String memory = requirements.getMemory();
-            if ( StringUtils.isNotEmpty( memory ) )
-            {
-                sink.tableRow();
-                tableCell( getBundle( locale ).getString( "report.plugin.systemrequirements.memory" ) );
-                tableCell( memory );
-                sink.tableRow_();
-            }
-
-            String diskSpace = requirements.getDiskSpace();
-            if ( StringUtils.isNotEmpty( diskSpace ) )
-            {
-                sink.tableRow();
-                tableCell( getBundle( locale ).getString( "report.plugin.systemrequirements.diskspace" ) );
-                tableCell( diskSpace );
-                sink.tableRow_();
-            }
-
-            if ( requirements.getOthers() != null && requirements.getOthers().size() > 0 )
-            {
-                for ( Iterator it = requirements.getOthers().keySet().iterator(); it.hasNext(); )
-                {
-                    String key = it.next().toString();
-
-                    sink.tableRow();
-                    tableCell( key );
-                    tableCell( ( StringUtils.isNotEmpty( requirements.getOthers().getProperty( key ) )
-                        ? requirements.getOthers().getProperty( key )
-                        : getBundle( locale ).getString( "report.plugin.systemrequirements.nominimum" ) ) );
-                    sink.tableRow_();
-                }
-            }
-            endTable();
-
-            endSection();
-
-            renderRequirementsHistories();
-
-            renderUsageSection( hasMavenReport );
-
-            endSection();
-        }
-
-        private void renderRequirementsHistories()
-        {
-            if ( requirementsHistories.isEmpty() )
-            {
-                return;
-            }
-
-            startSection( getBundle( locale ).getString( "report.plugin.systemrequirements.history" ) );
-            paragraph( getBundle( locale ).getString( "report.plugin.systemrequirements.history.intro" ) );
-
-            startTable();
-            tableHeader( new String[] {
-                getBundle( locale ).getString( "report.plugin.systemrequirements.history.version" ),
-                getBundle( locale ).getString( "report.plugin.systemrequirements.history.maven" ),
-                getBundle( locale ).getString( "report.plugin.systemrequirements.history.jdk" )
-            } );
-
-            requirementsHistories.forEach(
-                requirementsHistory ->
-                {
-                    sink.tableRow();
-                    tableCell( requirementsHistory.getVersion() );
-                    tableCell( requirementsHistory.getMaven() );
-                    tableCell( requirementsHistory.getJdk() );
-                    sink.tableRow_();
-                } );
-            endTable();
-
-            endSection();
-        }
-
-        /**
-         * Render the section about the usage of the plugin.
-         *
-         * @param hasMavenReport If the plugin has a report or not
-         */
-        private void renderUsageSection( boolean hasMavenReport )
-        {
-            startSection( getBundle( locale ).getString( "report.plugin.usage" ) );
-
-            // Configuration
-            sink.paragraph();
-            text( getBundle( locale ).getString( "report.plugin.usage.intro" ) );
-            sink.paragraph_();
-
-            StringBuilder sb = new StringBuilder();
-            sb.append( "<project>" ).append( '\n' );
-            sb.append( "  ..." ).append( '\n' );
-            sb.append( "  <build>" ).append( '\n' );
-            sb.append(
-                "    <!-- " + getBundle( locale ).getString( "report.plugin.usage.pluginManagement" ) + " -->" ).append(
-                '\n' );
-            sb.append( "    <pluginManagement>" ).append( '\n' );
-            sb.append( "      <plugins>" ).append( '\n' );
-            sb.append( "        <plugin>" ).append( '\n' );
-            sb.append( "          <groupId>" ).append( pluginDescriptor.getGroupId() ).append( "</groupId>" ).append(
-                '\n' );
-            sb.append( "          <artifactId>" ).append( pluginDescriptor.getArtifactId() ).append(
-                "</artifactId>" ).append( '\n' );
-            sb.append( "          <version>" ).append( pluginDescriptor.getVersion() ).append( "</version>" ).append(
-                '\n' );
-            if ( hasExtensionsToLoad )
-            {
-                sb.append( "          <extensions>true</extensions>" ).append(
-                    '\n' );
-            }
-            sb.append( "        </plugin>" ).append( '\n' );
-            sb.append( "        ..." ).append( '\n' );
-            sb.append( "      </plugins>" ).append( '\n' );
-            sb.append( "    </pluginManagement>" ).append( '\n' );
-            sb.append( "    <!-- " + getBundle( locale ).getString( "report.plugin.usage.plugins" ) + " -->" ).append(
-                '\n' );
-            sb.append( "    <plugins>" ).append( '\n' );
-            sb.append( "      <plugin>" ).append( '\n' );
-            sb.append( "        <groupId>" ).append( pluginDescriptor.getGroupId() ).append( "</groupId>" ).append(
-                '\n' );
-            sb.append( "        <artifactId>" ).append( pluginDescriptor.getArtifactId() ).append(
-                "</artifactId>" ).append( '\n' );
-            sb.append( "      </plugin>" ).append( '\n' );
-            sb.append( "      ..." ).append( '\n' );
-            sb.append( "    </plugins>" ).append( '\n' );
-            sb.append( "  </build>" ).append( '\n' );
-
-            if ( hasMavenReport )
-            {
-                sb.append( "  ..." ).append( '\n' );
-                sb.append(
-                    "  <!-- " + getBundle( locale ).getString( "report.plugin.usage.reporting" ) + " -->" ).append(
-                    '\n' );
-                sb.append( "  <reporting>" ).append( '\n' );
-                sb.append( "    <plugins>" ).append( '\n' );
-                sb.append( "      <plugin>" ).append( '\n' );
-                sb.append( "        <groupId>" ).append( pluginDescriptor.getGroupId() ).append( "</groupId>" ).append(
-                    '\n' );
-                sb.append( "        <artifactId>" ).append( pluginDescriptor.getArtifactId() ).append(
-                    "</artifactId>" ).append( '\n' );
-                sb.append( "        <version>" ).append( pluginDescriptor.getVersion() ).append( "</version>" ).append(
-                    '\n' );
-                sb.append( "      </plugin>" ).append( '\n' );
-                sb.append( "      ..." ).append( '\n' );
-                sb.append( "    </plugins>" ).append( '\n' );
-                sb.append( "  </reporting>" ).append( '\n' );
-            }
-
-            sb.append( "  ..." ).append( '\n' );
-            sb.append( "</project>" ).append( '\n' );
-
-            verbatimText( sb.toString() );
-
-            sink.paragraph();
-            linkPatternedText( getBundle( locale ).getString( "report.plugin.configuration.end" ) );
-            sink.paragraph_();
-
-            endSection();
-        }
-
-        /**
-         * Try to lookup on the Maven prerequisites property.
-         * If not specified, uses the value defined by the user.
-         *
-         * @param project      not null
-         * @param requirements not null
-         * @return the Maven version
-         */
-        private static String discoverMavenRequirement( MavenProject project, Requirements requirements )
-        {
-            String maven = requirements.getMaven();
-            if ( maven == null )
-            {
-                maven = ( project.getPrerequisites() != null ? project.getPrerequisites().getMaven() : null );
-            }
-            if ( maven == null )
-            {
-                maven = "2.0";
-            }
-
-            return maven;
-        }
-
-        /**
-         * <ol>
-         * <li>use configured jdk requirement</li>
-         * <li>use <code>target</code> configuration of <code>org.apache.maven.plugins:maven-compiler-plugin</code></li>
-         * <li>use <code>target</code> configuration of <code>org.apache.maven.plugins:maven-compiler-plugin</code> in
-         * <code>pluginManagement</code></li>
-         * <li>use <code>maven.compiler.target</code> property</li>
-         * </ol>
-         *
-         * @param project      not null
-         * @param requirements not null
-         * @return the JDK version
-         */
-        private static String discoverJdkRequirement( MavenProject project, Requirements requirements )
-        {
-            String jdk = requirements.getJdk();
-
-            if ( jdk != null )
-            {
-                return jdk;
-            }
-
-            Plugin compiler = getCompilerPlugin( project.getBuild().getPluginsAsMap() );
-            if ( compiler == null )
-            {
-                compiler = getCompilerPlugin( project.getPluginManagement().getPluginsAsMap() );
-            }
-
-            jdk = getPluginParameter( compiler, "release" );
-            if ( jdk != null )
-            {
-                return jdk;
-            }
-
-            jdk = project.getProperties().getProperty( "maven.compiler.release" );
-            if ( jdk != null )
-            {
-                return jdk;
-            }
-
-            jdk = getPluginParameter( compiler, "target" );
-            if ( jdk != null )
-            {
-                return jdk;
-            }
-
-            // default value
-            jdk = project.getProperties().getProperty( "maven.compiler.target" );
-            if ( jdk != null )
-            {
-                return jdk;
-            }
-
-            // return "1.5" by default?
-
-            String version = ( compiler == null ) ? null : compiler.getVersion();
-
-            if ( version != null )
-            {
-                return "Default target for maven-compiler-plugin version " + version;
-            }
-
-            return "Unknown";
-        }
-
-        private static Plugin getCompilerPlugin( Map<String, Plugin> pluginsAsMap )
-        {
-            return pluginsAsMap.get( "org.apache.maven.plugins:maven-compiler-plugin" );
-        }
-
-        private static String getPluginParameter( Plugin plugin, String parameter )
-        {
-            if ( plugin != null )
-            {
-                Xpp3Dom pluginConf = (Xpp3Dom) plugin.getConfiguration();
-
-                if ( pluginConf != null )
-                {
-                    Xpp3Dom target = pluginConf.getChild( parameter );
-
-                    if ( target != null )
-                    {
-                        return target.getValue();
-                    }
-                }
-            }
-
-            return null;
-        }
-    }
-}
diff --git a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report_old/Requirements.java b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report_old/Requirements.java
deleted file mode 100644
index cb420995..00000000
--- a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report_old/Requirements.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package org.apache.maven.plugin.plugin.report_old;
-
-/*
- * 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.util.Properties;
-
-/**
- * Plugin requirements.
- *
- * @deprecated will be removed in the next major version
- */
-@Deprecated
-public class Requirements
-{
-    /**
-     * The minimum version of Maven to run this plugin.
-     */
-    private String maven;
-
-    /**
-     * The minimum version of the JDK to run this plugin.
-     */
-    private String jdk;
-
-    /**
-     * The minimum memory needed to run this plugin.
-     */
-    private String memory;
-
-    /**
-     * The minimum diskSpace needed to run this plugin.
-     */
-    private String diskSpace;
-
-    /**
-     * Field others.
-     */
-    private java.util.Properties others;
-
-    public String getMaven()
-    {
-        return maven;
-    }
-
-    public String getJdk()
-    {
-        return jdk;
-    }
-
-    public String getMemory()
-    {
-        return memory;
-    }
-
-    public String getDiskSpace()
-    {
-        return diskSpace;
-    }
-
-    public Properties getOthers()
-    {
-        return others;
-    }
-
-    @Override
-    public String toString()
-    {
-        final StringBuilder sb = new StringBuilder( "Requirements{" );
-        sb.append( "maven='" ).append( maven ).append( '\'' );
-        sb.append( ", jdk='" ).append( jdk ).append( '\'' );
-        sb.append( ", memory='" ).append( memory ).append( '\'' );
-        sb.append( ", diskSpace='" ).append( diskSpace ).append( '\'' );
-        sb.append( ", others=" ).append( others );
-        sb.append( '}' );
-        return sb.toString();
-    }
-}
diff --git a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report_old/RequirementsHistory.java b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report_old/RequirementsHistory.java
deleted file mode 100644
index 438d8d74..00000000
--- a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report_old/RequirementsHistory.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.apache.maven.plugin.plugin.report_old;
-
-/*
- * 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.
- */
-
-/**
- * Plugin requirements history.
- *
- * @author Slawomir Jaranowski
- */
-@Deprecated
-public class RequirementsHistory
-{
-    /**
-     * The plugin version.
-     */
-    private String version;
-
-    /**
-     * The minimum version of Maven to run this plugin.
-     */
-    private String maven;
-
-    /**
-     * The minimum version of the JDK to run this plugin.
-     */
-    private String jdk;
-
-    public String getVersion()
-    {
-        return version;
-    }
-
-    public String getMaven()
-    {
-        return maven;
-    }
-
-    public String getJdk()
-    {
-        return jdk;
-    }
-
-    @Override
-    public String toString()
-    {
-        final StringBuilder sb = new StringBuilder( "RequirementsHistory{" );
-        sb.append( "version='" ).append( version ).append( '\'' );
-        sb.append( ", maven='" ).append( maven ).append( '\'' );
-        sb.append( ", jdk='" ).append( jdk ).append( '\'' );
-        sb.append( '}' );
-        return sb.toString();
-    }
-}
diff --git a/maven-plugin-plugin/src/main/java/org/apache/maven/plugins/plugin/descriptor_old/EnhancedPluginDescriptorBuilder.java b/maven-plugin-plugin/src/main/java/org/apache/maven/plugins/plugin/descriptor_old/EnhancedPluginDescriptorBuilder.java
deleted file mode 100644
index 75515656..00000000
--- a/maven-plugin-plugin/src/main/java/org/apache/maven/plugins/plugin/descriptor_old/EnhancedPluginDescriptorBuilder.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package org.apache.maven.plugins.plugin.descriptor_old;
-
-/*
- * 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.net.URI;
-
-import org.apache.maven.plugin.descriptor.MojoDescriptor;
-import org.apache.maven.plugin.descriptor.Parameter;
-import org.apache.maven.plugin.descriptor.PluginDescriptor;
-import org.apache.maven.plugin.descriptor.PluginDescriptorBuilder;
-import org.apache.maven.plugin.plugin.report_old.PluginReport;
-import org.apache.maven.rtinfo.RuntimeInformation;
-import org.apache.maven.tools.plugin.EnhancedParameterWrapper;
-import org.codehaus.plexus.configuration.PlexusConfiguration;
-import org.codehaus.plexus.configuration.PlexusConfigurationException;
-
-/**
- * Reads enhanced plugin.xml files as generated by
- * {@link org.apache.maven.tools.plugin.generator.PluginDescriptorFilesGenerator} and
- * used by {@link PluginReport}.
- * Populates the slightly extended {@link Parameter} object {@link EnhancedParameterWrapper}.
- */
-@Deprecated
-public class EnhancedPluginDescriptorBuilder extends PluginDescriptorBuilder
-{
-    private final boolean requireAddingMissingParameterSinceField;
-    
-    public EnhancedPluginDescriptorBuilder( RuntimeInformation rtInfo )
-    {
-        this( rtInfo.isMavenVersion( "[,3.3.9]" ) );
-    }
-
-    EnhancedPluginDescriptorBuilder( boolean requireAddingMissingParameterSinceField )
-    {
-        this.requireAddingMissingParameterSinceField = requireAddingMissingParameterSinceField;
-    }
-
-    @Override
-    public MojoDescriptor buildComponentDescriptor( PlexusConfiguration c, PluginDescriptor pluginDescriptor )
-        throws PlexusConfigurationException
-    {
-        MojoDescriptor mojoDescriptor = super.buildComponentDescriptor( c, pluginDescriptor );
-        
-        // ----------------------------------------------------------------------
-        // Parameters
-        // ----------------------------------------------------------------------
-
-        PlexusConfiguration[] parameterConfigurations = c.getChild( "parameters" ).getChildren( "parameter" );
-
-        for ( PlexusConfiguration d : parameterConfigurations )
-        {
-            String parameterName = d.getChild( "name" ).getValue();
-            // don't call getParameterMap() to not populate 
-            Parameter pd = mojoDescriptor.getParameterMap().get( parameterName );
-            if ( requireAddingMissingParameterSinceField )
-            {
-                addMissingParameterSinceField( pd, d );
-            }
-            PlexusConfiguration configTypeJavadocUrl = d.getChild( "typeJavadocUrl", false );
-            if ( configTypeJavadocUrl != null )
-            {
-                String parameterTypeJavadocUrl = configTypeJavadocUrl.getValue();
-                EnhancedParameterWrapper enhancedParameter = new EnhancedParameterWrapper( pd );
-                enhancedParameter.setTypeJavadocUrl( URI.create( parameterTypeJavadocUrl ) );
-                mojoDescriptor.getParameters().set( mojoDescriptor.getParameters().indexOf( pd ), enhancedParameter );
-                mojoDescriptor.getParameterMap().put( parameterName, enhancedParameter );
-            }
-        }
-        return mojoDescriptor;
-    }
-
-    /**
-     * Reads the plugin descriptor and adds the fix for <a href="https://issues.apache.org/jira/browse/MNG-6109">
-     * MNG-6109</a> when using Maven-3.3.9 and before.
-     * Method can be removed once Maven 3.5.0 is the prerequisite for this plugin.
-     * @throws PlexusConfigurationException 
-     * 
-     * @since 3.5.1
-     * @see <a href="https://issues.apache.org/jira/browse/MNG-6109">MNG-6109</a>
-     * @see <a href="https://issues.apache.org/jira/browse/MPLUGIN-319">MPLUGIN-319</a>
-     */
-     void addMissingParameterSinceField( Parameter pd, PlexusConfiguration d ) throws PlexusConfigurationException
-     {
-         String parameterSince = d.getChild( "since" ).getValue();
-         pd.setSince( parameterSince );
-     }
-}
diff --git a/maven-plugin-plugin/src/main/resources/plugin-report.properties b/maven-plugin-plugin/src/main/resources/plugin-report.properties
deleted file mode 100644
index 7d9c45b5..00000000
--- a/maven-plugin-plugin/src/main/resources/plugin-report.properties
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# 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.
-#
-
-report.plugin.name=Plugin Documentation
-report.plugin.description=This report provides goals and parameters documentation of a plugin.
-report.plugin.title=Plugin Documentation
-
-report.plugin.goals.nogoal=No goals defined in this plugin.
-report.plugin.goals.intro=Goals available for this plugin:
-report.plugin.goals.column.goal=Goal
-report.plugin.goals.column.isMavenReport=Report?
-report.plugin.goals.column.description=Description
-report.plugin.goal.nodescription=No description.
-report.plugin.goal.deprecated=Deprecated.
-
-report.plugin.systemrequirements=System Requirements
-report.plugin.systemrequirements.intro=The following specifies the minimum requirements to run this Maven plugin:
-report.plugin.systemrequirements.nominimum= No minimum requirement.
-report.plugin.systemrequirements.maven=Maven
-report.plugin.systemrequirements.jdk=JDK
-report.plugin.systemrequirements.memory=Memory
-report.plugin.systemrequirements.diskspace=Disk Space
-
-report.plugin.systemrequirements.history=System Requirements History
-report.plugin.systemrequirements.history.intro=The following specifies the minimum requirements to run this Maven plugin for historical versions:
-report.plugin.systemrequirements.history.version=Plugin Version
-report.plugin.systemrequirements.history.maven=Maven
-report.plugin.systemrequirements.history.jdk=JDK
-
-report.plugin.usage=Usage
-report.plugin.usage.intro=You should specify the version in your project's plugin configuration:
-report.plugin.usage.pluginManagement=To define the plugin version in your parent POM
-report.plugin.usage.plugins=To use the plugin goals in your POM or parent POM
-report.plugin.usage.reporting=To use the report goals in your POM or parent POM
-report.plugin.configuration.end=For more information, see {"Guide to Configuring Plug-ins", https://maven.apache.org/guides/mini/guide-configuring-plugins.html}
-
-report.plugin.isReport=Yes
-report.plugin.isNotReport=No
diff --git a/maven-plugin-plugin/src/main/resources/plugin-report_de.properties b/maven-plugin-plugin/src/main/resources/plugin-report_de.properties
deleted file mode 100644
index e87e5c07..00000000
--- a/maven-plugin-plugin/src/main/resources/plugin-report_de.properties
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# 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.
-#
-
-report.plugin.name=Plugin-Dokumentation
-report.plugin.description=Dieser Bericht dokumentiert die Goals des Plugins und deren Parameter.
-report.plugin.title=Plugin-Dokumentation
-
-report.plugin.goals.nogoal=Keine Goals verf\u00FCgbar.
-report.plugin.goals.intro=Verf\u00FCgbare Goals dieses Plugins:
-report.plugin.goals.column.goal=Goal
-report.plugin.goals.column.isMavenReport=Bericht?
-report.plugin.goals.column.description=Beschreibung
-report.plugin.goal.nodescription=Keine Beschreibung.
-report.plugin.goal.deprecated=Missbilligt.
-
-report.plugin.systemrequirements=Systemvoraussetzungen
-report.plugin.systemrequirements.intro=Die folgende Tabelle listet die Mindestanforderungen zum Ausf\u00FChren dieses Plugins auf:
-report.plugin.systemrequirements.nominimum=Keine Mindestanforderung.
-report.plugin.systemrequirements.maven=Maven
-report.plugin.systemrequirements.jdk=JDK
-report.plugin.systemrequirements.memory=Arbeitsspeicher
-report.plugin.systemrequirements.diskspace=Festplatte
-
-report.plugin.systemrequirements.history=Historie der Systemvoraussetzungen
-report.plugin.systemrequirements.history.intro=In der folgenden Tabelle sind die Mindestanforderungen zum Ausf\u00FChren dieses Plug-ins f\u00FCr historische Versionen aufgef\u00FChrt:
-report.plugin.systemrequirements.history.version=Plugin Version
-report.plugin.systemrequirements.history.maven=Maven
-report.plugin.systemrequirements.history.jdk=JDK
-
-report.plugin.usage=Gebrauch
-report.plugin.usage.intro=Geben Sie die gew\u00FCnschte Version einfach in der Plugin-Konfiguration Ihres Projekts an:
-report.plugin.usage.pluginManagement=Zum Definieren der Plugin-Version in der Eltern-POM
-report.plugin.usage.plugins=Zum Verwenden der Plugin-Goals w\u00E4hrend des Build-Vorgangs eines Projekts
-report.plugin.usage.reporting=Zum Erzeugen der Berichte f\u00FCr die Projektdokumentation
-report.plugin.configuration.end=F\u00FCr weitergehende Informationen lesen Sie bitte den Artikel {"Guide to Configuring Plug-ins", https://maven.apache.org/guides/mini/guide-configuring-plugins.html}.
-
-report.plugin.isReport=Ja
-report.plugin.isNotReport=Nein
diff --git a/maven-plugin-plugin/src/main/resources/plugin-report_en.properties b/maven-plugin-plugin/src/main/resources/plugin-report_en.properties
deleted file mode 100644
index 96cf4075..00000000
--- a/maven-plugin-plugin/src/main/resources/plugin-report_en.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# 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.
-
-# NOTE:
-# This bundle is intentionally empty because English strings are provided by the base bundle via the parent chain. It
-# must be provided nevertheless such that a request for locale "en" will not errorneously pick up the bundle for the
-# JVM's default locale (which need not be "en"). See the method javadoc about
-#   ResourceBundle.getBundle(String, Locale, ClassLoader)
-# for a full description of the lookup strategy.
diff --git a/maven-plugin-plugin/src/main/resources/plugin-report_fr.properties b/maven-plugin-plugin/src/main/resources/plugin-report_fr.properties
deleted file mode 100644
index 2ac7b3fb..00000000
--- a/maven-plugin-plugin/src/main/resources/plugin-report_fr.properties
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# 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.
-#
-
-report.plugin.name=Documentation du plugin
-report.plugin.description=Ce rapport fournit de la documentation sur les goals et les param\u00EAtres d'un plugin.
-report.plugin.title=Documentation du plugin
-
-report.plugin.goals.nogoal=Aucun goal disponible.
-report.plugin.goals.intro=Goals disponibles pour ce plugin :
-report.plugin.goals.column.goal=Goal
-report.plugin.goals.column.isMavenReport=Rapport?
-report.plugin.goals.column.description=Description
-report.plugin.goal.nodescription=Pas de description.
-report.plugin.goal.deprecated=Obsol\u00E8te.
-
-report.plugin.systemrequirements=Exigences Syst\u00E8mes
-report.plugin.systemrequirements.intro=Ce qui suit sp\u00E9cifie les exigences minimales pour ex\u00E9cuter ce plugin Maven :
-report.plugin.systemrequirements.nominimum= Aucune exigence minimale.
-report.plugin.systemrequirements.maven=Maven
-report.plugin.systemrequirements.jdk=JDK
-report.plugin.systemrequirements.memory=M\u00E9moire
-report.plugin.systemrequirements.diskspace=Espace Disque
-
-report.plugin.systemrequirements.history=Historique des Exigences Syst\u00E8mes
-report.plugin.systemrequirements.history.intro=Ce qui suit sp\u00E9cifie les exigences minimales pour ex\u00E9cuter ce plugin Maven pour les versions historiques:
-report.plugin.systemrequirements.history.version=Version du Plugin
-report.plugin.systemrequirements.history.maven=Maven
-report.plugin.systemrequirements.history.jdk=JDK
-
-report.plugin.usage=Utilisation
-report.plugin.usage.intro=Vous devez sp\u00E9cifier la version dans la configuration de votre projet :
-report.plugin.usage.pluginManagement=Pour d\u00E9finir la version du plugin dans le POM parent
-report.plugin.usage.plugins=Pour utiliser les goals du plugin dans votre POM ou POM parent
-report.plugin.usage.reporting=Pour utiliser les goals de rapports dans votre POM ou POM parent
-report.plugin.configuration.end=Pour plus d'informations, consultez {"Guide to Configuring Plug-ins", https://maven.apache.org/guides/mini/guide-configuring-plugins.html}
-
-report.plugin.isReport=Oui
-report.plugin.isNotReport=Non
diff --git a/maven-plugin-plugin/src/main/resources/plugin-report_sv.properties b/maven-plugin-plugin/src/main/resources/plugin-report_sv.properties
deleted file mode 100644
index 0e806e49..00000000
--- a/maven-plugin-plugin/src/main/resources/plugin-report_sv.properties
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# 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.
-#
-
-report.plugin.name=Plugindokumentation
-report.plugin.description=Denna rapport tillhandah\u00E5ller m\u00E5l- och parameterdokumentation f\u00F6r en plugin.
-report.plugin.title=Plugindokumentation
-
-report.plugin.goals.nogoal=Inga m\u00E5l tillg\u00E4ngliga \u00E4nnu.
-report.plugin.goals.intro=Tillg\u00E4ngliga m\u00E5l f\u00F6r denna plugin:
-report.plugin.goals.column.goal=M\u00E5l
-report.plugin.goals.column.isMavenReport=Rapport?
-report.plugin.goals.column.description=Beskrivning
-report.plugin.goal.nodescription=Ingen beskrivning.
-report.plugin.goal.deprecated=F\u00F6r\u00E5ldrat.
-
-report.plugin.systemrequirements=Systemkrav
-report.plugin.systemrequirements.intro=F\u00F6ljande minimikrav st\u00E4lls f\u00F6r att k\u00F6ra denna Maven plugin:
-report.plugin.systemrequirements.nominimum= Inga minimikrav.
-report.plugin.systemrequirements.maven=Maven
-report.plugin.systemrequirements.jdk=JDK
-report.plugin.systemrequirements.memory=Minne
-report.plugin.systemrequirements.diskspace=Diskutrymme
-
-report.plugin.systemrequirements.history=Systemkravshistorik
-report.plugin.systemrequirements.history.intro=F\u00F6ljande anger minimikraven f\u00F6r att k\u00F6ra detta Maven-plugin f\u00F6r historiska versioner:
-report.plugin.systemrequirements.history.version=Plugin Version
-report.plugin.systemrequirements.history.maven=Maven
-report.plugin.systemrequirements.history.jdk=JDK
-
-report.plugin.usage=Anv\u00E4ndning
-report.plugin.usage.intro=Du b\u00F6r specificera versionen i ditt projekts pluginkonfiguration:
-report.plugin.usage.pluginManagement=F\u00F6r att definiera pluginversion i din f\u00F6r\u00E4ldra-POM
-report.plugin.usage.plugins=F\u00F6r att anv\u00E4nda plugin-m\u00E5len i din POM eller f\u00F6r\u00E4ldra-POM
-report.plugin.usage.reporting=F\u00F6r att anv\u00E4nda rapport-m\u00E5len i din POM eller f\u00F6r\u00E4ldra-POM
-report.plugin.configuration.end=F\u00F6r mer information, l\u00E4s {"Guide to Configuring Plug-ins", https://maven.apache.org/guides/mini/guide-configuring-plugins.html} (p\u00E5 engelska).
-
-report.plugin.isReport=Ja
-report.plugin.isNotReport=Nej
diff --git a/maven-plugin-report-plugin/pom.xml b/maven-plugin-report-plugin/pom.xml
index e7e66d46..a5db1628 100644
--- a/maven-plugin-report-plugin/pom.xml
+++ b/maven-plugin-report-plugin/pom.xml
@@ -55,12 +55,6 @@
             <artifactId>maven-plugin-api</artifactId>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.maven.reporting</groupId>
-            <artifactId>maven-reporting-api</artifactId>
-            <version>${reportingApiVersion}</version>
-            <scope>provided</scope>
-        </dependency>
         <dependency>
             <groupId>org.apache.maven</groupId>
             <artifactId>maven-model</artifactId>
@@ -90,9 +84,14 @@
         <dependency>
             <groupId>org.apache.maven.doxia</groupId>
             <artifactId>doxia-sink-api</artifactId>
+            <version>2.0.0-M5</version>
         </dependency>
 
         <!-- shared -->
+        <dependency>
+            <groupId>org.apache.maven.reporting</groupId>
+            <artifactId>maven-reporting-api</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.maven.reporting</groupId>
             <artifactId>maven-reporting-impl</artifactId>
@@ -229,8 +228,8 @@
                             <settingsFile>src/it/settings.xml</settingsFile>
                             <streamLogsOnFailures>true</streamLogsOnFailures>
                             <filterProperties>
-                                <sitePluginVersion>3.12.1</sitePluginVersion>
-                                <projectInfoReportsPlugin>3.4.1</projectInfoReportsPlugin>
+                                <sitePluginVersion>4.0.0-M5</sitePluginVersion>
+                                <projectInfoReportsPlugin>4.0.0-M1-SNAPSHOT</projectInfoReportsPlugin>
                                 <antVersion>${antVersion}</antVersion>
                             </filterProperties>
                             <properties>
diff --git a/maven-plugin-plugin/src/it/mplugin-187/invoker.properties b/maven-plugin-report-plugin/src/it/mplugin-187/invoker.properties
similarity index 94%
rename from maven-plugin-plugin/src/it/mplugin-187/invoker.properties
rename to maven-plugin-report-plugin/src/it/mplugin-187/invoker.properties
index a16bae84..3b86dfb4 100644
--- a/maven-plugin-plugin/src/it/mplugin-187/invoker.properties
+++ b/maven-plugin-report-plugin/src/it/mplugin-187/invoker.properties
@@ -5,9 +5,9 @@
 # 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
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals = clean plugin:report
+invoker.goals = clean plugin-report:report
diff --git a/maven-plugin-plugin/src/it/mplugin-187/pom.xml b/maven-plugin-report-plugin/src/it/mplugin-187/pom.xml
similarity index 91%
rename from maven-plugin-plugin/src/it/mplugin-187/pom.xml
rename to maven-plugin-report-plugin/src/it/mplugin-187/pom.xml
index 541ee69a..b0b1de57 100644
--- a/maven-plugin-plugin/src/it/mplugin-187/pom.xml
+++ b/maven-plugin-report-plugin/src/it/mplugin-187/pom.xml
@@ -26,7 +26,7 @@ under the License.
   <artifactId>mplugin-187</artifactId>
   <version>1.0-SNAPSHOT</version>
 
-  <description>Verify that plugin:report succeeds</description>
+  <description>Verify that plugin-report:report succeeds</description>
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -36,10 +36,10 @@ under the License.
     <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-plugin-plugin</artifactId>
+        <artifactId>maven-plugin-report-plugin</artifactId>
         <version>@project.version@</version>
       </plugin>
     </plugins>
   </build>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/maven-plugin-report-plugin/src/it/plugin-info-jdk-default-version/src/site/site.xml b/maven-plugin-report-plugin/src/it/plugin-info-jdk-default-version/src/site/site.xml
deleted file mode 100644
index c0a8d7a2..00000000
--- a/maven-plugin-report-plugin/src/it/plugin-info-jdk-default-version/src/site/site.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-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.
--->
-
-<project xmlns="http://maven.apache.org/DECORATION/1.8.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.8.0 https://maven.apache.org/xsd/decoration-1.8.0.xsd">
-  <body>
-    <menu name="Overview">
-      <item name="Goals" href="plugin-info.html"/>
-    </menu>
-    <menu ref="reports" inherit="bottom" />
-  </body>
-</project>
diff --git a/maven-plugin-report-plugin/src/it/plugin-report-annotations/pom.xml b/maven-plugin-report-plugin/src/it/plugin-report-annotations/pom.xml
index d675726e..51b2d7cc 100644
--- a/maven-plugin-report-plugin/src/it/plugin-report-annotations/pom.xml
+++ b/maven-plugin-report-plugin/src/it/plugin-report-annotations/pom.xml
@@ -27,7 +27,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>maven-plugin</packaging>
 
-  <name>MPLUGIN-105</name> 
+  <name>MPLUGIN-105</name>
   <description>
     Test basic site generation to guard against regression.
   </description>
diff --git a/maven-plugin-report-plugin/src/it/plugin-report-with-javadoc-links/pom.xml b/maven-plugin-report-plugin/src/it/plugin-report-with-javadoc-links/pom.xml
index ca0b9d6a..4340fba3 100644
--- a/maven-plugin-report-plugin/src/it/plugin-report-with-javadoc-links/pom.xml
+++ b/maven-plugin-report-plugin/src/it/plugin-report-with-javadoc-links/pom.xml
@@ -100,9 +100,6 @@ under the License.
         <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/maven-plugin-report-plugin/src/it/plugin-report-with-javadoc-links/verify.groovy b/maven-plugin-report-plugin/src/it/plugin-report-with-javadoc-links/verify.groovy
index 5eb43a12..9c040f6e 100644
--- a/maven-plugin-report-plugin/src/it/plugin-report-with-javadoc-links/verify.groovy
+++ b/maven-plugin-report-plugin/src/it/plugin-report-with-javadoc-links/verify.groovy
@@ -21,11 +21,11 @@ def mojoDoc = new File( basedir, 'target/site/test-mojo.html' )
 
 assert mojoDoc.isFile()
 
-assert mojoDoc.text.contains('<b>See also:</b> <a class="externalLink" href="https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html">java.util.Collections</a></div>') // mojo description see javadoc tag
+assert mojoDoc.text.contains('<strong>See also:</strong> <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html" class="externalLink">java.util.Collections</a></div>') // mojo description see javadoc tag
 
 assert mojoDoc.text.contains('beans parameter leveraging <a href="apidocs/org/SimpleBean.html"><code>SimpleBean</code></a>.') // parameter description
 assert mojoDoc.text.contains('<td><code><a href="apidocs/org/SimpleBean.html">Collection&lt;SimpleBean&gt;</a></code></td>') // type link in parameter overview
-assert mojoDoc.text.contains('<li><b>Type</b>: <code><a href="apidocs/org/SimpleBean.html">java.util.Collection&lt;org.SimpleBean&gt;</a></code></li>') // type link in parameter details
+assert mojoDoc.text.contains('<li><strong>Type</strong>: <code><a href="apidocs/org/SimpleBean.html">java.util.Collection&lt;org.SimpleBean&gt;</a></code></li>') // type link in parameter details
 
 assert mojoDoc.text.contains('<div>invalid javadoc reference <code>org.apache.maven.artifact.Artifact</code>.</div>') // second parameter description with link being removed (as no javadoc site associated)
 
diff --git a/maven-plugin-report-plugin/src/it/plugin-report/pom.xml b/maven-plugin-report-plugin/src/it/plugin-report/pom.xml
index dd95249a..e414714b 100644
--- a/maven-plugin-report-plugin/src/it/plugin-report/pom.xml
+++ b/maven-plugin-report-plugin/src/it/plugin-report/pom.xml
@@ -27,7 +27,7 @@ under the License.
   <version>1.0-SNAPSHOT</version>
   <packaging>maven-plugin</packaging>
 
-  <name>MPLUGIN-105</name> 
+  <name>MPLUGIN-105</name>
   <description>
     Test basic site generation to guard against regression of MPLUGIN-105.
   </description>
@@ -90,9 +90,6 @@ under the License.
         <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/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java b/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java
index 9eb7ac99..672c9f47 100644
--- a/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java
+++ b/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java
@@ -138,7 +138,7 @@ public class PluginReport
      * This might have the drawback that some links being generated in the report might be broken
      * in case not all parameter types and javadoc link references are resolvable through the sites being given to
      * goal {@code plugin:descriptor}.
-     * 
+     *
      * @since 3.7.0
      */
     @Parameter( property = "maven.plugin.report.disableInternalJavadocLinkValidation" )
@@ -550,7 +550,7 @@ public class PluginReport
             sb.append( "  ..." ).append( '\n' );
             sb.append( "</project>" ).append( '\n' );
 
-            verbatimText( sb.toString() );
+            verbatimSource( sb.toString() );
 
             sink.paragraph();
             linkPatternedText( getBundle( locale ).getString( "report.plugin.configuration.end" ) );
@@ -560,7 +560,7 @@ public class PluginReport
         }
 
         /**
-         * Tries to determine the Maven requirement from either the plugin descriptor or (if not set) from the 
+         * Tries to determine the Maven requirement from either the plugin descriptor or (if not set) from the
          * Maven prerequisites element in the POM.
          *
          * @param project      not null
diff --git a/maven-plugin-tools-generators/pom.xml b/maven-plugin-tools-generators/pom.xml
index 3a1d27ad..5d6e4320 100644
--- a/maven-plugin-tools-generators/pom.xml
+++ b/maven-plugin-tools-generators/pom.xml
@@ -51,7 +51,6 @@
     <dependency>
       <groupId>org.apache.maven.reporting</groupId>
       <artifactId>maven-reporting-api</artifactId>
-      <version>${reportingApiVersion}</version>
     </dependency>
 
     <!-- plexus -->
@@ -67,7 +66,7 @@
     <!-- other -->
     <dependency>
       <groupId>org.apache.velocity</groupId>
-      <artifactId>velocity</artifactId>
+      <artifactId>velocity-engine-core</artifactId>
     </dependency>
 
     <dependency>
diff --git a/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java b/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java
index 7b6f7b2c..a64c205e 100644
--- a/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java
+++ b/maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginXdocGenerator.java
@@ -104,20 +104,13 @@ public class PluginXdocGenerator
 
     /**
      * @param project not null.
-     * @param locale  not null wanted locale.
+     * @param locale  not null.
      */
     public PluginXdocGenerator( MavenProject project, Locale locale, File reportOutputDirectory,
                                 boolean disableInternalJavadocLinkValidation )
     {
         this.project = project;
-        if ( locale == null )
-        {
-            this.locale = Locale.ENGLISH;
-        }
-        else
-        {
-            this.locale = locale;
-        }
+        this.locale = locale;
         this.reportOutputDirectory = reportOutputDirectory;
         this.disableInternalJavadocLinkValidation = disableInternalJavadocLinkValidation;
     }
@@ -500,7 +493,7 @@ public class PluginXdocGenerator
             w.startElement( "div" );
             if ( StringUtils.isNotEmpty( parameter.getDescription() ) )
             {
-                
+
                 w.writeMarkup( getXhtmlWithValidatedLinks( parameter.getDescription(), context ) );
             }
             else
@@ -580,12 +573,12 @@ public class PluginXdocGenerator
             StringBuilder shortType = new StringBuilder();
             shortType.append( getShortTypeOfSimpleType( type.substring( 0, startTypeArguments ) ) );
             shortType.append( "<" )
-                .append( getShortTypeOfTypeArgument( 
+                .append( getShortTypeOfTypeArgument(
                         type.substring( startTypeArguments + 1, type.lastIndexOf( ">" ) ) ) )
                 .append( ">" );
             return shortType.toString();
         }
-        
+
     }
 
     private static String getShortTypeOfTypeArgument( String type )
@@ -636,8 +629,8 @@ public class PluginXdocGenerator
             {
                 URI javadocUrl = enhancedParameter.getTypeJavadocUrl();
                 // optionally check if link is valid
-                if ( javadocUrl.isAbsolute() 
-                     || disableInternalJavadocLinkValidation 
+                if ( javadocUrl.isAbsolute()
+                     || disableInternalJavadocLinkValidation
                      || JavadocLinkGenerator.isLinkValid( javadocUrl, reportOutputDirectory.toPath() ) )
                 {
                     return format( "pluginxdoc.mojodescriptor.parameter.type_link",
diff --git a/pom.xml b/pom.xml
index a16314bc..3e300bd4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -96,20 +96,18 @@
     <pluginTestingHarnessVersion>3.3.0</pluginTestingHarnessVersion>
     <maven4Version>4.0.0-alpha-2</maven4Version>
     <mavenVersion>3.2.5</mavenVersion>
-    <!-- SLF4J version must match the version exported from the mavenVersion, 
+    <!-- SLF4J version must match the version exported from the mavenVersion,
     https://github.com/apache/maven/blob/12a6b3acb947671f09b81f49094c53f426d8cea1/pom.xml#L63 -->
     <slf4jVersion>1.7.5</slf4jVersion>
     <antVersion>1.10.12</antVersion>
     <maven.site.path>plugin-tools-archives/plugin-tools-LATEST</maven.site.path>
-    <!-- whenever the ASM version is updated also the 
-    maven-plugin-tools-annotations/src/main/java/o/a/m/tools/plugins/extractor/annotations/JavaAnnotationsMojoDescriptorExtractor#CLASS_VERSION_TO_JAVA_STRING 
+    <!-- whenever the ASM version is updated also the
+    maven-plugin-tools-annotations/src/main/java/o/a/m/tools/plugins/extractor/annotations/JavaAnnotationsMojoDescriptorExtractor#CLASS_VERSION_TO_JAVA_STRING
     needs to be updated as well -->
     <asmVersion>9.4</asmVersion>
-    <doxiaVersion>1.11.1</doxiaVersion>
-    <doxia-sitetoolsVersion>1.11.1</doxia-sitetoolsVersion>
     <plexusUtilsVersion>3.5.0</plexusUtilsVersion>
-    <reportingApiVersion>3.1.1</reportingApiVersion>
-    <reportingImplVersion>3.2.0</reportingImplVersion>
+    <reportingApiVersion>4.0.0-M4</reportingApiVersion>
+    <reportingImplVersion>4.0.0-M4</reportingImplVersion>
     <project.build.outputTimestamp>2023-01-20T07:42:25Z</project.build.outputTimestamp>
   </properties>
 
@@ -186,43 +184,16 @@
         <artifactId>maven-settings</artifactId>
         <version>${mavenVersion}</version>
       </dependency>
-      <!-- doxia -->
+      <!-- shared -->
       <dependency>
-        <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-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>
+        <groupId>org.apache.maven.reporting</groupId>
+        <artifactId>maven-reporting-api</artifactId>
+        <version>${reportingApiVersion}</version>
       </dependency>
       <dependency>
         <groupId>org.apache.maven.reporting</groupId>
         <artifactId>maven-reporting-impl</artifactId>
         <version>${reportingImplVersion}</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>plexus-container-default</artifactId>
-            <groupId>org.codehaus.plexus</groupId>
-          </exclusion>
-        </exclusions>
       </dependency>
 
 
@@ -250,24 +221,20 @@
       <dependency>
         <groupId>org.codehaus.plexus</groupId>
         <artifactId>plexus-velocity</artifactId>
-        <version>1.2</version>
+        <version>2.0</version>
         <exclusions>
           <exclusion>
             <groupId>org.codehaus.plexus</groupId>
             <artifactId>plexus-container-default</artifactId>
           </exclusion>
-          <exclusion>
-            <groupId>velocity</groupId>
-            <artifactId>velocity</artifactId>
-          </exclusion>
         </exclusions>
       </dependency>
 
       <!-- other -->
       <dependency>
         <groupId>org.apache.velocity</groupId>
-        <artifactId>velocity</artifactId>
-        <version>1.7</version>
+        <artifactId>velocity-engine-core</artifactId>
+        <version>2.3</version>
       </dependency>
 
       <dependency>