diff --git a/maven-plugin-report-plugin/src/it/plugin-report-detect-requirements-history/pom.xml b/maven-plugin-report-plugin/src/it/plugin-report-detect-requirements-history/pom.xml
index 51b08ae9..e38c90b6 100644
--- a/maven-plugin-report-plugin/src/it/plugin-report-detect-requirements-history/pom.xml
+++ b/maven-plugin-report-plugin/src/it/plugin-report-detect-requirements-history/pom.xml
@@ -24,8 +24,8 @@ under the License.
4.0.0
org.apache.maven.plugins
- maven-plugin-report-plugin
- 1.0-SNAPSHOT
+ maven-assembly-plugin
+ 3.7.1-SNAPSHOT
maven-plugin
MPLUGIN-511
@@ -84,6 +84,9 @@ under the License.
org.apache.maven.plugins
maven-plugin-report-plugin
@project.version@
+
+ [3,3.7.0]
+
diff --git a/maven-plugin-report-plugin/src/it/plugin-report-detect-requirements-history/verify.groovy b/maven-plugin-report-plugin/src/it/plugin-report-detect-requirements-history/verify.groovy
index bdf7c032..f1ce27a1 100644
--- a/maven-plugin-report-plugin/src/it/plugin-report-detect-requirements-history/verify.groovy
+++ b/maven-plugin-report-plugin/src/it/plugin-report-detect-requirements-history/verify.groovy
@@ -22,8 +22,6 @@ 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('3.11.0')
-assert pluginInfo.text.contains('3.10.2')
-assert pluginInfo.text.contains('3.9.0')
-assert pluginInfo.text.contains('3.7.0')
+assert pluginInfo.text.contains('from 3.4.0 to 3.6.0')
+assert pluginInfo.text.contains('>3.2.5<')
assert pluginInfo.text.contains('>8<')
diff --git a/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginOverviewRenderer.java b/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginOverviewRenderer.java
index 0c45f0ae..d557ed7f 100644
--- a/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginOverviewRenderer.java
+++ b/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginOverviewRenderer.java
@@ -211,11 +211,32 @@ private void renderRequirementsHistoriesSection() {
getI18nString("systemrequirements.history.jdk")
});
+ // group by same requirements
+ final List> requirementsVersions = new ArrayList<>();
requirementsHistories.forEach(requirementsHistory -> {
+ List current =
+ requirementsVersions.isEmpty() ? null : requirementsVersions.get(requirementsVersions.size() - 1);
+ if (current != null && current.get(0).hasSameRequirements(requirementsHistory)) {
+ current.add(requirementsHistory);
+ } else {
+ current = new ArrayList<>();
+ current.add(requirementsHistory);
+ requirementsVersions.add(current);
+ }
+ });
+
+ // render by common requirements
+ requirementsVersions.forEach(requirementsHistories -> {
sink.tableRow();
- tableCell(requirementsHistory.getVersion());
- tableCell(requirementsHistory.getMaven());
- tableCell(requirementsHistory.getJdk());
+ RequirementsHistory current = requirementsHistories.get(0);
+ if (requirementsHistories.size() == 1) {
+ tableCell(current.getVersion());
+ } else {
+ RequirementsHistory from = requirementsHistories.get(requirementsHistories.size() - 1);
+ tableCell("from " + from.getVersion() + " to " + current.getVersion());
+ }
+ tableCell(current.getMaven());
+ tableCell(current.getJdk());
sink.tableRow_();
});
endTable();
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 9f1178ff..5979fe70 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
@@ -189,8 +189,14 @@ protected void executeReport(Locale locale) throws MavenReportException {
String v = null;
try {
List versions = discoverVersions(requirementsHistoryDetectionRange);
- getLog().info("Detecting requirements history for " + requirementsHistoryDetectionRange + ": "
- + versions.size());
+ if (versions.isEmpty()) {
+ getLog().info("No plugin history found for range " + requirementsHistoryDetectionRange);
+ } else {
+ getLog().info("Detecting plugin requirements history for range "
+ + requirementsHistoryDetectionRange + ": "
+ + versions.size() + " releases, from " + versions.get(0) + " to "
+ + versions.get(versions.size() - 1));
+ }
Collections.reverse(versions);
for (Version version : versions) {
diff --git a/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/RequirementsHistory.java b/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/RequirementsHistory.java
index 53446d44..9d797168 100644
--- a/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/RequirementsHistory.java
+++ b/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/RequirementsHistory.java
@@ -20,6 +20,7 @@
import java.util.Arrays;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
import org.apache.commons.lang3.StringUtils;
@@ -173,4 +174,8 @@ private static String getPluginParameter(Plugin plugin, String parameter) {
return null;
}
+
+ public boolean hasSameRequirements(RequirementsHistory other) {
+ return Objects.equals(this.maven, other.getMaven()) && Objects.equals(this.jdk, other.getJdk());
+ }
}