[MNG-7799] Plugin validation may falsely report there are issues (#1136)
But to show no issue, as locality to be shown is not same as reported
issues.
---
https://issues.apache.org/jira/browse/MNG-7799
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java
index 17423b6..bf4122f 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java
@@ -161,12 +161,11 @@ private void reportSessionCollectedValidationIssues(MavenSession mavenSession) {
return; // we were asked to not report anything OR reporting already happened inline
}
ConcurrentHashMap<String, PluginValidationIssues> issuesMap = pluginIssues(mavenSession.getRepositorySession());
- if (!issuesMap.isEmpty()) {
+ EnumSet<IssueLocality> issueLocalitiesToReport = validationReportLevel == ValidationReportLevel.VERBOSE
+ ? EnumSet.allOf(IssueLocality.class)
+ : EnumSet.of(IssueLocality.INTERNAL);
- EnumSet<IssueLocality> issueLocalitiesToReport = validationReportLevel == ValidationReportLevel.VERBOSE
- ? EnumSet.allOf(IssueLocality.class)
- : EnumSet.of(IssueLocality.INTERNAL);
-
+ if (hasAnythingToReport(issuesMap, issueLocalitiesToReport)) {
logger.warn("");
logger.warn("Plugin {} validation issues were detected in following plugin(s)", issueLocalitiesToReport);
logger.warn("");
@@ -227,6 +226,16 @@ private void reportSessionCollectedValidationIssues(MavenSession mavenSession) {
}
}
+ private boolean hasAnythingToReport(
+ Map<String, PluginValidationIssues> issuesMap, EnumSet<IssueLocality> issueLocalitiesToReport) {
+ for (PluginValidationIssues issues : issuesMap.values()) {
+ if (hasAnythingToReport(issues, issueLocalitiesToReport)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
private boolean hasAnythingToReport(PluginValidationIssues issues, EnumSet<IssueLocality> issueLocalitiesToReport) {
for (IssueLocality issueLocality : issueLocalitiesToReport) {
Set<String> pluginIssues = issues.pluginIssues.get(issueLocality);