Author: krosenvold
Date: Mon Nov  3 18:28:08 2014
New Revision: 1636414

URL: http://svn.apache.org/r1636414
Log:
[MASSEMBLY-619] Fixed bleed between resolution phases for multiple dependency 
sets

Added:
    
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/
    
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/assembly.xml
    
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/invoker.properties
    
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/pom.xml
    
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/verify.bsh
Modified:
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DependencyResolver.java
    
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
    
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
    
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java
    
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java

Added: 
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/assembly.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/assembly.xml?rev=1636414&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/assembly.xml
 (added)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/assembly.xml
 Mon Nov  3 18:28:08 2014
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<assembly
+       
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0";
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0
 http://maven.apache.org/xsd/assembly-1.1.0.xsd";>
+
+       <id>deploy-zip</id>
+       <formats>
+               <format>zip</format>
+       </formats>
+
+       <dependencySets>
+               <dependencySet>
+                       <outputDirectory>dir1</outputDirectory>
+                       <includes>
+                               
<include>commons-configuration:commons-configuration</include>
+                       </includes>
+               </dependencySet>
+               <dependencySet>
+                       <outputDirectory>dir2</outputDirectory>
+                       
<useTransitiveDependencies>false</useTransitiveDependencies>
+                       <excludes>
+                               
<exclude>commons-configuration:commons-configuration</exclude>
+                       </excludes>
+               </dependencySet>
+       </dependencySets>
+
+</assembly>

Added: 
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/invoker.properties
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/invoker.properties?rev=1636414&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/invoker.properties
 (added)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/invoker.properties
 Mon Nov  3 18:28:08 2014
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+invoker.goals=install

Added: 
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/pom.xml?rev=1636414&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/pom.xml
 (added)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/pom.xml
 Mon Nov  3 18:28:08 2014
@@ -0,0 +1,64 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+       <modelVersion>4.0.0</modelVersion>
+
+       <name>bug-test</name>
+       <groupId>com.example.assembly</groupId>
+       <artifactId>bug-test</artifactId>
+       <version>1.0-SNAPSHOT</version>
+       
+       <dependencies>
+               <dependency>
+                       <groupId>commons-configuration</groupId>
+                       <artifactId>commons-configuration</artifactId>
+                       <version>1.10</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.maven</groupId>
+                       <artifactId>maven-archiver</artifactId>
+                       <version>2.6</version>
+               </dependency>
+       </dependencies>
+       
+       <build>
+               <plugins>
+                       <plugin>
+                               <artifactId>maven-assembly-plugin</artifactId>
+                               <version>${testVersion}</version>
+                               <executions>
+                                       <execution>
+                                               <id>make-assembly</id>
+                                               <phase>package</phase>
+                                               <goals>
+                                                       <goal>single</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <descriptors>
+                                                               
<descriptor>assembly.xml</descriptor>
+                                                       </descriptors>
+                                               </configuration>
+                                       </execution>
+                               </executions>
+                       </plugin>
+               </plugins>
+       </build>
+
+</project>

Added: 
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/verify.bsh
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/verify.bsh?rev=1636414&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/verify.bsh
 (added)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/massembly-619/verify.bsh
 Mon Nov  3 18:28:08 2014
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.*;
+import java.util.zip.*;
+
+ZipFile zf = new ZipFile( new File( basedir, 
"target/bug-test-1.0-SNAPSHOT-deploy-zip.zip" ) );
+
+ZipEntry child1InclEntry = zf.getEntry( 
"bug-test-1.0-SNAPSHOT/dir2/classworlds-1.1.jar" );
+
+if ( child1InclEntry != null )
+{
+    System.out.println( "Unexpected file in jar !" );
+    return false;
+}
+
+return true;
+
+

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java?rev=1636414&r1=1636413&r2=1636414&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java
 Mon Nov  3 18:28:08 2014
@@ -28,6 +28,7 @@ import org.apache.maven.plugin.assembly.
 import org.apache.maven.plugin.assembly.artifact.DependencyResolver;
 import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
 import org.apache.maven.plugin.assembly.model.Assembly;
+import org.apache.maven.plugin.assembly.model.DependencySet;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.manager.ArchiverManager;
@@ -36,6 +37,8 @@ import org.codehaus.plexus.component.ann
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.logging.Logger;
 
+import java.util.Collections;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -87,11 +90,15 @@ public class DependencySetAssemblyPhase
         DependencyResolutionException
     {
 
-        Set<Artifact> resolved = dependencyResolver.resolve( assembly, 
configSource );
-        final AddDependencySetsTask task =
-            new AddDependencySetsTask( assembly.getDependencySets(), resolved, 
configSource.getProject(),
-                                       projectBuilder, getLogger() );
+        Map<DependencySet, Set<Artifact>>
+            resolved = dependencyResolver.resolveDependencySets( assembly, 
configSource, assembly.getDependencySets() );
+        for ( Map.Entry<DependencySet, Set<Artifact>> dependencySetSetEntry : 
resolved.entrySet() )
+        {
+            final AddDependencySetsTask task =
+                new AddDependencySetsTask( 
Collections.singletonList(dependencySetSetEntry.getKey()), 
dependencySetSetEntry.getValue(), configSource.getProject(),
+                                           projectBuilder, getLogger() );
 
-        task.execute( archiver, configSource );
+            task.execute( archiver, configSource );
+        }
     }
 }

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java?rev=1636414&r1=1636413&r2=1636414&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
 Mon Nov  3 18:28:08 2014
@@ -231,7 +231,9 @@ public class ModuleSetAssemblyPhase
 
         if ( depSets != null )
         {
-            Set<Artifact> resolved = dependencyResolver.resolve( assembly, 
moduleSet, configSource );
+            Map<DependencySet, Set<Artifact>> dependencySetSetMap =
+                dependencyResolver.resolveDependencySets( assembly, moduleSet, 
configSource,
+                                                          depSets);
 
             for ( final DependencySet ds : depSets )
             {
@@ -261,16 +263,21 @@ public class ModuleSetAssemblyPhase
             {
                 getLogger().debug( "Processing binary dependencies for module 
project: " + moduleProject.getId() );
 
-                final AddDependencySetsTask task =
-                    new AddDependencySetsTask( depSets, resolved, 
moduleProject, projectBuilder,
-                                               getLogger() );
-
-                task.setModuleProject( moduleProject );
-                task.setModuleArtifact( chosenModuleArtifacts.get( 
moduleProject ) );
-                task.setDefaultOutputDirectory( binaries.getOutputDirectory() 
);
-                task.setDefaultOutputFileNameMapping( 
binaries.getOutputFileNameMapping() );
+                for ( Map.Entry<DependencySet, Set<Artifact>> 
dependencySetSetEntry : dependencySetSetMap.entrySet() )
+                {
+                    final AddDependencySetsTask task =
+                        new AddDependencySetsTask( Collections.singletonList( 
dependencySetSetEntry.getKey() ), dependencySetSetEntry.getValue(),
+                                                   moduleProject, 
projectBuilder,
+                                                   getLogger() );
+
+                    task.setModuleProject( moduleProject );
+                    task.setModuleArtifact( chosenModuleArtifacts.get( 
moduleProject ) );
+                    task.setDefaultOutputDirectory( 
binaries.getOutputDirectory() );
+                    task.setDefaultOutputFileNameMapping( 
binaries.getOutputFileNameMapping() );
+
+                    task.execute( archiver, configSource );
 
-                task.execute( archiver, configSource );
+                }
             }
         }
     }

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java?rev=1636414&r1=1636413&r2=1636414&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java
 Mon Nov  3 18:28:08 2014
@@ -22,8 +22,10 @@ package org.apache.maven.plugin.assembly
 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;
@@ -73,6 +75,7 @@ public class DefaultDependencyResolver
     @Requirement
     private ArtifactFactory factory;
 
+    @SuppressWarnings( "UnusedDeclaration" )
     public DefaultDependencyResolver()
     {
         // for plexus init
@@ -87,72 +90,99 @@ public class DefaultDependencyResolver
         enableLogging( logger );
     }
 
-    public Set<Artifact> resolve( final Assembly assembly, final 
AssemblerConfigurationSource configSource )
+    public Map<DependencySet, Set<Artifact>> resolveDependencySets( final 
Assembly assembly, ModuleSet moduleSet,
+                                                                    final 
AssemblerConfigurationSource configSource,
+                                                                    
List<DependencySet> dependencySets )
         throws DependencyResolutionException
     {
-        final MavenProject currentProject = configSource.getProject();
+        Map<DependencySet, Set<Artifact>> result = new 
LinkedHashMap<DependencySet, Set<Artifact>>();
 
-        final ResolutionManagementInfo info = new ResolutionManagementInfo( 
currentProject );
-        updateRepositoryResolutionRequirements( assembly, info );
-        updateDependencySetResolutionRequirements( 
assembly.getDependencySets(), info,
-                                                   
AssemblyId.createAssemblyId( assembly ), currentProject );
-
-        if ( !info.isResolutionRequired() )
+        for ( DependencySet dependencySet : dependencySets )
         {
-            return new HashSet<Artifact>();
-        }
 
-        final List<ArtifactRepository> repos =
-            aggregateRemoteArtifactRepositories( 
configSource.getRemoteRepositories(), info.getEnabledProjects() );
+            final MavenProject currentProject = configSource.getProject();
 
-        Set<Artifact> artifacts = info.getArtifacts();
-        if ( info.isResolvedTransitively() )
-        {
-            getLogger().debug( "Resolving project dependencies transitively." 
);
-            artifacts = resolveTransitively( artifacts, repos, info, 
configSource );
-        }
-        else
-        {
-            getLogger().debug( "Resolving project dependencies ONLY. 
Transitive dependencies WILL NOT be included in the results." );
-            artifacts = resolveNonTransitively( assembly, artifacts, 
configSource, repos );
-        }
+            final ResolutionManagementInfo info = new 
ResolutionManagementInfo( currentProject );
+            updateRepositoryResolutionRequirements( assembly, info );
+            final AssemblyId assemblyId = AssemblyId.createAssemblyId( 
assembly );
+            updateDependencySetResolutionRequirements( 
assembly.getDependencySets(), info, assemblyId, currentProject );
+            updateModuleSetResolutionRequirements( assemblyId, moduleSet, 
info, configSource );
+
+            Set<Artifact> artifacts;
+            if ( info.isResolutionRequired() )
+            {
+                final List<ArtifactRepository> repos =
+                    aggregateRemoteArtifactRepositories( 
configSource.getRemoteRepositories(),
+                                                         
info.getEnabledProjects() );
 
-        return artifacts;
+                artifacts = info.getArtifacts();
+                if ( info.isResolvedTransitively() )
+                {
+                    getLogger().debug( "Resolving project dependencies 
transitively." );
+                    artifacts = resolveTransitively( artifacts, repos, info, 
configSource );
+                }
+                else
+                {
+                    getLogger().debug(
+                        "Resolving project dependencies ONLY. Transitive 
dependencies WILL NOT be included in the results." );
+                    artifacts = resolveNonTransitively( assembly, artifacts, 
configSource, repos );
+                }
+            }
+            else
+            {
+                artifacts = new HashSet<Artifact>();
+            }
+            result.put( dependencySet, artifacts );
+
+        }
+        return result;
     }
 
-    public Set<Artifact> resolve( final Assembly assembly, ModuleSet moduleSet,
-                                  final AssemblerConfigurationSource 
configSource )
+    public Map<DependencySet, Set<Artifact>> resolveDependencySets( final 
Assembly assembly,
+                                                                    final 
AssemblerConfigurationSource configSource,
+                                                                    
List<DependencySet> dependencySets )
         throws DependencyResolutionException
     {
-        final MavenProject currentProject = configSource.getProject();
+        Map<DependencySet, Set<Artifact>> result = new 
LinkedHashMap<DependencySet, Set<Artifact>>();
 
-        final ResolutionManagementInfo info = new ResolutionManagementInfo( 
currentProject );
-        updateRepositoryResolutionRequirements( assembly, info );
-        final AssemblyId assemblyId = AssemblyId.createAssemblyId( assembly );
-        updateDependencySetResolutionRequirements( 
assembly.getDependencySets(), info, assemblyId, currentProject );
-        updateModuleSetResolutionRequirements( assemblyId, moduleSet, info, 
configSource );
-
-        if ( !info.isResolutionRequired() )
+        for ( DependencySet dependencySet : dependencySets )
         {
-            return new HashSet<Artifact>();
-        }
 
-        final List<ArtifactRepository> repos =
-            aggregateRemoteArtifactRepositories( 
configSource.getRemoteRepositories(), info.getEnabledProjects() );
+            final MavenProject currentProject = configSource.getProject();
 
-        Set<Artifact> artifacts = info.getArtifacts();
-        if ( info.isResolvedTransitively() )
-        {
-            getLogger().debug( "Resolving project dependencies transitively." 
);
-            artifacts = resolveTransitively( artifacts, repos, info, 
configSource );
-        }
-        else
-        {
-            getLogger().debug( "Resolving project dependencies ONLY. 
Transitive dependencies WILL NOT be included in the results." );
-            artifacts = resolveNonTransitively( assembly, artifacts, 
configSource, repos );
-        }
+            final ResolutionManagementInfo info = new 
ResolutionManagementInfo( currentProject );
+            updateRepositoryResolutionRequirements( assembly, info );
+            final AssemblyId assemblyId = AssemblyId.createAssemblyId( 
assembly );
+            updateDependencySetResolutionRequirements( dependencySet , info, 
assemblyId, currentProject );
+
+            Set<Artifact> artifacts;
+            if ( info.isResolutionRequired() )
+            {
+                final List<ArtifactRepository> repos =
+                    aggregateRemoteArtifactRepositories( 
configSource.getRemoteRepositories(),
+                                                         
info.getEnabledProjects() );
+
+                artifacts = info.getArtifacts();
+                if ( info.isResolvedTransitively() )
+                {
+                    getLogger().debug( "Resolving project dependencies 
transitively." );
+                    artifacts = resolveTransitively( artifacts, repos, info, 
configSource );
+                }
+                else
+                {
+                    getLogger().debug(
+                        "Resolving project dependencies ONLY. Transitive 
dependencies WILL NOT be included in the results." );
+                    artifacts = resolveNonTransitively( assembly, artifacts, 
configSource, repos );
+                }
+            }
+            else
+            {
+                artifacts = new HashSet<Artifact>();
+            }
+            result.put( dependencySet, artifacts );
 
-        return artifacts;
+        }
+        return result;
     }
 
     Set<Artifact> resolveNonTransitively( final Assembly assembly, final 
Set<Artifact> dependencyArtifacts,
@@ -174,8 +204,8 @@ public class DefaultDependencyResolver
             {
                 if ( getLogger().isDebugEnabled() )
                 {
-                    getLogger().debug( "Failed to resolve: " + 
depArtifact.getId() + " for assembly: "
-                                           + assembly.getId() );
+                    getLogger().debug(
+                        "Failed to resolve: " + depArtifact.getId() + " for 
assembly: " + assembly.getId() );
                 }
                 missing.add( depArtifact );
             }
@@ -183,8 +213,8 @@ public class DefaultDependencyResolver
             {
                 if ( getLogger().isDebugEnabled() )
                 {
-                    getLogger().debug( "Failed to resolve: " + 
depArtifact.getId() + " for assembly: "
-                                           + assembly.getId() );
+                    getLogger().debug(
+                        "Failed to resolve: " + depArtifact.getId() + " for 
assembly: " + assembly.getId() );
                 }
                 missing.add( depArtifact );
             }
@@ -220,10 +250,9 @@ public class DefaultDependencyResolver
         ArtifactResolutionResult result;
         try
         {
-            result =
-                resolver.resolveTransitively( dependencyArtifacts, 
project.getArtifact(),
-                                              project.getManagedVersionMap(), 
localRepository, repos, metadataSource,
-                                              filter );
+            result = resolver.resolveTransitively( dependencyArtifacts, 
project.getArtifact(),
+                                                   
project.getManagedVersionMap(), localRepository, repos,
+                                                   metadataSource, filter );
         }
         catch ( final ArtifactResolutionException e )
         {
@@ -330,6 +359,9 @@ public class DefaultDependencyResolver
             for ( final DependencySet set : depSets )
             {
                 // Surely this must be a bug, if there's multiple depSets with 
different isUseTransitiveDependencies
+                // Yes; this is MASSEMBLY-619, possibly others. Methods using 
this version should probably be axed
+                // MASSEMBLY-619 is now delegated to different overload.
+                // This probably means there is a parallel bleed between 
dependencies for module sets.
                 requirements.setResolvedTransitively( 
set.isUseTransitiveDependencies() );
 
                 enableScope( set.getScope(), requirements );
@@ -353,18 +385,58 @@ public class DefaultDependencyResolver
                     catch ( final InvalidDependencyVersionException e )
                     {
                         throw new DependencyResolutionException(
-                                                                 "Failed to 
create dependency artifacts for resolution. Assembly: "
-                                                                     + 
assemblyId, e );
+                            "Failed to create dependency artifacts for 
resolution. Assembly: " + assemblyId, e );
                     }
                 }
 
                 requirements.addArtifacts( dependencyArtifacts );
-                getLogger().debug( "Dependencies for project: " + 
project.getId() + " are:\n"
-                                       + StringUtils.join( 
dependencyArtifacts.iterator(), "\n" ) );
+                getLogger().debug( "Dependencies for project: " + 
project.getId() + " are:\n" + StringUtils.join(
+                    dependencyArtifacts.iterator(), "\n" ) );
             }
         }
     }
 
+
+    @SuppressWarnings( "unchecked" )
+    void updateDependencySetResolutionRequirements( final DependencySet set,
+                                                    final 
ResolutionManagementInfo requirements, AssemblyId assemblyId,
+                                                    final MavenProject... 
projects )
+        throws DependencyResolutionException
+    {
+        requirements.setResolutionRequired( true );
+
+        requirements.setResolvedTransitively( 
set.isUseTransitiveDependencies() );
+
+        enableScope( set.getScope(), requirements );
+
+        for ( final MavenProject project : projects )
+        {
+            if ( project == null )
+            {
+                continue;
+            }
+
+            Set<Artifact> dependencyArtifacts = 
project.getDependencyArtifacts();
+            if ( dependencyArtifacts == null )
+            {
+                try
+                {
+                    dependencyArtifacts = project.createArtifacts( factory, 
null, requirements.getScopeFilter() );
+                    project.setDependencyArtifacts( dependencyArtifacts );
+                }
+                catch ( final InvalidDependencyVersionException e )
+                {
+                    throw new DependencyResolutionException(
+                        "Failed to create dependency artifacts for resolution. 
Assembly: " + assemblyId, e );
+                }
+            }
+
+            requirements.addArtifacts( dependencyArtifacts );
+            getLogger().debug( "Dependencies for project: " + project.getId() 
+ " are:\n" + StringUtils.join(
+                dependencyArtifacts.iterator(), "\n" ) );
+        }
+    }
+
     private void enableScope( final String scope, final 
ResolutionManagementInfo requirements )
     {
         if ( Artifact.SCOPE_COMPILE.equals( scope ) )

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DependencyResolver.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DependencyResolver.java?rev=1636414&r1=1636413&r2=1636414&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DependencyResolver.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DependencyResolver.java
 Mon Nov  3 18:28:08 2014
@@ -22,8 +22,11 @@ package org.apache.maven.plugin.assembly
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugin.assembly.model.Assembly;
+import org.apache.maven.plugin.assembly.model.DependencySet;
 import org.apache.maven.plugin.assembly.model.ModuleSet;
 
+import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -35,13 +38,15 @@ import java.util.Set;
 public interface DependencyResolver
 {
 
-    /**
-     * Resolve the project dependencies, according to the supplied 
configuration.
-     */
-    Set<Artifact> resolve( Assembly assembly, AssemblerConfigurationSource 
configSource )
-        throws DependencyResolutionException;
+    public Map<DependencySet, Set<Artifact>> resolveDependencySets( final 
Assembly assembly, ModuleSet moduleSet,
+                                                                    final 
AssemblerConfigurationSource configSource,
+                                                                    
List<DependencySet> dependencySets )
+        throws DependencyResolutionException
+    ;
+    public Map<DependencySet, Set<Artifact>> resolveDependencySets( final 
Assembly assembly,
+                                                                    final 
AssemblerConfigurationSource configSource,
+                                                                    
List<DependencySet> dependencySets )
+        throws DependencyResolutionException
+        ;
 
-    Set<Artifact> resolve( final Assembly assembly, ModuleSet moduleSet,
-                           final AssemblerConfigurationSource configSource )
-        throws DependencyResolutionException;
 }
\ No newline at end of file

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java?rev=1636414&r1=1636413&r2=1636414&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
 Mon Nov  3 18:28:08 2014
@@ -101,11 +101,11 @@ public class DependencySetAssemblyPhaseT
 
         macTask.expectBuildFromRepository( depProject );
 
-        DependencyResolver dr = EasyMock.createMock(DependencyResolver.class);
+        macTask.expectResolveDependencySets();
 
         mm.replayAll();
 
-        createPhase( macTask, logger, dr ).execute( assembly, 
macTask.archiver, macTask.configSource );
+        createPhase( macTask, logger, macTask.dependencyResolver ).execute( 
assembly, macTask.archiver, macTask.configSource );
 
         mm.verifyAll();
     }
@@ -134,11 +134,11 @@ public class DependencySetAssemblyPhaseT
         final MockAndControlForAddDependencySetsTask macTask =
             new MockAndControlForAddDependencySetsTask( mm, null );
 
-        DependencyResolver dr = EasyMock.createMock(DependencyResolver.class);
+        macTask.expectResolveDependencySets();
 
         mm.replayAll();
 
-        createPhase( macTask, logger, dr ).execute( assembly, null, 
macTask.configSource );
+        createPhase( macTask, logger, macTask.dependencyResolver ).execute( 
assembly, null, macTask.configSource );
 
         mm.verifyAll();
     }

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java?rev=1636414&r1=1636413&r2=1636414&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
 Mon Nov  3 18:28:08 2014
@@ -305,9 +305,10 @@ public class ModuleSetAssemblyPhaseTest
 
         final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
 
+        macTask.expectResolveDependencySets();
         mm.replayAll();
 
-        final ModuleSetAssemblyPhase phase = createPhase( logger, null );
+        final ModuleSetAssemblyPhase phase = createPhase( logger, 
macTask.dependencyResolver, null);
         phase.execute( assembly, macTask.archiver, macTask.configSource );
 
         mm.verifyAll();
@@ -383,11 +384,13 @@ public class ModuleSetAssemblyPhaseTest
 
         final Set<MavenProject> projects = singleton( project );
 
+        macTask.expectResolveDependencySets();
+
         mm.replayAll();
 
         final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
 
-        createPhase( logger, null ).addModuleBinaries( null, null, binaries, 
projects, macTask.archiver, macTask.configSource );
+        createPhase( logger, macTask.dependencyResolver, null 
).addModuleBinaries( null, null, binaries, projects, macTask.archiver, 
macTask.configSource );
 
         mm.verifyAll();
     }
@@ -462,13 +465,15 @@ public class ModuleSetAssemblyPhaseTest
 
         final Set<MavenProject> projects = singleton( project );
 
+        macTask.expectResolveDependencySets();
+
         mm.replayAll();
 
         final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
 
         Assembly assembly = new Assembly();
 
-        createPhase( logger, null ).addModuleBinaries( null, null, binaries, 
projects, macTask.archiver, macTask.configSource );
+        createPhase( logger, macTask.dependencyResolver, null 
).addModuleBinaries( null, null, binaries, projects, macTask.archiver, 
macTask.configSource );
 
         mm.verifyAll();
     }
@@ -870,4 +875,8 @@ public class ModuleSetAssemblyPhaseTest
         return new ModuleSetAssemblyPhase( projectBuilder, dr, logger );
     }
 
+    private ModuleSetAssemblyPhase createPhase( final Logger logger, 
DependencyResolver dr, MavenProjectBuilder projectBuilder1 )
+    {
+        return new ModuleSetAssemblyPhase( projectBuilder1, dr, logger );
+    }
 }

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java?rev=1636414&r1=1636413&r2=1636414&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java
 Mon Nov  3 18:28:08 2014
@@ -20,11 +20,19 @@ package org.apache.maven.plugin.assembly
  */
 
 import java.io.File;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Set;
 
 import junit.framework.Assert;
 
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
+import org.apache.maven.plugin.assembly.artifact.DependencyResolutionException;
+import org.apache.maven.plugin.assembly.artifact.DependencyResolver;
+import org.apache.maven.plugin.assembly.model.Assembly;
+import org.apache.maven.plugin.assembly.model.DependencySet;
+import org.apache.maven.plugin.assembly.model.ModuleSet;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.archiver.ArchivedFileSet;
 import org.codehaus.plexus.archiver.Archiver;
@@ -45,6 +53,8 @@ public class MockAndControlForAddArtifac
 
     private MavenProject project = null;
 
+    public final  DependencyResolver dependencyResolver;
+
     public MockAndControlForAddArtifactTask( final EasyMockSupport mockManager 
)
     {
         this( mockManager, null );
@@ -56,6 +66,7 @@ public class MockAndControlForAddArtifac
 
         archiver = mockManager.createMock(Archiver.class);
         configSource = 
mockManager.createMock(AssemblerConfigurationSource.class);
+        dependencyResolver = mockManager.createMock( DependencyResolver.class);
 
         enableDefaultExpectations();
     }
@@ -157,4 +168,14 @@ public class MockAndControlForAddArtifac
        expect(configSource.getReactorProjects()).andReturn( projects 
).atLeastOnce();
     }
 
+
+    public void expectResolveDependencySets()
+        throws DependencyResolutionException
+    {
+        expect( dependencyResolver.resolveDependencySets( (Assembly) 
anyObject(), (ModuleSet) anyObject(),
+                                                          
(AssemblerConfigurationSource) anyObject(), (List<DependencySet>) anyObject() ))
+            .andReturn( new LinkedHashMap<DependencySet, Set<Artifact>>(  ) 
).anyTimes();
+
+    }
+
 }

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java?rev=1636414&r1=1636413&r2=1636414&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java
 Mon Nov  3 18:28:08 2014
@@ -20,7 +20,9 @@ package org.apache.maven.plugin.assembly
  */
 
 import java.io.File;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Set;
 
 import junit.framework.Assert;
 
@@ -28,6 +30,11 @@ import org.apache.maven.artifact.Artifac
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
+import org.apache.maven.plugin.assembly.artifact.DependencyResolutionException;
+import org.apache.maven.plugin.assembly.artifact.DependencyResolver;
+import org.apache.maven.plugin.assembly.model.Assembly;
+import org.apache.maven.plugin.assembly.model.DependencySet;
+import org.apache.maven.plugin.assembly.model.ModuleSet;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
@@ -56,6 +63,9 @@ public class MockAndControlForAddDepende
 
     private final MavenProject project;
 
+    public final DependencyResolver dependencyResolver;
+
+
     public MockAndControlForAddDependencySetsTask( final EasyMockSupport 
mockManager )
     {
         this( mockManager, null );
@@ -73,6 +83,9 @@ public class MockAndControlForAddDepende
 
         archiverManager = mockManager.createMock(ArchiverManager.class);
 
+        dependencyResolver = mockManager.createMock( DependencyResolver.class);
+
+
         enableDefaultExpectations();
     }
 
@@ -206,4 +219,14 @@ public class MockAndControlForAddDepende
         expect(configSource.getMavenSession()).andReturn( session ).anyTimes();
     }
 
+    public void expectResolveDependencySets()
+        throws DependencyResolutionException
+    {
+        expect( dependencyResolver.resolveDependencySets( (Assembly) 
anyObject(),
+                                                          
(AssemblerConfigurationSource) anyObject(), (List<DependencySet>) anyObject() ))
+            .andReturn( new LinkedHashMap<DependencySet, Set<Artifact>>(  ) 
).anyTimes();
+
+    }
+
+
 }


Reply via email to