You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sc...@apache.org on 2016/06/19 17:29:46 UTC

maven git commit: [MNG-5600] Dependency management import should support exclusions.

Repository: maven
Updated Branches:
  refs/heads/master 7d89f0583 -> 162c7403e


[MNG-5600] Dependency management import should support exclusions.


Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/162c7403
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/162c7403
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/162c7403

Branch: refs/heads/master
Commit: 162c7403e1411b2898653b85db20d3cc9cb4a0fe
Parents: 7d89f05
Author: Christian Schulte <sc...@apache.org>
Authored: Sun Jun 19 16:32:25 2016 +0200
Committer: Christian Schulte <sc...@apache.org>
Committed: Sun Jun 19 19:13:08 2016 +0200

----------------------------------------------------------------------
 .../model/building/DefaultModelBuilder.java     | 65 +++++++++++++++-----
 1 file changed, 49 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/162c7403/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 014e401..5970dc4 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
@@ -19,6 +19,18 @@ package org.apache.maven.model.building;
  * under the License.
  */
 
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
 import org.apache.commons.lang3.Validate;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
 import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
@@ -27,6 +39,7 @@ import org.apache.maven.model.Activation;
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.DependencyManagement;
+import org.apache.maven.model.Exclusion;
 import org.apache.maven.model.InputLocation;
 import org.apache.maven.model.InputSource;
 import org.apache.maven.model.Model;
@@ -62,18 +75,6 @@ import org.apache.maven.model.validation.ModelValidator;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
 import static org.apache.maven.model.building.Result.error;
 import static org.apache.maven.model.building.Result.newResult;
 
@@ -1443,14 +1444,46 @@ public class DefaultModelBuilder
                         importModel = importResult.getEffectiveModel();
                     }
 
-                    importMngt = importModel.getDependencyManagement();
+                    importMngt = importModel.getDependencyManagement() != null
+                                     ? importModel.getDependencyManagement().clone()
+                                     : new DependencyManagement();
 
-                    if ( importMngt == null )
+                    // [MNG-5600] Dependency management import should support exclusions.
+                    if ( !dependency.getExclusions().isEmpty() )
                     {
-                        importMngt = new DependencyManagement();
+                        for ( final Exclusion exclusion : dependency.getExclusions() )
+                        {
+                            if ( exclusion.getGroupId() != null && exclusion.getArtifactId() != null )
+                            {
+                                for ( final Iterator<Dependency> dependencies = importMngt.getDependencies().iterator();
+                                      dependencies.hasNext(); )
+                                {
+                                    final Dependency candidate = dependencies.next();
+
+                                    if ( ( exclusion.getGroupId().equals( "*" )
+                                           || exclusion.getGroupId().equals( candidate.getGroupId() ) )
+                                             && ( exclusion.getArtifactId().equals( "*" )
+                                                  || exclusion.getArtifactId().equals( candidate.getArtifactId() ) ) )
+                                    {
+                                        // Dependency excluded from import.
+                                        dependencies.remove();
+                                    }
+                                }
+                            }
+                        }
+
+                        for ( final Dependency includedDependency : importMngt.getDependencies() )
+                        {
+                            includedDependency.getExclusions().addAll( dependency.getExclusions() );
+                        }
                     }
+                    else
+                    {
+                        // Only dependency managements without exclusion processing applied can be cached.
+                        putCache( request.getModelCache(), groupId, artifactId, version, ModelCacheTag.IMPORT,
+                                  importMngt );
 
-                    putCache( request.getModelCache(), groupId, artifactId, version, ModelCacheTag.IMPORT, importMngt );
+                    }
                 }
 
                 if ( importMngts == null )