You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/07/01 21:33:41 UTC

svn commit: r790338 - in /maven/components/trunk: maven-compat/src/main/java/org/apache/maven/project/validation/ maven-core/src/main/java/org/apache/maven/project/ maven-model-builder/src/main/java/org/apache/maven/model/ maven-model-builder/src/main/...

Author: bentmann
Date: Wed Jul  1 19:33:40 2009
New Revision: 790338

URL: http://svn.apache.org/viewvc?rev=790338&view=rev
Log:
o Extended model validator to support more than two validation levels

Modified:
    maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
    maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuilder.java
    maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuildingRequest.java
    maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ModelBuildingRequest.java
    maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java
    maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
    maven/components/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java

Modified: maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java?rev=790338&r1=790337&r2=790338&view=diff
==============================================================================
--- maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java (original)
+++ maven/components/trunk/maven-compat/src/main/java/org/apache/maven/project/validation/DefaultModelValidator.java Wed Jul  1 19:33:40 2009
@@ -42,7 +42,8 @@
     {
         ModelValidationResult result = new ModelValidationResult();
 
-        ModelBuildingRequest request = new DefaultModelBuildingRequest().setLenientValidation( false );
+        ModelBuildingRequest request =
+            new DefaultModelBuildingRequest().setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 );
 
         for ( String message : modelValidator.validateEffectiveModel( model, request ).getErrors() )
         {

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java?rev=790338&r1=790337&r2=790338&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java Wed Jul  1 19:33:40 2009
@@ -182,7 +182,8 @@
                                          configuration.getRemoteRepositories() );
 
         ModelBuildingRequest request = new DefaultModelBuildingRequest();
-        request.setLenientValidation( configuration.istLenientValidation() );
+        request.setValidationLevel( configuration.istLenientValidation() ? ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL
+                        : ModelBuildingRequest.VALIDATION_LEVEL_STRICT );
         request.setProcessPlugins( configuration.isProcessPlugins() );
         request.setProfiles( configuration.getProfiles() );
         request.setActiveProfileIds( configuration.getActiveProfileIds() );

Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuilder.java?rev=790338&r1=790337&r2=790338&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuilder.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuilder.java Wed Jul  1 19:33:40 2009
@@ -234,9 +234,11 @@
 
         try
         {
+            boolean strict = request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0;
+
             Map<String, Object> options =
-                Collections.<String, Object> singletonMap( ModelReader.IS_STRICT,
-                                                           Boolean.valueOf( !request.istLenientValidation() ) );
+                Collections.<String, Object> singletonMap( ModelReader.IS_STRICT, Boolean.valueOf( strict ) );
+
             model = modelReader.read( modelSource.getInputStream(), options );
         }
         catch ( ModelParseException e )

Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuildingRequest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuildingRequest.java?rev=790338&r1=790337&r2=790338&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuildingRequest.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuildingRequest.java Wed Jul  1 19:33:40 2009
@@ -35,7 +35,7 @@
     implements ModelBuildingRequest
 {
 
-    private boolean lenientValidation;
+    private int validationLevel = VALIDATION_LEVEL_STRICT;
 
     private boolean processPlugins;
 
@@ -51,14 +51,14 @@
 
     private ModelResolver modelResolver;
 
-    public boolean istLenientValidation()
+    public int getValidationLevel()
     {
-        return lenientValidation;
+        return validationLevel;
     }
 
-    public DefaultModelBuildingRequest setLenientValidation( boolean lenientValidation )
+    public DefaultModelBuildingRequest setValidationLevel( int validationLevel )
     {
-        this.lenientValidation = lenientValidation;
+        this.validationLevel = validationLevel;
 
         return this;
     }

Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ModelBuildingRequest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ModelBuildingRequest.java?rev=790338&r1=790337&r2=790338&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ModelBuildingRequest.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ModelBuildingRequest.java Wed Jul  1 19:33:40 2009
@@ -34,24 +34,49 @@
 {
 
     /**
+     * Denotes minimal validation of POMs. This validation level is meant for processing of POMs from repositories
+     * during metadata retrieval.
+     */
+    static final int VALIDATION_LEVEL_MINIMAL = 0;
+
+    /**
+     * Denotes validation as performed by Maven 2.0. This validation level is meant as a compatibility mode to allow
+     * users to migrate their projects.
+     */
+    static final int VALIDATION_LEVEL_MAVEN_2_0 = 20;
+
+    /**
+     * Denotes validation as performed by Maven 3.0. This validation level is meant for existing projects.
+     */
+    static final int VALIDATION_LEVEL_MAVEN_3_0 = 30;
+
+    /**
+     * Denotes validation as performed by Maven 3.1. This validation level is meant for new projects.
+     */
+    static final int VALIDATION_LEVEL_MAVEN_3_1 = 31;
+
+    /**
+     * Denotes strict validation as recommended by the current Maven version.
+     */
+    static final int VALIDATION_LEVEL_STRICT = VALIDATION_LEVEL_MAVEN_3_0;
+
+    /**
      * Gets the level of validation to perform on processed models.
      * 
-     * @return {@code true} if lenient validation is enabled and only the dependency information is to be validated,
-     *         {@code false} if strict validation is enabled and the entire model is validated.
+     * @return The level of validation to perform on processed models.
      */
-    boolean istLenientValidation();
+    int getValidationLevel();
 
     /**
-     * Sets the level of validation to perform on processed models. For building of projects, strict validation should
-     * be used to ensure proper building. For the mere retrievel of dependencies during artifact resolution, lenient
-     * validation should be used to account for models of poor quality. By default, models are validated in strict mode.
+     * Sets the level of validation to perform on processed models. For building of projects,
+     * {@link #VALIDATION_LEVEL_STRICT} should be used to ensure proper building. For the mere retrievel of dependencies
+     * during artifact resolution, {@link #VALIDATION_LEVEL_MINIMAL} should be used to account for models of poor
+     * quality. By default, models are validated in strict mode.
      * 
-     * @param lenientValidation A flag whether validation should be lenient instead of strict. For building of projects,
-     *            strict validation should be used to ensure proper building. For the mere retrievel of dependencies
-     *            during artifact resolution, lenient validation should be used to account for models of poor quality.
+     * @param validationLevel The level of validation to perform on processed models.
      * @return This request, never {@code null}.
      */
-    ModelBuildingRequest setLenientValidation( boolean lenientValidation );
+    ModelBuildingRequest setValidationLevel( int validationLevel );
 
     /**
      * Indicates whether plugin executions and configurations should be processed. If enabled, lifecycle-induced plugin

Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java?rev=790338&r1=790337&r2=790338&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java Wed Jul  1 19:33:40 2009
@@ -68,12 +68,12 @@
             build.setPlugins( new ArrayList<Plugin>( normalized.values() ) );
         }
 
-        if ( request.istLenientValidation() )
+        if ( request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 )
         {
             /*
              * NOTE: This is to keep backward-compat with Maven 2.x which did not validate that dependencies are unique
-             * within a single POM. Upon multiple declarations, 2.x just kept the last one. So when we're in lenient
-             * mode for metadata retrieval, we have to deal with such broken POMs and mimic the way 2.x works.
+             * within a single POM. Upon multiple declarations, 2.x just kept the last one. So when we're in
+             * lenient/compat mode, we have to deal with such broken POMs and mimic the way 2.x works.
              */
             Map<String, Dependency> dependencies = new LinkedHashMap<String, Dependency>();
             for ( Dependency dependency : model.getDependencies() )

Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java?rev=790338&r1=790337&r2=790338&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java Wed Jul  1 19:33:40 2009
@@ -70,36 +70,37 @@
             }
         }
 
-        if ( !request.istLenientValidation() )
+        if ( request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
         {
-            validateDependencies( result, model.getDependencies(), "dependencies" );
+            validateDependencies( result, model.getDependencies(), "dependencies", request );
 
             if ( model.getDependencyManagement() != null )
             {
                 validateDependencies( result, model.getDependencyManagement().getDependencies(),
-                                      "dependencyManagment.dependencies" );
+                                      "dependencyManagment.dependencies", request );
             }
 
-            validateRepositories( result, model.getRepositories(), "repositories.repository" );
+            validateRepositories( result, model.getRepositories(), "repositories.repository", request );
 
-            validateRepositories( result, model.getPluginRepositories(), "pluginRepositories.pluginRepository" );
+            validateRepositories( result, model.getPluginRepositories(), "pluginRepositories.pluginRepository", request );
 
             for ( Profile profile : model.getProfiles() )
             {
                 validateDependencies( result, profile.getDependencies(), "profiles.profile[" + profile.getId()
-                    + "].dependencies" );
+                    + "].dependencies", request );
 
                 if ( profile.getDependencyManagement() != null )
                 {
                     validateDependencies( result, profile.getDependencyManagement().getDependencies(),
-                                          "profiles.profile[" + profile.getId() + "].dependencyManagment.dependencies" );
+                                          "profiles.profile[" + profile.getId() + "].dependencyManagment.dependencies",
+                                          request );
                 }
 
                 validateRepositories( result, profile.getRepositories(), "profiles.profile[" + profile.getId()
-                    + "].repositories.repository" );
+                    + "].repositories.repository", request );
 
                 validateRepositories( result, profile.getPluginRepositories(), "profiles.profile[" + profile.getId()
-                    + "].pluginRepositories.pluginRepository" );
+                    + "].pluginRepositories.pluginRepository", request );
             }
         }
 
@@ -208,8 +209,11 @@
             }
         }
 
-        if ( !request.istLenientValidation() )
+        if ( request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
         {
+            boolean warnOnMissingPluginVersion =
+                request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1;
+
             Build build = model.getBuild();
             if ( build != null )
             {
@@ -219,7 +223,8 @@
 
                     validateStringNotEmpty( "build.plugins.plugin.groupId", result, false, p.getGroupId() );
 
-                    validateStringNotEmpty( "build.plugins.plugin.version", result, true, p.getVersion(), p.getKey() );
+                    validateStringNotEmpty( "build.plugins.plugin.version", result, warnOnMissingPluginVersion,
+                                            p.getVersion(), p.getKey() );
                 }
 
                 validateResources( result, build.getResources(), "build.resources.resource" );
@@ -234,9 +239,10 @@
                 {
                     validateStringNotEmpty( "reporting.plugins.plugin.artifactId", result, false, p.getArtifactId() );
 
-                    validateStringNotEmpty( "reporting.plugins.plugin.groupId", result,false, p.getGroupId() );
+                    validateStringNotEmpty( "reporting.plugins.plugin.groupId", result, false, p.getGroupId() );
 
-                    validateStringNotEmpty( "reporting.plugins.plugin.version", result, true, p.getVersion(), p.getKey() );
+                    validateStringNotEmpty( "reporting.plugins.plugin.version", result, warnOnMissingPluginVersion,
+                                            p.getVersion(), p.getKey() );
                 }
             }
 
@@ -263,7 +269,8 @@
         }
     }
 
-    private void validateDependencies( ModelValidationResult result, List<Dependency> dependencies, String prefix )
+    private void validateDependencies( ModelValidationResult result, List<Dependency> dependencies, String prefix,
+                                       ModelBuildingRequest request )
     {
         Map<String, Dependency> index = new HashMap<String, Dependency>();
 
@@ -275,8 +282,10 @@
 
             if ( existing != null )
             {
-                addViolation( result, false, "'" + prefix + ".(groupId:artifactId:type:classifier)' must be unique: " + key
-                    + " -> " + existing.getVersion() + " vs " + dependency.getVersion() );
+                boolean warning = request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0;
+
+                addViolation( result, warning, "'" + prefix + ".(groupId:artifactId:type:classifier)' must be unique: "
+                    + key + " -> " + existing.getVersion() + " vs " + dependency.getVersion() );
             }
             else
             {
@@ -285,7 +294,8 @@
         }
     }
 
-    private void validateRepositories( ModelValidationResult result, List<Repository> repositories, String prefix )
+    private void validateRepositories( ModelValidationResult result, List<Repository> repositories, String prefix,
+                                       ModelBuildingRequest request )
     {
         Map<String, Repository> index = new HashMap<String, Repository>();
 
@@ -301,7 +311,9 @@
 
             if ( existing != null )
             {
-                addViolation( result, false, "'" + prefix + ".id' must be unique: " + repository.getId() + " -> "
+                boolean warning = request.getValidationLevel() < ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0;
+
+                addViolation( result, warning, "'" + prefix + ".id' must be unique: " + repository.getId() + " -> "
                     + existing.getUrl() + " vs " + repository.getUrl() );
             }
             else

Modified: maven/components/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java?rev=790338&r1=790337&r2=790338&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java (original)
+++ maven/components/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java Wed Jul  1 19:33:40 2009
@@ -50,21 +50,23 @@
     private ModelValidationResult validate( String pom )
         throws Exception
     {
-        return validate( pom, false, false );
+        return validateEffective( pom, ModelBuildingRequest.VALIDATION_LEVEL_STRICT );
     }
 
-    private ModelValidationResult validate( String pom, boolean raw, boolean lenient )
+    private ModelValidationResult validateEffective( String pom, int level )
         throws Exception
     {
-        ModelBuildingRequest request = new DefaultModelBuildingRequest().setLenientValidation( lenient );
-        if ( raw )
-        {
-            return validator.validateRawModel( read( pom ), request );
-        }
-        else
-        {
-            return validator.validateEffectiveModel( read( pom ), request );
-        }
+        ModelBuildingRequest request = new DefaultModelBuildingRequest().setValidationLevel( level );
+
+        return validator.validateEffectiveModel( read( pom ), request );
+    }
+
+    private ModelValidationResult validateRaw( String pom, int level )
+        throws Exception
+    {
+        ModelBuildingRequest request = new DefaultModelBuildingRequest().setValidationLevel( level );
+
+        return validator.validateRawModel( read( pom ), request );
     }
 
     @Override
@@ -85,12 +87,18 @@
         super.tearDown();
     }
 
+    private void assertViolations( ModelValidationResult result, int errors, int warnings )
+    {
+        assertEquals( errors, result.getErrors().size() );
+        assertEquals( warnings, result.getWarnings().size() );
+    }
+
     public void testMissingModelVersion()
         throws Exception
     {
         ModelValidationResult result = validate( "missing-modelVersion-pom.xml" );
 
-        assertEquals( 1, result.getErrors().size() );
+        assertViolations( result, 1, 0 );
 
         assertEquals( "'modelVersion' is missing.", result.getErrors().get( 0 ) );
     }
@@ -100,7 +108,7 @@
     {
         ModelValidationResult result = validate( "missing-artifactId-pom.xml" );
 
-        assertEquals( 1, result.getErrors().size() );
+        assertViolations( result, 1, 0 );
 
         assertEquals( "'artifactId' is missing.", result.getErrors().get( 0 ) );
     }
@@ -110,7 +118,7 @@
     {
         ModelValidationResult result = validate( "missing-groupId-pom.xml" );
 
-        assertEquals( 1, result.getErrors().size() );
+        assertViolations( result, 1, 0 );
 
         assertEquals( "'groupId' is missing.", result.getErrors().get( 0 ) );
     }
@@ -120,7 +128,7 @@
     {
         ModelValidationResult result = validate( "invalid-ids-pom.xml" );
 
-        assertEquals( 2, result.getErrors().size() );
+        assertViolations( result, 2, 0 );
 
         assertEquals( "'groupId' with value 'o/a/m' does not match a valid id pattern.", result.getErrors().get( 0 ) );
 
@@ -132,7 +140,7 @@
     {
         ModelValidationResult result = validate( "missing-type-pom.xml" );
 
-        assertEquals( 1, result.getErrors().size() );
+        assertViolations( result, 1, 0 );
 
         assertEquals( "'packaging' is missing.", result.getErrors().get( 0 ) );
     }
@@ -142,7 +150,7 @@
     {
         ModelValidationResult result = validate( "missing-version-pom.xml" );
 
-        assertEquals( 1, result.getErrors().size() );
+        assertViolations( result, 1, 0 );
 
         assertEquals( "'version' is missing.", result.getErrors().get( 0 ) );
     }
@@ -152,7 +160,7 @@
     {
         ModelValidationResult result = validate( "invalid-aggregator-packaging-pom.xml" );
 
-        assertEquals( 1, result.getErrors().size() );
+        assertViolations( result, 1, 0 );
 
         assertTrue( result.getErrors().get( 0 ).indexOf( "Aggregator projects require 'pom' as packaging." ) > -1 );
     }
@@ -162,7 +170,7 @@
     {
         ModelValidationResult result = validate( "missing-dependency-artifactId-pom.xml" );
 
-        assertEquals( 1, result.getErrors().size() );
+        assertViolations( result, 1, 0 );
 
         assertTrue( result.getErrors().get( 0 ).indexOf( "'dependencies.dependency.artifactId' is missing." ) > -1 );
     }
@@ -172,7 +180,7 @@
     {
         ModelValidationResult result = validate( "missing-dependency-groupId-pom.xml" );
 
-        assertEquals( 1, result.getErrors().size() );
+        assertViolations( result, 1, 0 );
 
         assertTrue( result.getErrors().get( 0 ).indexOf( "'dependencies.dependency.groupId' is missing." ) > -1 );
     }
@@ -182,7 +190,7 @@
     {
         ModelValidationResult result = validate( "missing-dependency-version-pom.xml" );
 
-        assertEquals( 1, result.getErrors().size() );
+        assertViolations( result, 1, 0 );
 
         assertTrue( result.getErrors().get( 0 ).indexOf( "'dependencies.dependency.version' is missing" ) > -1 );
     }
@@ -192,10 +200,10 @@
     {
         ModelValidationResult result = validate( "missing-dependency-mgmt-artifactId-pom.xml" );
 
-        assertEquals( 1, result.getErrors().size() );
+        assertViolations( result, 1, 0 );
 
         assertTrue( result.getErrors().get( 0 ).indexOf(
-                                                    "'dependencyManagement.dependencies.dependency.artifactId' is missing." ) > -1 );
+                                                         "'dependencyManagement.dependencies.dependency.artifactId' is missing." ) > -1 );
     }
 
     public void testMissingDependencyManagementGroupId()
@@ -203,10 +211,10 @@
     {
         ModelValidationResult result = validate( "missing-dependency-mgmt-groupId-pom.xml" );
 
-        assertEquals( 1, result.getErrors().size() );
+        assertViolations( result, 1, 0 );
 
         assertTrue( result.getErrors().get( 0 ).indexOf(
-                                                    "'dependencyManagement.dependencies.dependency.groupId' is missing." ) > -1 );
+                                                         "'dependencyManagement.dependencies.dependency.groupId' is missing." ) > -1 );
     }
 
     public void testMissingAll()
@@ -214,7 +222,7 @@
     {
         ModelValidationResult result = validate( "missing-1-pom.xml" );
 
-        assertEquals( 4, result.getErrors().size() );
+        assertViolations( result, 4, 0 );
 
         List<String> messages = result.getErrors();
 
@@ -230,7 +238,7 @@
     {
         ModelValidationResult result = validate( "missing-plugin-artifactId-pom.xml" );
 
-        assertEquals( 1, result.getErrors().size() );
+        assertViolations( result, 1, 0 );
 
         assertEquals( "'build.plugins.plugin.artifactId' is missing.", result.getErrors().get( 0 ) );
     }
@@ -238,20 +246,26 @@
     public void testMissingPluginVersion()
         throws Exception
     {
-        ModelValidationResult result = validate( "missing-plugin-version-pom.xml" );
+        ModelValidationResult result =
+            validateEffective( "missing-plugin-version-pom.xml", ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1 );
 
-        assertEquals( 1, result.getWarnings().size() );
+        assertViolations( result, 1, 0 );
 
         assertEquals( "'build.plugins.plugin.version' is missing for org.apache.maven.plugins:maven-it-plugin",
-                      result.getWarnings().get( 0 ) );
+                      result.getErrors().get( 0 ) );
+
+        result = validateEffective( "missing-plugin-version-pom.xml", ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0 );
+
+        assertViolations( result, 0, 1 );
     }
 
     public void testMissingRepositoryId()
         throws Exception
     {
-        ModelValidationResult result = validate( "missing-repository-id-pom.xml", true, false );
+        ModelValidationResult result =
+            validateRaw( "missing-repository-id-pom.xml", ModelBuildingRequest.VALIDATION_LEVEL_STRICT );
 
-        assertEquals( 4, result.getErrors().size() );
+        assertViolations( result, 4, 0 );
 
         assertEquals( "'repositories.repository.id' is missing.", result.getErrors().get( 0 ) );
 
@@ -267,7 +281,7 @@
     {
         ModelValidationResult result = validate( "missing-resource-directory-pom.xml" );
 
-        assertEquals( 2, result.getErrors().size() );
+        assertViolations( result, 2, 0 );
 
         assertEquals( "'build.resources.resource.directory' is missing.", result.getErrors().get( 0 ) );