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 2017/01/31 22:07:52 UTC
[3/7] maven git commit: [MNG-5600] Dependency management import
should support exclusions.
[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/d92b6ce7
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/d92b6ce7
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/d92b6ce7
Branch: refs/heads/DEPMGMT-IMPORT-IT
Commit: d92b6ce729df6b9032594db1b7de34d398b93c39
Parents: 04436df
Author: Christian Schulte <sc...@apache.org>
Authored: Sun Jun 19 16:32:25 2016 +0200
Committer: Christian Schulte <sc...@apache.org>
Committed: Tue Jan 31 23:06:48 2017 +0100
----------------------------------------------------------------------
.../model/building/DefaultModelBuilder.java | 59 +++++++++++++++-----
1 file changed, 45 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven/blob/d92b6ce7/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 5ca1623..69e95ab 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,7 +19,16 @@ 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.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;
@@ -28,6 +37,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 +72,6 @@ import org.apache.maven.model.superpom.SuperPomProvider;
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.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;
@@ -1218,7 +1216,40 @@ public class DefaultModelBuilder
importMngt = new DependencyManagement();
}
- putCache( request.getModelCache(), groupId, artifactId, version, ModelCacheTag.IMPORT, importMngt );
+ // [MNG-5600] Dependency management import should support exclusions.
+ if ( !dependency.getExclusions().isEmpty() )
+ {
+ 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 );
+ }
}
if ( importMngts == null )