You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by kw...@apache.org on 2020/07/26 11:10:50 UTC

[jackrabbit-filevault-package-maven-plugin] branch master updated: JCRVLT-455 allow to ignore certain package dependencies

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

kwin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault-package-maven-plugin.git


The following commit(s) were added to refs/heads/master by this push:
     new 74db31b  JCRVLT-455 allow to ignore certain package dependencies
74db31b is described below

commit 74db31bea1c14238c497cc4e009a026ef1bebc26
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Sun Jul 26 13:10:40 2020 +0200

    JCRVLT-455 allow to ignore certain package dependencies
---
 .../filevault/maven/packaging/AbstractValidateMojo.java    | 14 ++++++++++++--
 .../validator/impl/context/DependencyResolver.java         |  5 +++++
 src/site/markdown/validators.md                            |  4 ++--
 .../maven/packaging/AbstractValidateMojoTest.java          |  9 +++++++++
 4 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java
index 0666b82..05d1b20 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojo.java
@@ -56,6 +56,8 @@ import org.sonatype.plexus.build.incremental.BuildContext;
  * Common ancestor for all validation related mojos
  */
 public abstract class AbstractValidateMojo extends AbstractMojo {
+    public static final String IGNORE_GAV = "ignore";
+
     @Parameter(property = "vault.skipValidation", defaultValue = "false", required = true)
     boolean skipValidation;
 
@@ -144,7 +146,9 @@ public abstract class AbstractValidateMojo extends AbstractMojo {
 
     /**
      * Mapping of package dependencies given via group and name to Maven identifiers for enhanced validation.
-     * Each entry must have the format {@code <group>:<name>=<groupId>:<artifactId>}
+     * Each entry must have the format {@code <group>:<name>=<groupId>:<artifactId>}.
+     * To disable lookup (e.g. because referenced artifact is not available in a Maven repository) use {@code <group>:<name>=ignore}.
+     * This will also prevent the WARNING which would be otherwise be emitted.
      */
     @Parameter(property = "vault.package.dependency.to.maven.ga")
     protected Collection<String> mapPackageDependencyToMavenGa;
@@ -163,6 +167,11 @@ public abstract class AbstractValidateMojo extends AbstractMojo {
     protected final ValidationHelper validationHelper;
 
     protected DependencyResolver resolver;
+    
+    /**
+     * Artificial Maven artifact which indicates that it should not be considered for further lookup!
+     */
+    public static final Artifact IGNORE_ARTIFACT = new DefaultArtifact("ignore", "ignore", "1.0", "", "", "", null);
 
     public AbstractValidateMojo() {
         super();
@@ -175,7 +184,8 @@ public abstract class AbstractValidateMojo extends AbstractMojo {
         return mapPackageDependencyToMavenGa.stream()
                 .map(s -> s.split("=", 2))
                 .peek((p) -> { if(p.length != 2) { throw new IllegalArgumentException("Could not parse value"); } })
-                .collect(Collectors.toMap(a -> Dependency.fromString(a[0]), a -> { String[] mavenGA = a[1].split(":", 2); if(mavenGA.length != 2) { throw new IllegalArgumentException("Could not parse Maven group Id and artifact Id (must be separated by ':')"); } return new DefaultArtifact(mavenGA[0], mavenGA[1], "", "", "", "", null);} ));
+                // cannot use null values due to https://bugs.openjdk.java.net/browse/JDK-8148463 therefore rely on artificial IGNORE_ARTIFACT
+                .collect(Collectors.toMap(a -> Dependency.fromString(a[0]), a -> { if (a[1].equalsIgnoreCase(IGNORE_GAV)) { return IGNORE_ARTIFACT; } String[] mavenGA = a[1].split(":", 2); if(mavenGA.length != 2) { throw new IllegalArgumentException("Could not parse Maven group Id and artifact Id (must be separated by ':')"); } return new DefaultArtifact(mavenGA[0], mavenGA[1], "", "", "", "", null);} ));
     }
     @Override 
     public void execute() throws MojoExecutionException, MojoFailureException {
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/DependencyResolver.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/DependencyResolver.java
index 1a43016..bb92031 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/DependencyResolver.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/validator/impl/context/DependencyResolver.java
@@ -24,6 +24,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.jackrabbit.filevault.maven.packaging.AbstractValidateMojo;
 import org.apache.jackrabbit.filevault.maven.packaging.MavenBasedPackageDependency;
 import org.apache.jackrabbit.vault.packaging.Dependency;
 import org.apache.jackrabbit.vault.packaging.PackageId;
@@ -100,6 +101,10 @@ public class DependencyResolver {
         final String groupId;
         final String artifactId;
         Artifact artifact = mapPackageDependencyToMavenArtifact.get(dependency);
+        // is it special artifact which is supposed to be ignored?
+        if (artifact == AbstractValidateMojo.IGNORE_ARTIFACT) {
+            return null;
+        }
         // is it part of the mapping table?
         if (artifact != null) {
             groupId = artifact.getGroupId();
diff --git a/src/site/markdown/validators.md b/src/site/markdown/validators.md
index c9430f4..7b8c05a 100644
--- a/src/site/markdown/validators.md
+++ b/src/site/markdown/validators.md
@@ -37,12 +37,12 @@ Here is an example configuration
   <validatorsSettings>
     <jackrabbit-filter>
       <isDisabled>false</isDisabled><!-- false is default, true disables the validator completely, all other setting are not relevant then -->
-      <defaultSeverity>error</defaultSeverity><!-- lower case enum values of .. />
+      <defaultSeverity>error</defaultSeverity>
       <options>
         <severityForUncoveredAncestorNodes>error</severityForUncoveredAncestorNodes>
       </options>
     </jackrabbit-filter>
-    <!-- later items potentially overwrite earlier items -->
+    <!-- succeeding items potentially overwrite preceding items -->
     <jackrabbit-filter:mygroup:mypackage>
       <isDisabled>true</isDisabled><!-- disable the validator for a specific package -->
     </jackrabbit-filter>
diff --git a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojoTest.java b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojoTest.java
index 0cabf0a..44c39b0 100644
--- a/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojoTest.java
+++ b/src/test/java/org/apache/jackrabbit/filevault/maven/packaging/AbstractValidateMojoTest.java
@@ -35,6 +35,15 @@ import org.junit.Test;
 public class AbstractValidateMojoTest {
 
     @Test
+    public void testValidMapWithIgnoredArtifacts() {
+        Assert.assertThat(AbstractValidateMojo.resolveMap(Arrays.asList("group1:name1=ignore", "group2:name2=groupId2:artifactId2")), 
+                Matchers.allOf(
+                    Matchers.hasEntry(Dependency.fromString("group1:name1"), AbstractValidateMojo.IGNORE_ARTIFACT),
+                    Matchers.hasEntry(Dependency.fromString("group2:name2"), new DefaultArtifact("groupId2", "artifactId2", "", "", "", "", null)),
+                    Matchers.aMapWithSize(2)));
+    }
+
+    @Test
     public void testValidMap() {
         Assert.assertThat(AbstractValidateMojo.resolveMap(Arrays.asList("group1:name1=groupId1:artifactId1", "group2:name2=groupId2:artifactId2")), 
                 Matchers.allOf(