From commits-return-70752-archive-asf-public=cust-asf.ponee.io@maven.apache.org Tue Feb 20 00:43:19 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 60A8B18067E for ; Tue, 20 Feb 2018 00:43:18 +0100 (CET) Received: (qmail 10841 invoked by uid 500); 19 Feb 2018 23:43:17 -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 10830 invoked by uid 99); 19 Feb 2018 23:43:17 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 19 Feb 2018 23:43:17 +0000 Received: by gitbox.apache.org (ASF Mail Server at gitbox.apache.org, from userid 33) id 7780582374; Mon, 19 Feb 2018 23:43:16 +0000 (UTC) Date: Mon, 19 Feb 2018 23:43:17 +0000 To: "commits@maven.apache.org" Subject: [maven-assembly-plugin] 01/02: [MASSEMBLY-675] Maven Assembly packaging wildcard-excluded dependencies MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit From: gboue@apache.org In-Reply-To: <151908379639.12165.11619869371826746545@gitbox.apache.org> References: <151908379639.12165.11619869371826746545@gitbox.apache.org> X-Git-Host: gitbox.apache.org X-Git-Repo: maven-assembly-plugin X-Git-Refname: refs/heads/MASSEMBLY-675 X-Git-Reftype: branch X-Git-Rev: b0cf85db9c466d42a4d39f46634ad49cbb784d8c X-Git-NotificationType: diff X-Git-Multimail-Version: 1.5.dev Auto-Submitted: auto-generated Message-Id: <20180219234316.7780582374@gitbox.apache.org> This is an automated email from the ASF dual-hosted git repository. gboue pushed a commit to branch MASSEMBLY-675 in repository https://gitbox.apache.org/repos/asf/maven-assembly-plugin.git commit b0cf85db9c466d42a4d39f46634ad49cbb784d8c Author: Hilario Fernandes AuthorDate: Fri Feb 2 18:58:31 2018 +0000 [MASSEMBLY-675] Maven Assembly packaging wildcard-excluded dependencies Require maven to solve dependencies instead of building requests, fixing wildcard exclusion problem --- .../artifact/DefaultDependencyResolver.java | 141 +++------------------ .../plugins/assembly/mojos/SingleAssemblyMojo.java | 2 +- 2 files changed, 18 insertions(+), 125 deletions(-) diff --git a/src/main/java/org/apache/maven/plugins/assembly/artifact/DefaultDependencyResolver.java b/src/main/java/org/apache/maven/plugins/assembly/artifact/DefaultDependencyResolver.java index 741b19d..936e250 100644 --- a/src/main/java/org/apache/maven/plugins/assembly/artifact/DefaultDependencyResolver.java +++ b/src/main/java/org/apache/maven/plugins/assembly/artifact/DefaultDependencyResolver.java @@ -20,20 +20,14 @@ package org.apache.maven.plugins.assembly.artifact; */ import java.util.ArrayList; -import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashMap; -import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.artifact.resolver.ArtifactResolutionRequest; -import org.apache.maven.artifact.resolver.ArtifactResolutionResult; -import org.apache.maven.artifact.resolver.MultipleArtifactsNotFoundException; -import org.apache.maven.artifact.resolver.filter.ArtifactFilter; import org.apache.maven.plugins.assembly.AssemblerConfigurationSource; import org.apache.maven.plugins.assembly.archive.ArchiveCreationException; import org.apache.maven.plugins.assembly.archive.phase.ModuleSetAssemblyPhase; @@ -49,7 +43,6 @@ import org.apache.maven.project.MavenProject; import org.apache.maven.project.ProjectBuildingRequest; import org.apache.maven.repository.RepositorySystem; import org.apache.maven.shared.artifact.filter.resolve.ScopeFilter; -import org.apache.maven.shared.artifact.filter.resolve.transform.ArtifactIncludeFilterTransformer; import org.apache.maven.shared.artifact.resolve.ArtifactResult; import org.apache.maven.shared.dependencies.resolve.DependencyResolverException; import org.codehaus.plexus.component.annotations.Component; @@ -93,43 +86,28 @@ public class DefaultDependencyResolver currentProject ); updateModuleSetResolutionRequirements( assemblyId, moduleSet, dependencySet, info, configSource ); - resolve( assembly, configSource, result, dependencySet, info ); + result.put( dependencySet, resolve( info, currentProject ) ); } return result; } - private void resolve( Assembly assembly, AssemblerConfigurationSource configSource, - Map> result, DependencySet dependencySet, - ResolutionManagementInfo info ) - throws DependencyResolutionException + private Set resolve( ResolutionManagementInfo info, MavenProject project ) { - Set artifacts; - if ( info.isResolutionRequired() ) + Set artifacts = new HashSet<>(); + if ( info.isResolvedTransitively() ) { - final List repos = - aggregateRemoteArtifactRepositories( configSource.getRemoteRepositories(), info.getEnabledProjects() ); - - artifacts = info.getArtifacts(); - if ( info.isResolvedTransitively() ) - { - getLogger().debug( "Resolving project dependencies transitively." ); - - ArtifactFilter filter = new ArtifactIncludeFilterTransformer().transform( info.getScopeFilter() ); - artifacts = resolveTransitively( artifacts, repos, filter, configSource ); - } - else - { - getLogger().debug( "Resolving project dependencies ONLY. " - + "Transitive dependencies WILL NOT be included in the results." ); - artifacts = resolveNonTransitively( assembly, artifacts, configSource, repos ); - } + getLogger().debug( "Resolving project dependencies transitively." ); + artifacts = project.getArtifacts(); } else { - artifacts = new HashSet(); + getLogger().debug( "Resolving project dependencies ONLY. " + + "Transitive dependencies WILL NOT be included in the results." ); + artifacts = project.getDependencyArtifacts(); } - result.put( dependencySet, artifacts ); + + return artifacts; } @Override @@ -152,114 +130,29 @@ public class DefaultDependencyResolver configSource.getMavenSession().getProjectBuildingRequest(), currentProject ); - resolve( assembly, configSource, result, dependencySet, info ); + result.put( dependencySet, resolve( info, currentProject ) ); } return result; } - Set resolveNonTransitively( final Assembly assembly, final Set dependencyArtifacts, - final AssemblerConfigurationSource configSource, - final List repos ) - throws DependencyResolutionException - { - - final List missing = new ArrayList(); - final Set resolved = new LinkedHashSet(); - for ( final Artifact depArtifact : dependencyArtifacts ) - { - ArtifactResolutionRequest req = new ArtifactResolutionRequest(); - req.setLocalRepository( configSource.getLocalRepository() ); - req.setRemoteRepositories( repos ); - req.setArtifact( depArtifact ); - - ArtifactResolutionResult resolve = resolver.resolve( req ); - if ( resolve.hasExceptions() ) - { - if ( getLogger().isDebugEnabled() ) - { - getLogger().debug( - "Failed to resolve: " + depArtifact.getId() + " for assembly: " + assembly.getId() ); - } - missing.add( depArtifact ); - } - else - { - resolved.add( depArtifact ); - } - } - - if ( !missing.isEmpty() ) - - { - final MavenProject project = configSource.getProject(); - final Artifact rootArtifact = project.getArtifact(); - - final Throwable error = - new MultipleArtifactsNotFoundException( rootArtifact, new ArrayList( resolved ), missing, - repos ); - - throw new DependencyResolutionException( "Failed to resolve dependencies for: " + assembly.getId(), error ); - } - - return resolved; - } - - private Set resolveTransitively( final Set dependencyArtifacts, - final List repos, - final ArtifactFilter filter, - final AssemblerConfigurationSource configSource ) - throws DependencyResolutionException - { - final MavenProject project = configSource.getProject(); - - ArtifactResolutionRequest req = new ArtifactResolutionRequest(); - req.setLocalRepository( configSource.getLocalRepository() ); - req.setResolveRoot( false ); - req.setRemoteRepositories( repos ); - req.setResolveTransitively( true ); - req.setArtifact( project.getArtifact() ); - req.setArtifactDependencies( dependencyArtifacts ); - req.setManagedVersionMap( project.getManagedVersionMap() ); - req.setCollectionFilter( filter ); - req.setOffline( configSource.getMavenSession().isOffline() ); - req.setForceUpdate( configSource.getMavenSession().getRequest().isUpdateSnapshots() ); - req.setServers( configSource.getMavenSession().getRequest().getServers() ); - req.setMirrors( configSource.getMavenSession().getRequest().getMirrors() ); - req.setProxies( configSource.getMavenSession().getRequest().getProxies() ); - - ArtifactResolutionResult result; - - result = resolver.resolve( req ); - if ( result.hasExceptions() ) - { - throw new DependencyResolutionException( "Failed to resolve dependencies for assembly: ", - result.getExceptions().get( 0 ) ); - } - - getLogger().debug( "While resolving dependencies of " + project.getId() + ":" ); - - FilterUtils.reportFilteringStatistics( Collections.singleton( filter ), getLogger() ); - - return result.getArtifacts(); - } void updateRepositoryResolutionRequirements( final Assembly assembly, final ResolutionManagementInfo requirements ) { final List repositories = assembly.getRepositories(); Set rootScopes = new HashSet(); - + if ( repositories != null && !repositories.isEmpty() ) { - + requirements.setResolutionRequired( true ); for ( final Repository repo : repositories ) { rootScopes.add( repo.getScope() ); } } - + requirements.setScopeFilter( FilterUtils.newScopeFilter( rootScopes ) ); } @@ -321,9 +214,9 @@ public class DefaultDependencyResolver requirements.setResolvedTransitively( set.isUseTransitiveDependencies() ); ScopeFilter scopeFilter = FilterUtils.newScopeFilter( set.getScope() ); - + requirements.setScopeFilter( scopeFilter ); - + for ( final MavenProject project : projects ) { if ( project == null ) diff --git a/src/main/java/org/apache/maven/plugins/assembly/mojos/SingleAssemblyMojo.java b/src/main/java/org/apache/maven/plugins/assembly/mojos/SingleAssemblyMojo.java index 1d8d843..2e33b90 100644 --- a/src/main/java/org/apache/maven/plugins/assembly/mojos/SingleAssemblyMojo.java +++ b/src/main/java/org/apache/maven/plugins/assembly/mojos/SingleAssemblyMojo.java @@ -41,7 +41,7 @@ import org.codehaus.plexus.util.xml.Xpp3Dom; * @author Brett Porter * @version $Id$ */ -@Mojo( name = "single", inheritByDefault = false, requiresDependencyResolution = ResolutionScope.COMPILE, +@Mojo( name = "single", inheritByDefault = false, requiresDependencyResolution = ResolutionScope.TEST, threadSafe = true ) public class SingleAssemblyMojo extends AbstractAssemblyMojo -- To stop receiving notification emails like this one, please contact gboue@apache.org.