[MNG-4466] Plugin Metaversion Compatibility

git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@883537 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Benjamin Bentmann 2009-11-23 23:09:20 +00:00
parent a8f2a0dd49
commit 6de5f3f3de
3 changed files with 45 additions and 2 deletions

View File

@ -264,7 +264,7 @@ public class DefaultModelValidator
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 @@ public class DefaultModelValidator
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 );

View File

@ -376,9 +376,11 @@ public class DefaultModelValidatorTest
{
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()

View File

@ -25,11 +25,26 @@ under the License.
<build>
<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>