Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 7AEF8200C28 for ; Sun, 12 Feb 2017 14:51:50 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 79B1A160B71; Sun, 12 Feb 2017 13:51:50 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id CBCFF160B73 for ; Sun, 12 Feb 2017 14:51:49 +0100 (CET) Received: (qmail 82557 invoked by uid 500); 12 Feb 2017 13:51:48 -0000 Mailing-List: contact commits-help@maven.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@maven.apache.org Delivered-To: mailing list commits@maven.apache.org Received: (qmail 82292 invoked by uid 99); 12 Feb 2017 13:51:48 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 12 Feb 2017 13:51:48 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 3EC28E00DF; Sun, 12 Feb 2017 13:51:48 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: schulte@apache.org To: commits@maven.apache.org Date: Sun, 12 Feb 2017 13:51:53 -0000 Message-Id: <00057119a115446b94688625bacf4a9a@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [06/11] maven git commit: [MNG-5600] Dependency management import should support exclusions. archived-at: Sun, 12 Feb 2017 13:51:50 -0000 [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/f5f5373e Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/f5f5373e Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/f5f5373e Branch: refs/heads/DEPMGMT-INCLUDE Commit: f5f5373e017c02a5e7ae7d65498dc898dfc478c4 Parents: 943e8f4 Author: Christian Schulte Authored: Sun Jun 19 16:32:25 2016 +0200 Committer: Christian Schulte Committed: Sun Feb 12 14:45:23 2017 +0100 ---------------------------------------------------------------------- .../model/building/DefaultModelBuilder.java | 59 +++++++++++++++----- 1 file changed, 45 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven/blob/f5f5373e/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 2516076..a98b25a 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; @@ -1223,7 +1221,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 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 )