Repository: maven Updated Branches: refs/heads/master 58554032f -> ee4fcfd54
[MNG-5971] Imported dependencies should be available to inheritance processing o Updated to correctly setup the model resolver for processing import scope dependencies and to process include scope dependencies using the effective repositories to support repository overriding the same way property overriding is supported. Project: http://git-wip-us.apache.org/repos/asf/maven/repo Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/ee4fcfd5 Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/ee4fcfd5 Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/ee4fcfd5 Branch: refs/heads/master Commit: ee4fcfd547cdec357e05c1fa8da36f0c5138e4e9 Parents: 5855403 Author: Christian Schulte <schu...@apache.org> Authored: Mon Dec 12 02:29:01 2016 +0100 Committer: Christian Schulte <schu...@apache.org> Committed: Mon Dec 12 02:41:00 2016 +0100 ---------------------------------------------------------------------- .../model/building/DefaultModelBuilder.java | 31 ++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven/blob/ee4fcfd5/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 24b314a..21d9d83 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 @@ -533,6 +533,9 @@ public class DefaultModelBuilder lifecycleBindingsInjector.injectLifecycleBindings( resultModel, request, problems ); } + // Re-configure the resolver to reflect the effective result model. + // It may have been modified during include scope processing. + this.configureResolver( request.getModelResolver(), resultModel, problems, true ); this.importDependencyManagement( resultModel, "import", request, problems, new HashSet<String>() ); // dependency management injection @@ -889,6 +892,7 @@ public class DefaultModelBuilder } final Properties effectiveProperties = intermediateLineage.get( 0 ).getProperties(); + final List<Repository> effectiveRepositories = intermediateLineage.get( 0 ).getRepositories(); final DefaultModelProblemCollector intermediateProblems = new DefaultModelProblemCollector( new DefaultModelBuildingResult() ); @@ -903,7 +907,7 @@ public class DefaultModelBuilder this.interpolateModel( model, request, intermediateProblems ); } - // Exchanges 'import' scope dependencies in the original lineage with possibly interpolated values. + // Exchanges 'include' scope dependencies in the original lineage with possibly interpolated values. for ( int i = 0, s0 = lineage.size(); i < s0; i++ ) { final Model model = lineage.get( i ); @@ -941,12 +945,29 @@ public class DefaultModelBuilder }; } - // Imports dependencies into the original model using the repositories of the intermediate model. + // Sets up the resolver to use the effective repositories to support repository overriding. + if ( lenientRequest.getModelResolver() != null ) + { + for ( Repository repository : effectiveRepositories ) + { + try + { + lenientRequest.getModelResolver().addRepository( repository, true ); + } + catch ( InvalidRepositoryException e ) + { + problems.add( new ModelProblemCollectorRequest( Severity.ERROR, Version.BASE ) + .setMessage( "Invalid repository " + repository.getId() + ": " + e.getMessage() ) + .setLocation( repository.getLocation( "" ) ).setException( e ) ); + + } + } + } + + // Imports dependencies into the original model using the effective repositories. for ( int i = 0, s0 = lineage.size(); i < s0; i++ ) { - final Model model = lineage.get( i ); - this.configureResolver( lenientRequest.getModelResolver(), intermediateLineage.get( i ), problems, true ); - this.importDependencyManagement( model, scope, lenientRequest, problems, new HashSet<String>() ); + this.importDependencyManagement( lineage.get( i ), scope, lenientRequest, problems, new HashSet<String>() ); } }