You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sj...@apache.org on 2023/11/18 16:10:06 UTC

(maven) branch MNG-7939 created (now c29c0cb9a3)

This is an automated email from the ASF dual-hosted git repository.

sjaranowski pushed a change to branch MNG-7939
in repository https://gitbox.apache.org/repos/asf/maven.git


      at c29c0cb9a3 [MNG-7939] Allow to exclude plugins from validation

This branch includes the following new commits:

     new c29c0cb9a3 [MNG-7939] Allow to exclude plugins from validation

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(maven) 01/01: [MNG-7939] Allow to exclude plugins from validation

Posted by sj...@apache.org.
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....@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(