[MPLUGIN-400] Add system requirements history section

- add new section in report
- move report to separate package
- not use modello for simple case
diff --git a/maven-plugin-plugin/pom.xml b/maven-plugin-plugin/pom.xml
index 448f6bd..5974117 100644
--- a/maven-plugin-plugin/pom.xml
+++ b/maven-plugin-plugin/pom.xml
@@ -230,23 +230,6 @@
     </pluginManagement>
     <plugins>
       <plugin>
-        <groupId>org.codehaus.modello</groupId>
-        <artifactId>modello-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <goals>
-              <goal>java</goal>
-            </goals>
-          </execution>
-        </executions>
-        <configuration>
-          <version>1.0.0</version>
-          <models>
-            <model>src/main/mdo/pluginRequirements.mdo</model>
-          </models>
-        </configuration>
-      </plugin>
-      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-enforcer-plugin</artifactId>
         <executions>
diff --git a/maven-plugin-plugin/src/it/plugin-report-requirements-history/invoker.properties b/maven-plugin-plugin/src/it/plugin-report-requirements-history/invoker.properties
new file mode 100644
index 0000000..a3d335e
--- /dev/null
+++ b/maven-plugin-plugin/src/it/plugin-report-requirements-history/invoker.properties
@@ -0,0 +1,18 @@
+# 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.
+
+invoker.goals = site
diff --git a/maven-plugin-plugin/src/it/plugin-report-requirements-history/pom.xml b/maven-plugin-plugin/src/it/plugin-report-requirements-history/pom.xml
new file mode 100644
index 0000000..5fa57ea
--- /dev/null
+++ b/maven-plugin-plugin/src/it/plugin-report-requirements-history/pom.xml
@@ -0,0 +1,101 @@
+<?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/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its</groupId>
+  <artifactId>plugin-report</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>maven-plugin</packaging>
+
+  <name>MPLUGIN-400</name>
+  <description>
+    Test basic site generation to guard against regression.
+  </description>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+      <version>@mavenVersion@</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
+      <version>@project.version@</version>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <version>3.10.1</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-site-plugin</artifactId>
+          <version>@sitePluginVersion@</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-plugin-plugin</artifactId>
+          <version>@project.version@</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+
+  <reporting>
+    <excludeDefaults>true</excludeDefaults>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-plugin-plugin</artifactId>
+        <version>@project.version@</version>
+        <configuration>
+          <requirementsHistories>
+            <requirementsHistory>
+              <version>1.1.99</version>
+              <maven>3.2.5</maven>
+              <jdk>1.7</jdk>
+            </requirementsHistory>
+            <requirementsHistory>
+              <version>2.0.99</version>
+              <maven>3.8.6</maven>
+              <jdk>1.8</jdk>
+            </requirementsHistory>
+          </requirementsHistories>
+        </configuration>
+      </plugin>
+    </plugins>
+  </reporting>
+</project>
diff --git a/maven-plugin-plugin/src/it/plugin-report-requirements-history/src/main/java/org/MyMojo.java b/maven-plugin-plugin/src/it/plugin-report-requirements-history/src/main/java/org/MyMojo.java
new file mode 100644
index 0000000..82a95ab
--- /dev/null
+++ b/maven-plugin-plugin/src/it/plugin-report-requirements-history/src/main/java/org/MyMojo.java
@@ -0,0 +1,65 @@
+package org;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugins.annotations.ResolutionScope;
+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;
+
+/**
+ * Does nothing.
+ *
+ * @since 1.0
+ * @deprecated You don't use test goals, do you?
+ */
+@Mojo( name = "noop", defaultPhase = LifecyclePhase.PROCESS_SOURCES,
+       requiresDependencyResolution = ResolutionScope.TEST,
+       requiresDirectInvocation = true, requiresOnline = true, inheritByDefault = false, aggregator = true )
+@Execute( phase = LifecyclePhase.COMPILE )
+public class MyMojo
+    extends AbstractMojo
+{
+
+    /**
+     * This is a test.
+     */
+    @SuppressWarnings( "unused" )
+    @Parameter( required = true )
+    private String required;
+
+    /**
+     * This is a test.
+     *
+     * @since 1.1
+     * @deprecated Just testing.
+     */
+    @SuppressWarnings( "unused" )
+    @Parameter( property = "string", defaultValue = "${project.version}/</markup-must-be-escaped>" )
+    private String string;
+
+    public void execute()
+    {
+        // intentional do nothing
+    }
+
+}
diff --git a/maven-plugin-plugin/src/it/plugin-report-requirements-history/verify.groovy b/maven-plugin-plugin/src/it/plugin-report-requirements-history/verify.groovy
new file mode 100644
index 0000000..d573e5e
--- /dev/null
+++ b/maven-plugin-plugin/src/it/plugin-report-requirements-history/verify.groovy
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+
+assert new File( basedir, 'target/site/noop-mojo.html' ).isFile()
+
+def pluginInfo = new File( basedir, 'target/site/plugin-info.html' )
+assert pluginInfo.isFile()
+
+assert pluginInfo.text.contains('1.1.99')
+assert pluginInfo.text.contains('2.0.99')
+assert pluginInfo.text.contains('3.2.5')
+assert pluginInfo.text.contains('3.8.6')
+assert pluginInfo.text.contains('1.7')
+assert pluginInfo.text.contains('1.8')
diff --git a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/PluginReport.java b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java
similarity index 89%
rename from maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/PluginReport.java
rename to maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java
index 5916df9..2cd448a 100644
--- a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/PluginReport.java
+++ b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugin.plugin;
+package org.apache.maven.plugin.plugin.report;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -104,7 +104,7 @@
      *   &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.
@@ -159,13 +159,33 @@
     /**
      * 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
@@ -177,7 +197,7 @@
      * @since 3.5.1
      */
     @Parameter( defaultValue = "${project.build.outputDirectory}/META-INF/maven/plugin.xml", required = true,
-                    readonly = true )
+                readonly = true )
     private File pluginXmlFile;
 
     /**
@@ -219,8 +239,8 @@
 
         // Write the overview
         PluginOverviewRenderer r =
-            new PluginOverviewRenderer( getProject(), requirements, getSink(),
-                    pluginDescriptor, locale, hasExtensionsToLoad );
+            new PluginOverviewRenderer( getProject(), requirements, requirementsHistories, getSink(),
+                                        pluginDescriptor, locale, hasExtensionsToLoad );
         r.render();
     }
 
@@ -241,10 +261,10 @@
     }
 
     /**
-     * Return the pluginDescriptorBuilder to use based on the Maven version: either use the original from the 
-     * maven-plugin-api or a patched version for Maven versions before the MNG-6109 fix 
+     * Return the pluginDescriptorBuilder to use based on the Maven version: either use the original from the
+     * maven-plugin-api or a patched version for Maven versions before the MNG-6109 fix
      * (because of Maven MNG-6109 bug that won't give accurate 'since' info when reading plugin.xml).
-     * 
+     *
      * @return the proper pluginDescriptorBuilder
      * @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>
@@ -338,6 +358,8 @@
 
         private final Requirements requirements;
 
+        private final List<RequirementsHistory> requirementsHistories;
+
         private final PluginDescriptor pluginDescriptor;
 
         private final Locale locale;
@@ -345,13 +367,15 @@
         private final boolean hasExtensionsToLoad;
 
         /**
-         * @param project          not null
-         * @param requirements     not null
-         * @param sink             not null
-         * @param pluginDescriptor not null
-         * @param locale           not null
+         * @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, Sink sink,
+        PluginOverviewRenderer( MavenProject project, Requirements requirements,
+                                List<RequirementsHistory> requirementsHistories, Sink sink,
                                 PluginDescriptor pluginDescriptor, Locale locale, boolean hasExtensionsToLoad )
         {
             super( sink );
@@ -360,6 +384,8 @@
 
             this.requirements = ( requirements == null ? new Requirements() : requirements );
 
+            this.requirementsHistories = requirementsHistories;
+
             this.pluginDescriptor = pluginDescriptor;
 
             this.locale = locale;
@@ -411,11 +437,11 @@
             String descriptionColumnName = getBundle( locale ).getString( "report.plugin.goals.column.description" );
             if ( hasMavenReport )
             {
-                tableHeader( new String[]{ goalColumnName, isMavenReport, descriptionColumnName } );
+                tableHeader( new String[] {goalColumnName, isMavenReport, descriptionColumnName} );
             }
             else
             {
-                tableHeader( new String[]{ goalColumnName, descriptionColumnName } );
+                tableHeader( new String[] {goalColumnName, descriptionColumnName} );
             }
 
             List<MojoDescriptor> mojos = new ArrayList<>();
@@ -527,11 +553,44 @@
 
             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.
          *
@@ -565,7 +624,7 @@
             if ( hasExtensionsToLoad )
             {
                 sb.append( "          <extensions>true</extensions>" ).append(
-                        '\n' );
+                    '\n' );
             }
             sb.append( "        </plugin>" ).append( '\n' );
             sb.append( "        ..." ).append( '\n' );
diff --git a/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report/Requirements.java b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report/Requirements.java
new file mode 100644
index 0000000..1cc68b7
--- /dev/null
+++ b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report/Requirements.java
@@ -0,0 +1,94 @@
+package org.apache.maven.plugin.plugin.report;
+
+/*
+ * 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/RequirementsHistory.java b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report/RequirementsHistory.java
new file mode 100644
index 0000000..ec3955a
--- /dev/null
+++ b/maven-plugin-plugin/src/main/java/org/apache/maven/plugin/plugin/report/RequirementsHistory.java
@@ -0,0 +1,69 @@
+package org.apache.maven.plugin.plugin.report;
+
+/*
+ * 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
+ */
+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/mdo/pluginRequirements.mdo b/maven-plugin-plugin/src/main/mdo/pluginRequirements.mdo
deleted file mode 100644
index 9516b81..0000000
--- a/maven-plugin-plugin/src/main/mdo/pluginRequirements.mdo
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.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.
--->
-
-<model xmlns="https://codehaus-plexus.github.io/MODELLO/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="https://codehaus-plexus.github.io/MODELLO/1.0.0 https://codehaus-plexus.github.io/modello/xsd/modello-1.0.0.xsd">
-  <id>pluginRequirements</id>
-  <name>PluginRequirements</name>
-  <description><![CDATA[Model to specify plugin requirements.]]></description>
-  <defaults>
-    <default>
-      <key>package</key>
-      <value>org.apache.maven.plugin.plugin</value>
-    </default>
-  </defaults>
-  <classes>
-    <class>
-      <name>Requirements</name>
-      <description>Plugin requirements.</description>
-      <version>1.0.0</version>
-      <fields>
-        <field>
-          <name>maven</name>
-          <description>The minimum version of Maven to run this plugin.</description>
-          <version>1.0.0</version>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field>
-          <name>jdk</name>
-          <description>The minimum version of the JDK to run this plugin.</description>
-          <version>1.0.0</version>
-          <type>String</type>
-          <identifier>true</identifier>
-        </field>
-        <field>
-          <name>memory</name>
-          <description>The minimum memory needed to run this plugin.</description>
-          <version>1.0.0</version>
-          <type>String</type>
-        </field>
-        <field>
-          <name>diskSpace</name>
-          <description>The minimum diskSpace needed to run this plugin.</description>
-          <version>1.0.0</version>
-          <type>String</type>
-        </field>
-        <field>
-          <name>others</name>
-          <description>Others requirements properties.</description>
-          <version>1.0.0</version>
-          <type>Properties</type>
-          <association xml.mapStyle="inline">
-            <type>String</type>
-            <multiplicity>*</multiplicity>
-          </association>
-        </field>
-      </fields>
-    </class>
-  </classes>
-</model>
diff --git a/maven-plugin-plugin/src/main/resources/plugin-report.properties b/maven-plugin-plugin/src/main/resources/plugin-report.properties
index bd10872..7d9c45b 100644
--- a/maven-plugin-plugin/src/main/resources/plugin-report.properties
+++ b/maven-plugin-plugin/src/main/resources/plugin-report.properties
@@ -37,6 +37,12 @@
 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
diff --git a/maven-plugin-plugin/src/main/resources/plugin-report_de.properties b/maven-plugin-plugin/src/main/resources/plugin-report_de.properties
index 6259b7b..e87e5c0 100644
--- a/maven-plugin-plugin/src/main/resources/plugin-report_de.properties
+++ b/maven-plugin-plugin/src/main/resources/plugin-report_de.properties
@@ -21,8 +21,8 @@
 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.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
@@ -30,19 +30,25 @@
 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.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.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.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_fr.properties b/maven-plugin-plugin/src/main/resources/plugin-report_fr.properties
index 9474dea..2ac7b3f 100644
--- a/maven-plugin-plugin/src/main/resources/plugin-report_fr.properties
+++ b/maven-plugin-plugin/src/main/resources/plugin-report_fr.properties
@@ -18,7 +18,7 @@
 #
 
 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.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.
@@ -27,19 +27,25 @@
 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.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=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.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.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}
diff --git a/maven-plugin-plugin/src/main/resources/plugin-report_sv.properties b/maven-plugin-plugin/src/main/resources/plugin-report_sv.properties
index 15ff650..0e806e4 100644
--- a/maven-plugin-plugin/src/main/resources/plugin-report_sv.properties
+++ b/maven-plugin-plugin/src/main/resources/plugin-report_sv.properties
@@ -18,31 +18,37 @@
 #
 
 report.plugin.name=Plugindokumentation
-report.plugin.description=Denna rapport tillhandahåller mål- och parameterdokumentation för en plugin.
+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ål tillgängliga ännu.
-report.plugin.goals.intro=Tillgängliga mål för denna plugin:
-report.plugin.goals.column.goal=Mål
+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öråldrat.
+report.plugin.goal.deprecated=F\u00F6r\u00E5ldrat.
 
 report.plugin.systemrequirements=Systemkrav
-report.plugin.systemrequirements.intro=Följande minimikrav ställs för att köra denna Maven plugin:
+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.usage=Användning
-report.plugin.usage.intro=Du bör specificera versionen i ditt projekts pluginkonfiguration:
-report.plugin.usage.pluginManagement=För att definiera pluginversion i din föräldra-POM
-report.plugin.usage.plugins=För att använda plugin-målen i din POM eller föräldra-POM
-report.plugin.usage.reporting=För att använda rapport-målen i din POM eller föräldra-POM
-report.plugin.configuration.end=För mer information, läs {"Guide to Configuring Plug-ins", https://maven.apache.org/guides/mini/guide-configuring-plugins.html} (på engelska).
+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