You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2018/12/30 12:04:56 UTC
[maven] 01/01: [MNG-5600] Dependency management import should
support exclusions
This is an automated email from the ASF dual-hosted git repository.
slachiewicz pushed a commit to branch MNG-5600
in repository https://gitbox.apache.org/repos/asf/maven.git
commit 66f4537f08da8ec0815c320520715560e17a3077
Author: Christian Schulte <sc...@apache.org>
AuthorDate: Sun Jun 19 16:32:25 2016 +0200
[MNG-5600] Dependency management import should support exclusions
---
.../maven/model/building/DefaultModelBuilder.java | 36 +++++++++++++++++++++-
1 file changed, 35 insertions(+), 1 deletion(-)
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 8714611..e10938f 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
@@ -27,6 +27,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;
@@ -1308,7 +1309,40 @@ public class DefaultModelBuilder
importMgmt = new DependencyManagement();
}
- putCache( request.getModelCache(), groupId, artifactId, version, ModelCacheTag.IMPORT, importMgmt );
+ // [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 = importMgmt.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 : importMgmt.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, importMgmt );
+ }
}
if ( importMgmts == null )