This is an automated email from the ASF dual-hosted git repository. michaelo pushed a commit to branch MNG-6213 in repository https://gitbox.apache.org/repos/asf/maven.git
commit 859e344f4d5f7bfa00caf7343ea6554138e9dcf7 Author: Michael Warnecke <13...@nordakademie.de> AuthorDate: Sat Sep 23 18:37:09 2017 +0200 [MNG-6213] Validate scope in dependencyManagement This closes #131 --- .../model/validation/DefaultModelValidator.java | 10 ++- .../validation/DefaultModelValidatorTest.java | 10 +++ .../validation/bad-dependency-management-scope.xml | 72 ++++++++++++++++++++++ 3 files changed, 90 insertions(+), 2 deletions(-) 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 1c84776..f58d03a 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 @@ -105,13 +105,13 @@ public class DefaultModelValidator + ", the parent element cannot have the same groupId:artifactId as the project.", parent ); } - + if ( equals( "LATEST", parent.getVersion() ) || equals( "RELEASE", parent.getVersion() ) ) { addViolation( problems, Severity.WARNING, Version.BASE, "parent.version", null, "is either LATEST or RELEASE (both of them are being deprecated)", parent ); } - + } if ( request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 ) @@ -598,6 +598,12 @@ public class DefaultModelValidator validateEffectiveModelAgainstDependency( prefix, problems, m, d, request ); } + else + { + validateEnum( prefix + "scope", problems, Severity.WARNING, Version.V20, d.getScope(), + d.getManagementKey(), d, "provided", "compile", "runtime", "test", "system", + "import" ); + } } } } 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 3f31526..a9d4c00 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 @@ -339,6 +339,16 @@ public class DefaultModelValidatorTest assertTrue( result.getWarnings().get( 1 ).contains( "test:g" ) ); } + public void testBadDependencyManagementScope() + throws Exception + { + SimpleProblemCollector result = validate( "bad-dependency-management-scope.xml" ); + + assertViolations( result, 0, 0, 1 ); + + assertContains( result.getWarnings().get( 0 ), "test:g" ); + } + public void testBadDependencyVersion() throws Exception { diff --git a/maven-model-builder/src/test/resources/poms/validation/bad-dependency-management-scope.xml b/maven-model-builder/src/test/resources/poms/validation/bad-dependency-management-scope.xml new file mode 100644 index 0000000..6b37a85 --- /dev/null +++ b/maven-model-builder/src/test/resources/poms/validation/bad-dependency-management-scope.xml @@ -0,0 +1,72 @@ +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<project> + <modelVersion>4.0.0</modelVersion> + <artifactId>aid</artifactId> + <groupId>gid</groupId> + <version>0.1</version> + + <dependencyManagement> + <dependencies> + <dependency> + <groupId>test</groupId> + <artifactId>a</artifactId> + <version>0.2</version> + </dependency> + <dependency> + <groupId>test</groupId> + <artifactId>b</artifactId> + <version>0.2</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>test</groupId> + <artifactId>c</artifactId> + <version>0.2</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>test</groupId> + <artifactId>d</artifactId> + <version>0.2</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>test</groupId> + <artifactId>e</artifactId> + <version>0.2</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>test</groupId> + <artifactId>f</artifactId> + <version>0.2</version> + <scope>import</scope> + </dependency> + <dependency> + <groupId>test</groupId> + <artifactId>g</artifactId> + <version>1</version> + <type>pom</type> + <scope>include</scope> + </dependency> + </dependencies> + </dependencyManagement> +</project>