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(