Skip to content

Commit c54baa6

Browse files
[MNG-7939] Allow to exclude plugins from validation
(cherry picked from commit 644a15c)
1 parent ecd59b7 commit c54baa6

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java

+31
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,12 @@
3030
import java.util.HashMap;
3131
import java.util.LinkedHashMap;
3232
import java.util.LinkedHashSet;
33+
import java.util.List;
3334
import java.util.Locale;
3435
import java.util.Map;
3536
import java.util.Set;
3637
import java.util.concurrent.ConcurrentHashMap;
38+
import java.util.stream.Collectors;
3739

3840
import org.apache.maven.eventspy.AbstractEventSpy;
3941
import org.apache.maven.execution.ExecutionEvent;
@@ -61,8 +63,12 @@ public final class DefaultPluginValidationManager extends AbstractEventSpy imple
6163

6264
private static final String ISSUES_KEY = DefaultPluginValidationManager.class.getName() + ".issues";
6365

66+
private static final String PLUGIN_EXCLUDES_KEY = DefaultPluginValidationManager.class.getName() + ".excludes";
67+
6468
private static final String MAVEN_PLUGIN_VALIDATION_KEY = "maven.plugin.validation";
6569

70+
private static final String MAVEN_PLUGIN_VALIDATION_EXCLUDES_KEY = "maven.plugin.validation.excludes";
71+
6672
private static final ValidationReportLevel DEFAULT_VALIDATION_LEVEL = ValidationReportLevel.INLINE;
6773

6874
private static final Collection<ValidationReportLevel> INLINE_VALIDATION_LEVEL = Collections.unmodifiableCollection(
@@ -87,12 +93,28 @@ public void onEvent(Object event) {
8793
RepositorySystemSession repositorySystemSession =
8894
executionEvent.getSession().getRepositorySession();
8995
validationReportLevel(repositorySystemSession); // this will parse and store it in session.data
96+
validationPluginExcludes(repositorySystemSession);
9097
} else if (executionEvent.getType() == ExecutionEvent.Type.SessionEnded) {
9198
reportSessionCollectedValidationIssues(executionEvent.getSession());
9299
}
93100
}
94101
}
95102

103+
private List<?> validationPluginExcludes(RepositorySystemSession session) {
104+
return (List<?>) session.getData().computeIfAbsent(PLUGIN_EXCLUDES_KEY, () -> parsePluginExcludes(session));
105+
}
106+
107+
private List<String> parsePluginExcludes(RepositorySystemSession session) {
108+
String excludes = ConfigUtils.getString(session, null, MAVEN_PLUGIN_VALIDATION_EXCLUDES_KEY);
109+
if (excludes == null || excludes.isEmpty()) {
110+
return Collections.emptyList();
111+
}
112+
return Arrays.stream(excludes.split(","))
113+
.map(String::trim)
114+
.filter(s -> !s.isEmpty())
115+
.collect(Collectors.toList());
116+
}
117+
96118
private ValidationReportLevel validationReportLevel(RepositorySystemSession session) {
97119
return (ValidationReportLevel) session.getData()
98120
.computeIfAbsent(ValidationReportLevel.class, () -> parseValidationReportLevel(session));
@@ -141,6 +163,9 @@ private void mayReportInline(RepositorySystemSession session, IssueLocality loca
141163
public void reportPluginValidationIssue(
142164
IssueLocality locality, RepositorySystemSession session, Artifact pluginArtifact, String issue) {
143165
String pluginKey = pluginKey(pluginArtifact);
166+
if (validationPluginExcludes(session).contains(pluginKey)) {
167+
return;
168+
}
144169
PluginValidationIssues pluginIssues =
145170
pluginIssues(session).computeIfAbsent(pluginKey, k -> new PluginValidationIssues());
146171
pluginIssues.reportPluginIssue(locality, null, issue);
@@ -151,6 +176,9 @@ public void reportPluginValidationIssue(
151176
public void reportPluginValidationIssue(
152177
IssueLocality locality, MavenSession mavenSession, MojoDescriptor mojoDescriptor, String issue) {
153178
String pluginKey = pluginKey(mojoDescriptor);
179+
if (validationPluginExcludes(mavenSession.getRepositorySession()).contains(pluginKey)) {
180+
return;
181+
}
154182
PluginValidationIssues pluginIssues = pluginIssues(mavenSession.getRepositorySession())
155183
.computeIfAbsent(pluginKey, k -> new PluginValidationIssues());
156184
pluginIssues.reportPluginIssue(locality, pluginDeclaration(mavenSession, mojoDescriptor), issue);
@@ -165,6 +193,9 @@ public void reportPluginMojoValidationIssue(
165193
Class<?> mojoClass,
166194
String issue) {
167195
String pluginKey = pluginKey(mojoDescriptor);
196+
if (validationPluginExcludes(mavenSession.getRepositorySession()).contains(pluginKey)) {
197+
return;
198+
}
168199
PluginValidationIssues pluginIssues = pluginIssues(mavenSession.getRepositorySession())
169200
.computeIfAbsent(pluginKey, k -> new PluginValidationIssues());
170201
pluginIssues.reportPluginMojoIssue(

0 commit comments

Comments
 (0)