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>() );
         }
     }
 

Reply via email to