Updated Branches: refs/heads/master b5ce17bb8 -> 65c135d52
[MNG-3832] Allow wildcards in dependency exclusions Already supported since M3.0, now adjust warnings Project: http://git-wip-us.apache.org/repos/asf/maven/repo Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/65c135d5 Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/65c135d5 Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/65c135d5 Branch: refs/heads/master Commit: 65c135d5298b2680f03593a221b15bb4689c89e9 Parents: b5ce17b Author: Robert Scholte <[email protected]> Authored: Thu Nov 21 22:17:43 2013 +0100 Committer: Robert Scholte <[email protected]> Committed: Thu Nov 21 22:17:43 2013 +0100 ---------------------------------------------------------------------- .../model/validation/DefaultModelValidator.java | 41 ++++++++++++++++++-- .../validation/DefaultModelValidatorTest.java | 9 ++++- 2 files changed, 45 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven/blob/65c135d5/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java ---------------------------------------------------------------------- diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java index 67d255f..54597d9 100644 --- a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java +++ b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java @@ -64,6 +64,8 @@ public class DefaultModelValidator private static final Pattern ID_REGEX = Pattern.compile( "[A-Za-z0-9_\\-.]+" ); + private static final Pattern ID_WITH_WILDCARDS_REGEX = Pattern.compile( "[A-Za-z0-9_\\-.?*]+" ); + private static final String ILLEGAL_FS_CHARS = "\\/:\"<>|?*"; private static final String ILLEGAL_VERSION_CHARS = ILLEGAL_FS_CHARS; @@ -526,11 +528,22 @@ public class DefaultModelValidator { for ( Exclusion exclusion : d.getExclusions() ) { - validateId( prefix + "exclusions.exclusion.groupId", problems, Severity.WARNING, Version.V20, - exclusion.getGroupId(), d.getManagementKey(), exclusion ); + if ( request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 ) + { + validateId( prefix + "exclusions.exclusion.groupId", problems, Severity.WARNING, Version.V20, + exclusion.getGroupId(), d.getManagementKey(), exclusion ); + + validateId( prefix + "exclusions.exclusion.artifactId", problems, Severity.WARNING, Version.V20, + exclusion.getArtifactId(), d.getManagementKey(), exclusion ); + } + else + { + validateIdWithWildcards( prefix + "exclusions.exclusion.groupId", problems, Severity.WARNING, Version.V30, + exclusion.getGroupId(), d.getManagementKey(), exclusion ); - validateId( prefix + "exclusions.exclusion.artifactId", problems, Severity.WARNING, Version.V20, - exclusion.getArtifactId(), d.getManagementKey(), exclusion ); + validateIdWithWildcards( prefix + "exclusions.exclusion.artifactId", problems, Severity.WARNING, Version.V30, + exclusion.getArtifactId(), d.getManagementKey(), exclusion ); + } } } } @@ -634,6 +647,26 @@ public class DefaultModelValidator } } + private boolean validateIdWithWildcards( String fieldName, ModelProblemCollector problems, Severity severity, Version version, String id, + String sourceHint, InputLocationTracker tracker ) + { + if ( !validateStringNotEmpty( fieldName, problems, severity, version, id, sourceHint, tracker ) ) + { + return false; + } + else + { + boolean match = ID_WITH_WILDCARDS_REGEX.matcher( id ).matches(); + if ( !match ) + { + addViolation( problems, severity, version, fieldName, sourceHint, "with value '" + id + + "' does not match a valid id pattern.", tracker ); + } + return match; + } + } + + private boolean validateStringNoExpression( String fieldName, ModelProblemCollector problems, Severity severity, Version version, String string, InputLocationTracker tracker ) { http://git-wip-us.apache.org/repos/asf/maven/blob/65c135d5/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java ---------------------------------------------------------------------- diff --git a/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java b/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java index 065a06f..ac7ead0 100644 --- a/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java +++ b/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java @@ -555,7 +555,7 @@ public class DefaultModelValidatorTest public void testBadDependencyExclusionId() throws Exception { - SimpleProblemCollector result = validate( "bad-dependency-exclusion-id.xml" ); + SimpleProblemCollector result = validateEffective( "bad-dependency-exclusion-id.xml", ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 ); assertViolations( result, 0, 0, 2 ); @@ -563,6 +563,13 @@ public class DefaultModelValidatorTest "'dependencies.dependency.exclusions.exclusion.groupId' for gid:aid:jar" ); assertContains( result.getWarnings().get( 1 ), "'dependencies.dependency.exclusions.exclusion.artifactId' for gid:aid:jar" ); + + // MNG-3832: Aether (part of M3+) supports wildcard expressions for exclusions + + SimpleProblemCollector result_30 = validate( "bad-dependency-exclusion-id.xml" ); + + assertViolations( result_30, 0, 0, 0 ); + } public void testMissingDependencyExclusionId()
