Author: bentmann Date: Mon Nov 23 23:09:20 2009 New Revision: 883537 URL: http://svn.apache.org/viewvc?rev=883537&view=rev Log: [MNG-4466] Plugin Metaversion Compatibility
Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-plugin-version.xml Modified: maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java?rev=883537&r1=883536&r2=883537&view=diff ============================================================================== --- maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java (original) +++ maven/maven-3/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java Mon Nov 23 23:09:20 2009 @@ -264,7 +264,7 @@ validateStringNotEmpty( "build.plugins.plugin.version", problems, errOn31, p.getVersion(), p.getKey() ); - validateVersion( "build.plugins.plugin.version", problems, errOn30, p.getVersion(), p.getKey() ); + validatePluginVersion( "build.plugins.plugin.version", problems, errOn30, p.getVersion(), p.getKey() ); validateBoolean( "build.plugins.plugin.inherited", problems, errOn30, p.getInherited(), p.getKey() ); @@ -655,6 +655,32 @@ return false; } + private boolean validatePluginVersion( String fieldName, ModelProblemCollector problems, Severity severity, String string, + String sourceHint ) + { + if ( string == null || string.length() <= 0 ) + { + return true; + } + + if ( !hasExpression( string ) && !"RELEASE".equals( string ) && !"LATEST".equals( string ) ) + { + return true; + } + + if ( sourceHint != null ) + { + addViolation( problems, severity, "'" + fieldName + "' must be a valid version for " + sourceHint + + " but is '" + string + "'." ); + } + else + { + addViolation( problems, severity, "'" + fieldName + "' must be a valid version but is '" + string + "'." ); + } + + return false; + } + private static void addViolation( ModelProblemCollector problems, Severity severity, String message ) { problems.add( severity, message, null ); Modified: maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java?rev=883537&r1=883536&r2=883537&view=diff ============================================================================== --- maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java (original) +++ maven/maven-3/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java Mon Nov 23 23:09:20 2009 @@ -376,9 +376,11 @@ { SimpleProblemCollector result = validate( "bad-plugin-version.xml" ); - assertViolations( result, 0, 1, 0 ); + assertViolations( result, 0, 3, 0 ); assertTrue( result.getErrors().get( 0 ).contains( "test:mip" ) ); + assertTrue( result.getErrors().get( 1 ).contains( "test:rmv" ) ); + assertTrue( result.getErrors().get( 2 ).contains( "test:lmv" ) ); } public void testDistributionManagementStatus() Modified: maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-plugin-version.xml URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-plugin-version.xml?rev=883537&r1=883536&r2=883537&view=diff ============================================================================== --- maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-plugin-version.xml (original) +++ maven/maven-3/trunk/maven-model-builder/src/test/resources/poms/validation/bad-plugin-version.xml Mon Nov 23 23:09:20 2009 @@ -27,9 +27,24 @@ <plugins> <plugin> <groupId>test</groupId> + <artifactId>good</artifactId> + <version>1.0</version> + </plugin> + <plugin> + <groupId>test</groupId> <artifactId>mip</artifactId> <version>${missing.property}</version> </plugin> + <plugin> + <groupId>test</groupId> + <artifactId>rmv</artifactId> + <version>RELEASE</version> + </plugin> + <plugin> + <groupId>test</groupId> + <artifactId>lmv</artifactId> + <version>LATEST</version> + </plugin> </plugins> </build> </project>