Repository: maven Updated Branches: refs/heads/master b2a8aaded -> a6d52372a
[MNG-5971] Imported dependencies should be available to inheritance processing o Updated to support inherited ${project.groupId} and ${project.version} expressions in dependency management import declarations. Project: http://git-wip-us.apache.org/repos/asf/maven/repo Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/a6d52372 Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/a6d52372 Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/a6d52372 Branch: refs/heads/master Commit: a6d52372afddb56a5ca6cc1ef095c32f622eddb6 Parents: b2a8aad Author: Christian Schulte <schu...@apache.org> Authored: Thu Jun 9 10:03:00 2016 +0200 Committer: Christian Schulte <schu...@apache.org> Committed: Thu Jun 9 10:03:00 2016 +0200 ---------------------------------------------------------------------- .../maven/model/building/DefaultModelBuilder.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven/blob/a6d52372/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 df9d2bd..014e401 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 @@ -755,8 +755,10 @@ public class DefaultModelBuilder final DefaultModelProblemCollector problems ) { // [MNG-5971] Imported dependencies should be available to inheritance processing + // It's not possible to support all ${project.xyz} properties in dependency management import declarations + // because import processing is performed before the final inheritance processing is performed. So the set of + // ${project.xyz} properties supported in dependency management import declarations is limited. - // Creates an intermediate model with only property and repository inheritance. final List<Model> intermediateLineage = new ArrayList<>( lineage.size() ); for ( int i = 0, s0 = lineage.size(); i < s0; i++ ) @@ -769,6 +771,17 @@ public class DefaultModelBuilder final Model parent = intermediateLineage.get( i + 1 ); final Model child = intermediateLineage.get( i ); + if ( child.getGroupId() == null ) + { + // Support ${project.groupId} in dependency management import declarations. + child.setGroupId( parent.getGroupId() ); + } + if ( child.getVersion() == null ) + { + // Support ${project.version} in dependency management import declarations. + child.setVersion( parent.getVersion() ); + } + final Properties properties = new Properties(); properties.putAll( parent.getProperties() ); properties.putAll( child.getProperties() ); @@ -838,7 +851,7 @@ public class DefaultModelBuilder } // Imports dependencies into the original model using the repositories of the intermediate model. - for ( int i = 0, s0 = lineage.size(), superModelIdx = lineage.size() - 1; i < s0; i++ ) + 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 );