[MNG-6075] Increase the model validation level to the next minor level version.
Project: http://git-wip-us.apache.org/repos/asf/maven/repo Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/0fbad04c Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/0fbad04c Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/0fbad04c Branch: refs/heads/MNG-6056-feature-toggle Commit: 0fbad04c5ff63c87b6d80873cb8b45b6c9b79781 Parents: 744b98e Author: Christian Schulte <[email protected]> Authored: Mon Aug 1 09:36:06 2016 +0200 Committer: Christian Schulte <[email protected]> Committed: Mon Aug 1 09:36:06 2016 +0200 ---------------------------------------------------------------------- .../model/building/DefaultModelBuilder.java | 29 ++++++++++++++++++++ 1 file changed, 29 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven/blob/0fbad04c/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java ---------------------------------------------------------------------- diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java index e5e5dc5..2d50ed1 100644 --- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java +++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java @@ -30,6 +30,7 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.Set; import org.apache.commons.lang3.Validate; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; @@ -387,6 +388,7 @@ public class DefaultModelBuilder } problems.setSource( inputModel ); + checkModelVersions( lineage, request, problems ); checkPluginVersions( lineage, request, problems ); // [MNG-4052] import scope dependencies prefer to download pom rather than find it in the current project @@ -769,6 +771,33 @@ public class DefaultModelBuilder } } + private void checkModelVersions( final List<ModelData> lineage, final ModelBuildingRequest request, + final ModelProblemCollector problems ) + { + if ( request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1 ) + { + final Set<String> modelVersions = new HashSet<>( lineage.size() ); + + for ( int i = lineage.size() - 1; i >= 0; i-- ) + { + final Model model = lineage.get( i ).getModel(); + + if ( model.getModelVersion() != null ) + { + if ( !modelVersions.isEmpty() && modelVersions.add( model.getModelVersion() ) ) + { + problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.V31 ) + .setMessage( String.format( + "Cannot inherit from parent '%s' with different model version '%s'." + + " Expected model version '%s'.", + model.getId(), model.getModelVersion(), modelVersions.iterator().next() ) ) ); + + } + } + } + } + } + private void processImports( final List<Model> lineage, final ModelBuildingRequest request, final DefaultModelProblemCollector problems ) {
