Skip to content

Commit e97ba77

Browse files
committed
[MPLUGIN-510] group history per common requirements
1 parent 6f9c3d9 commit e97ba77

File tree

5 files changed

+44
-11
lines changed

5 files changed

+44
-11
lines changed

maven-plugin-report-plugin/src/it/plugin-report-detect-requirements-history/pom.xml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ under the License.
2424
<modelVersion>4.0.0</modelVersion>
2525

2626
<groupId>org.apache.maven.plugins</groupId>
27-
<artifactId>maven-plugin-report-plugin</artifactId><!-- intentionally reuse plugin's groupId:artifactId to build its releases history -->
28-
<version>1.0-SNAPSHOT</version>
27+
<artifactId>maven-assembly-plugin</artifactId><!-- intentionally reuse plugin's groupId:artifactId to build its releases history -->
28+
<version>3.7.1-SNAPSHOT</version>
2929
<packaging>maven-plugin</packaging>
3030

3131
<name>MPLUGIN-511</name>
@@ -84,6 +84,9 @@ under the License.
8484
<groupId>org.apache.maven.plugins</groupId>
8585
<artifactId>maven-plugin-report-plugin</artifactId>
8686
<version>@project.version@</version>
87+
<configuration>
88+
<requirementsHistoryDetectionRange>[3,3.7.0]</requirementsHistoryDetectionRange>
89+
</configuration>
8790
</plugin>
8891
</plugins>
8992
</reporting>

maven-plugin-report-plugin/src/it/plugin-report-detect-requirements-history/verify.groovy

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ assert new File( basedir, 'target/site/noop-mojo.html' ).isFile()
2222
def pluginInfo = new File( basedir, 'target/site/plugin-info.html' )
2323
assert pluginInfo.isFile()
2424

25-
assert pluginInfo.text.contains('3.11.0')
26-
assert pluginInfo.text.contains('3.10.2')
27-
assert pluginInfo.text.contains('3.9.0')
28-
assert pluginInfo.text.contains('3.7.0')
25+
assert pluginInfo.text.contains('from 3.4.0 to 3.6.0')
26+
assert pluginInfo.text.contains('>3.2.5<')
2927
assert pluginInfo.text.contains('>8<')

maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginOverviewRenderer.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -211,11 +211,32 @@ private void renderRequirementsHistoriesSection() {
211211
getI18nString("systemrequirements.history.jdk")
212212
});
213213

214+
// group by same requirements
215+
final List<List<RequirementsHistory>> requirementsVersions = new ArrayList<>();
214216
requirementsHistories.forEach(requirementsHistory -> {
217+
List<RequirementsHistory> current =
218+
requirementsVersions.isEmpty() ? null : requirementsVersions.get(requirementsVersions.size() - 1);
219+
if (current != null && current.get(0).hasSameRequirements(requirementsHistory)) {
220+
current.add(requirementsHistory);
221+
} else {
222+
current = new ArrayList<>();
223+
current.add(requirementsHistory);
224+
requirementsVersions.add(current);
225+
}
226+
});
227+
228+
// render by common requirements
229+
requirementsVersions.forEach(requirementsHistories -> {
215230
sink.tableRow();
216-
tableCell(requirementsHistory.getVersion());
217-
tableCell(requirementsHistory.getMaven());
218-
tableCell(requirementsHistory.getJdk());
231+
RequirementsHistory current = requirementsHistories.get(0);
232+
if (requirementsHistories.size() == 1) {
233+
tableCell(current.getVersion());
234+
} else {
235+
RequirementsHistory from = requirementsHistories.get(requirementsHistories.size() - 1);
236+
tableCell("from " + from.getVersion() + " to " + current.getVersion());
237+
}
238+
tableCell(current.getMaven());
239+
tableCell(current.getJdk());
219240
sink.tableRow_();
220241
});
221242
endTable();

maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,14 @@ protected void executeReport(Locale locale) throws MavenReportException {
189189
String v = null;
190190
try {
191191
List<Version> versions = discoverVersions(requirementsHistoryDetectionRange);
192-
getLog().info("Detecting requirements history for " + requirementsHistoryDetectionRange + ": "
193-
+ versions.size());
192+
if (versions.isEmpty()) {
193+
getLog().info("No plugin history found for range " + requirementsHistoryDetectionRange);
194+
} else {
195+
getLog().info("Detecting plugin requirements history for range "
196+
+ requirementsHistoryDetectionRange + ": "
197+
+ versions.size() + " releases, from " + versions.get(0) + " to "
198+
+ versions.get(versions.size() - 1));
199+
}
194200

195201
Collections.reverse(versions);
196202
for (Version version : versions) {

maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/RequirementsHistory.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import java.util.Arrays;
2222
import java.util.Map;
23+
import java.util.Objects;
2324
import java.util.Optional;
2425

2526
import org.apache.commons.lang3.StringUtils;
@@ -173,4 +174,8 @@ private static String getPluginParameter(Plugin plugin, String parameter) {
173174

174175
return null;
175176
}
177+
178+
public boolean hasSameRequirements(RequirementsHistory other) {
179+
return Objects.equals(this.maven, other.getMaven()) && Objects.equals(this.jdk, other.getJdk());
180+
}
176181
}

0 commit comments

Comments
 (0)