This is an automated email from the ASF dual-hosted git repository. sjaranowski pushed a commit to branch MNG-7939 in repository https://gitbox.apache.org/repos/asf/maven.git
commit c29c0cb9a3b152c34b2d009f7dc09480a9472ef5 Author: Slawomir Jaranowski <s.jaranow...@gmail.com> AuthorDate: Sat Nov 18 17:09:39 2023 +0100 [MNG-7939] Allow to exclude plugins from validation --- .../internal/DefaultPluginValidationManager.java | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) 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 7ef25648ce..0794a548f7 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 @@ -30,10 +30,12 @@ import java.util.EnumSet; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.LinkedHashSet; +import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; import org.apache.maven.eventspy.AbstractEventSpy; import org.apache.maven.execution.ExecutionEvent; @@ -61,8 +63,12 @@ public final class DefaultPluginValidationManager extends AbstractEventSpy imple private static final String ISSUES_KEY = DefaultPluginValidationManager.class.getName() + ".issues"; + private static final String PLUGIN_EXCLUDES_KEY = DefaultPluginValidationManager.class.getName() + ".excludes"; + private static final String MAVEN_PLUGIN_VALIDATION_KEY = "maven.plugin.validation"; + private static final String MAVEN_PLUGIN_VALIDATION_EXCLUDES_KEY = "maven.plugin.validation.excludes"; + private static final ValidationReportLevel DEFAULT_VALIDATION_LEVEL = ValidationReportLevel.INLINE; private static final Collection<ValidationReportLevel> INLINE_VALIDATION_LEVEL = Collections.unmodifiableCollection( @@ -87,12 +93,28 @@ public final class DefaultPluginValidationManager extends AbstractEventSpy imple RepositorySystemSession repositorySystemSession = executionEvent.getSession().getRepositorySession(); validationReportLevel(repositorySystemSession); // this will parse and store it in session.data + validationPluginExcludes(repositorySystemSession); } else if (executionEvent.getType() == ExecutionEvent.Type.SessionEnded) { reportSessionCollectedValidationIssues(executionEvent.getSession()); } } } + private List<?> validationPluginExcludes(RepositorySystemSession session) { + return (List<?>) session.getData().computeIfAbsent(PLUGIN_EXCLUDES_KEY, () -> parsePluginExcludes(session)); + } + + private List<String> parsePluginExcludes(RepositorySystemSession session) { + String excludes = ConfigUtils.getString(session, null, MAVEN_PLUGIN_VALIDATION_EXCLUDES_KEY); + if (excludes == null || excludes.isEmpty()) { + return Collections.emptyList(); + } + return Arrays.stream(excludes.split(",")) + .map(String::trim) + .filter(s -> !s.isEmpty()) + .collect(Collectors.toList()); + } + private ValidationReportLevel validationReportLevel(RepositorySystemSession session) { return (ValidationReportLevel) session.getData() .computeIfAbsent(ValidationReportLevel.class, () -> parseValidationReportLevel(session)); @@ -141,6 +163,9 @@ public final class DefaultPluginValidationManager extends AbstractEventSpy imple public void reportPluginValidationIssue( IssueLocality locality, RepositorySystemSession session, Artifact pluginArtifact, String issue) { String pluginKey = pluginKey(pluginArtifact); + if (validationPluginExcludes(session).contains(pluginKey)) { + return; + } PluginValidationIssues pluginIssues = pluginIssues(session).computeIfAbsent(pluginKey, k -> new PluginValidationIssues()); pluginIssues.reportPluginIssue(locality, null, issue); @@ -151,6 +176,9 @@ public final class DefaultPluginValidationManager extends AbstractEventSpy imple public void reportPluginValidationIssue( IssueLocality locality, MavenSession mavenSession, MojoDescriptor mojoDescriptor, String issue) { String pluginKey = pluginKey(mojoDescriptor); + if (validationPluginExcludes(mavenSession.getRepositorySession()).contains(pluginKey)) { + return; + } PluginValidationIssues pluginIssues = pluginIssues(mavenSession.getRepositorySession()) .computeIfAbsent(pluginKey, k -> new PluginValidationIssues()); pluginIssues.reportPluginIssue(locality, pluginDeclaration(mavenSession, mojoDescriptor), issue); @@ -165,6 +193,9 @@ public final class DefaultPluginValidationManager extends AbstractEventSpy imple Class<?> mojoClass, String issue) { String pluginKey = pluginKey(mojoDescriptor); + if (validationPluginExcludes(mavenSession.getRepositorySession()).contains(pluginKey)) { + return; + } PluginValidationIssues pluginIssues = pluginIssues(mavenSession.getRepositorySession()) .computeIfAbsent(pluginKey, k -> new PluginValidationIssues()); pluginIssues.reportPluginMojoIssue(