You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2014/11/03 19:28:09 UTC

svn commit: r1636414 - in /maven/plugins/trunk/maven-assembly-plugin/src: it/projects/dependency-sets/massembly-619/ main/java/org/apache/maven/plugin/assembly/archive/phase/ main/java/org/apache/maven/plugin/assembly/artifact/ test/java/org/apache/mav...

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();
+
+    }
+
+
 }