You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2006/08/30 18:00:01 UTC

svn commit: r438528 [1/2] - in /maven/plugins/trunk/maven-assembly-plugin/src: it/multimodule/module-sourceIncludedBinaryNotIncluded/ it/multimodule/module-sourceIncludedBinaryNotIncluded/src/assemble/ it/multimodule/module-sourceNotIncludedBinaryInclu...

Author: jdcasey
Date: Wed Aug 30 08:59:57 2006
New Revision: 438528

URL: http://svn.apache.org/viewvc?rev=438528&view=rev
Log:
Adding control for inclusion of sub-modules, and late dependency-resolution, to avoid resolving dependencies which are not needed for source-only assemblies.

Added:
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceIncludedBinaryNotIncluded/verify.bsh
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceNotIncludedBinaryIncluded/verify.bsh
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/pom.xml   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/main/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/main/java/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/main/java/test/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/main/java/test/App.java   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/test/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/test/java/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/test/java/test/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/test/java/test/AppTest.java   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/pom.xml   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/main/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/main/java/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/main/java/test/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/main/java/test/App.java   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/test/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/test/java/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/test/java/test/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/test/java/test/AppTest.java   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/pom.xml   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/goals.txt   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/pom.xml   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/src/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/src/assemble/
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/src/assemble/bin.xml   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/verify.bsh
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DependencyResolver.java   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java   (with props)
Removed:
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceIncludedBinaryNotIncluded/src/assemble/bin.xml
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceNotIncludedBinaryIncluded/src/assemble/src.xml
Modified:
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceIncludedBinaryNotIncluded/src/assemble/src.xml
    maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceNotIncludedBinaryIncluded/src/assemble/bin.xml
    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/archive/task/AddDependencySetsTask.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AssemblyMojo.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AttachedAssemblyMojo.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectoryInlineMojo.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectoryMojo.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/SingleAssemblyMojo.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/FilterUtils.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo
    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/AddDependencySetsTaskTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/ProjectUtilsTest.java

Modified: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceIncludedBinaryNotIncluded/src/assemble/src.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceIncludedBinaryNotIncluded/src/assemble/src.xml?rev=438528&r1=438527&r2=438528&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceIncludedBinaryNotIncluded/src/assemble/src.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceIncludedBinaryNotIncluded/src/assemble/src.xml Wed Aug 30 08:59:57 2006
@@ -8,9 +8,14 @@
     <moduleSet>
       <includes>
         <include>org.test:child1</include>
+        <include>org.test:child3</include>
       </includes>
       <sources>
         <outputDirectory>sources/${artifactId}</outputDirectory>
+        <excludes>
+          <exclude>target/**</exclude>
+          <exclude>**/*~</exclude>
+        </excludes>
       </sources>
     </moduleSet>
   </moduleSets>

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceIncludedBinaryNotIncluded/verify.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceIncludedBinaryNotIncluded/verify.bsh?rev=438528&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceIncludedBinaryNotIncluded/verify.bsh (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceIncludedBinaryNotIncluded/verify.bsh Wed Aug 30 08:59:57 2006
@@ -0,0 +1,9 @@
+import java.io.*;
+
+boolean result = true;
+
+result = result && new File( basedir, "target/parent-1.0-src.dir/sources/child1/pom.xml" ).exists();
+
+result = result && !new File( basedir, "target/parent-1.0-src.dir/sources/child2/pom.xml" ).exists();
+
+return result;

Modified: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceNotIncludedBinaryIncluded/src/assemble/bin.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceNotIncludedBinaryIncluded/src/assemble/bin.xml?rev=438528&r1=438527&r2=438528&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceNotIncludedBinaryIncluded/src/assemble/bin.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceNotIncludedBinaryIncluded/src/assemble/bin.xml Wed Aug 30 08:59:57 2006
@@ -9,9 +9,11 @@
     <moduleSet>
       <includes>
         <include>org.test:child1</include>
+        <include>org.test:child3</include>
       </includes>
       <binaries>
-        <outputDirectory>modules/${artifactId}</outputDirectory>
+        <outputFileNameMapping>${artifactId}.${extension}</outputFileNameMapping>
+        <outputDirectory>lib</outputDirectory>
         <includeDependencies>true</includeDependencies>
         <unpack>false</unpack>
       </binaries>

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceNotIncludedBinaryIncluded/verify.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceNotIncludedBinaryIncluded/verify.bsh?rev=438528&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceNotIncludedBinaryIncluded/verify.bsh (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/module-sourceNotIncludedBinaryIncluded/verify.bsh Wed Aug 30 08:59:57 2006
@@ -0,0 +1,10 @@
+import java.io.*;
+
+boolean result = true;
+
+result = result && new File( basedir, "target/parent-1.0-bin.dir/lib/child1.jar" ).exists();
+result = result && new File( basedir, "target/parent-1.0-bin.dir/lib/child3.jar" ).exists();
+
+result = result && !new File( basedir, "target/parent-1.0-bin.dir/lib/child2.jar" ).exists();
+
+return result;

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/pom.xml?rev=438528&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/pom.xml (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/pom.xml Wed Aug 30 08:59:57 2006
@@ -0,0 +1,19 @@
+<?xml version="1.0"?><project>
+  <parent>
+    <groupId>test</groupId>
+    <artifactId>two-level-multimodule</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>test</groupId>
+  <artifactId>child-level1-project1</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/main/java/test/App.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/main/java/test/App.java?rev=438528&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/main/java/test/App.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/main/java/test/App.java Wed Aug 30 08:59:57 2006
@@ -0,0 +1,13 @@
+package test;
+
+/**
+ * Hello world!
+ *
+ */
+public class App 
+{
+    public static void main( String[] args )
+    {
+        System.out.println( "Hello World!" );
+    }
+}

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/main/java/test/App.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/main/java/test/App.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/test/java/test/AppTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/test/java/test/AppTest.java?rev=438528&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/test/java/test/AppTest.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/test/java/test/AppTest.java Wed Aug 30 08:59:57 2006
@@ -0,0 +1,38 @@
+package test;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest 
+    extends TestCase
+{
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public AppTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( AppTest.class );
+    }
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testApp()
+    {
+        assertTrue( true );
+    }
+}

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/test/java/test/AppTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project1/src/test/java/test/AppTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/pom.xml?rev=438528&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/pom.xml (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/pom.xml Wed Aug 30 08:59:57 2006
@@ -0,0 +1,19 @@
+<?xml version="1.0"?><project>
+  <parent>
+    <artifactId>child-level1-project2</artifactId>
+    <groupId>test</groupId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>test</groupId>
+  <artifactId>child-level2-project1</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/main/java/test/App.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/main/java/test/App.java?rev=438528&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/main/java/test/App.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/main/java/test/App.java Wed Aug 30 08:59:57 2006
@@ -0,0 +1,13 @@
+package test;
+
+/**
+ * Hello world!
+ *
+ */
+public class App 
+{
+    public static void main( String[] args )
+    {
+        System.out.println( "Hello World!" );
+    }
+}

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/main/java/test/App.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/main/java/test/App.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/test/java/test/AppTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/test/java/test/AppTest.java?rev=438528&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/test/java/test/AppTest.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/test/java/test/AppTest.java Wed Aug 30 08:59:57 2006
@@ -0,0 +1,38 @@
+package test;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest 
+    extends TestCase
+{
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public AppTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( AppTest.class );
+    }
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testApp()
+    {
+        assertTrue( true );
+    }
+}

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/test/java/test/AppTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/child-level2-project1/src/test/java/test/AppTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/pom.xml?rev=438528&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/pom.xml (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/pom.xml Wed Aug 30 08:59:57 2006
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+  <parent>
+    <groupId>test</groupId>
+    <artifactId>two-level-multimodule</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>test</groupId>
+  <artifactId>child-level1-project2</artifactId>
+  <version>1.0-SNAPSHOT</version>
+
+  <packaging>pom</packaging>
+
+  <modules>
+    <module>child-level2-project1</module>
+  </modules>
+</project>

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/child-level1-project2/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/goals.txt
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/goals.txt?rev=438528&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/goals.txt (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/goals.txt Wed Aug 30 08:59:57 2006
@@ -0,0 +1 @@
+package assembly:directory

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/goals.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/goals.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/pom.xml?rev=438528&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/pom.xml (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/pom.xml Wed Aug 30 08:59:57 2006
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+  <groupId>test</groupId>
+  <artifactId>two-level-multimodule</artifactId>
+  <version>1.0-SNAPSHOT</version>
+
+  <packaging>pom</packaging>
+
+  <modules>
+    <module>child-level1-project1</module>
+    <module>child-level1-project2</module>
+  </modules>
+
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <configuration>
+          <descriptors>
+            <descriptor>src/assemble/bin.xml</descriptor>
+          </descriptors>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/src/assemble/bin.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/src/assemble/bin.xml?rev=438528&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/src/assemble/bin.xml (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/src/assemble/bin.xml Wed Aug 30 08:59:57 2006
@@ -0,0 +1,17 @@
+
+<assembly>
+  <id>bin</id>
+  <formats>
+    <format>dir</format>
+  </formats>
+  <includeBaseDirectory>false</includeBaseDirectory>
+  <moduleSets>
+    <moduleSet>
+      <includeSubModules>false</includeSubModules>
+      <binaries>
+        <outputDirectory>modules</outputDirectory>
+        <unpack>false</unpack>
+      </binaries>
+    </moduleSet>
+  </moduleSets>
+</assembly>

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/src/assemble/bin.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/src/assemble/bin.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/verify.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/verify.bsh?rev=438528&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/verify.bsh (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/multimodule/two-level-multimodule-dontIncludeSubModules/verify.bsh Wed Aug 30 08:59:57 2006
@@ -0,0 +1,19 @@
+import java.io.*;
+import java.net.*;
+import java.util.jar.*;
+
+boolean result = true;
+
+try
+{
+    result = new File( basedir, "target/two-level-multimodule-1.0-SNAPSHOT-bin.dir/modules/child-level1-project1-1.0-SNAPSHOT.jar" ).exists();   
+
+    result = result && !new File( basedir, "target/two-level-multimodule-1.0-SNAPSHOT-bin.dir/modules/child-level2-project1-1.0-SNAPSHOT.jar" ).exists();   
+}
+catch( IOException e )
+{
+    e.printStackTrace();
+    result = false;
+}
+
+return result;

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=438528&r1=438527&r2=438528&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 Wed Aug 30 08:59:57 2006
@@ -4,11 +4,13 @@
 import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
 import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
 import org.apache.maven.plugin.assembly.archive.task.AddDependencySetsTask;
+import org.apache.maven.plugin.assembly.artifact.DependencyResolver;
 import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
 import org.apache.maven.plugins.assembly.model.Assembly;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.logging.Logger;
 
 /**
  * @plexus.component role="org.apache.maven.plugin.assembly.archive.phase.AssemblyArchiverPhase"
@@ -24,14 +26,22 @@
      */
     private MavenProjectBuilder projectBuilder;
     
+    /**
+     * @plexus.requirement
+     */
+    private DependencyResolver dependencyResolver;
+    
     public DependencySetAssemblyPhase()
     {
         // used for plexus init
     }
     
-    public DependencySetAssemblyPhase( MavenProjectBuilder projectBuilder )
+    public DependencySetAssemblyPhase( MavenProjectBuilder projectBuilder, DependencyResolver dependencyResolver, Logger logger )
     {
         this.projectBuilder = projectBuilder;
+        this.dependencyResolver = dependencyResolver;
+        
+        enableLogging( logger );
     }
 
     public void execute( Assembly assembly, Archiver archiver, AssemblerConfigurationSource configSource )
@@ -39,7 +49,7 @@
     {
         AddDependencySetsTask task =
             new AddDependencySetsTask( assembly.getDependencySets(), configSource.getProject(), projectBuilder,
-                                       getLogger() );
+                                       dependencyResolver, getLogger() );
         
         task.setIncludeBaseDirectory( assembly.isIncludeBaseDirectory() );
 

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=438528&r1=438527&r2=438528&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 Wed Aug 30 08:59:57 2006
@@ -8,6 +8,7 @@
 import org.apache.maven.plugin.assembly.archive.task.AddArtifactTask;
 import org.apache.maven.plugin.assembly.archive.task.AddDependencySetsTask;
 import org.apache.maven.plugin.assembly.archive.task.AddFileSetsTask;
+import org.apache.maven.plugin.assembly.artifact.DependencyResolver;
 import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
 import org.apache.maven.plugin.assembly.utils.FilterUtils;
 import org.apache.maven.plugin.assembly.utils.ProjectUtils;
@@ -20,6 +21,7 @@
 import org.apache.maven.project.MavenProjectBuilder;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.logging.Logger;
 
 import java.io.File;
 import java.io.IOException;
@@ -43,14 +45,23 @@
      */
     private MavenProjectBuilder projectBuilder;
 
+    /**
+     * @plexus.requirement
+     */
+    private DependencyResolver dependencyResolver;
+
     public ModuleSetAssemblyPhase()
     {
         // needed for plexus
     }
 
-    public ModuleSetAssemblyPhase( MavenProjectBuilder projectBuilder )
+    public ModuleSetAssemblyPhase( MavenProjectBuilder projectBuilder, DependencyResolver dependencyResolver,
+                                   Logger logger )
     {
         this.projectBuilder = projectBuilder;
+        this.dependencyResolver = dependencyResolver;
+
+        enableLogging( logger );
     }
 
     public void execute( Assembly assembly, Archiver archiver, AssemblerConfigurationSource configSource )
@@ -64,7 +75,7 @@
         {
             ModuleSet moduleSet = ( ModuleSet ) i.next();
 
-            Set moduleProjects = getModuleProjects( moduleSet, configSource );
+            Set moduleProjects = getModuleProjects( moduleSet, configSource, moduleSet.isIncludeSubModules() );
 
             ModuleSources sources = moduleSet.getSources();
             ModuleBinaries binaries = moduleSet.getBinaries();
@@ -119,11 +130,11 @@
         }
 
         List depSets = binaries.getDependencySets();
-        
+
         if ( ( depSets == null || depSets.isEmpty() ) && binaries.isIncludeDependencies() )
         {
             DependencySet impliedDependencySet = new DependencySet();
-            
+
             impliedDependencySet.setOutputDirectory( binaries.getOutputDirectory() );
             impliedDependencySet.setOutputFileNameMapping( binaries.getOutputFileNameMapping() );
             impliedDependencySet.setFileMode( binaries.getFileMode() );
@@ -131,10 +142,10 @@
             impliedDependencySet.setExcludes( binaries.getExcludes() );
             impliedDependencySet.setIncludes( binaries.getIncludes() );
             impliedDependencySet.setUnpack( binaries.isUnpack() );
-            
+
             depSets = Collections.singletonList( impliedDependencySet );
         }
-        
+
         if ( depSets != null )
         {
             // FIXME: This will produce unpredictable results when module dependencies have a version conflict.
@@ -149,8 +160,8 @@
                 getLogger().debug( "Processing binary dependencies for module project: " + moduleProject.getId() );
 
                 AddDependencySetsTask task =
-                    new AddDependencySetsTask( depSets, moduleProject, projectBuilder, getLogger() );
-                
+                    new AddDependencySetsTask( depSets, moduleProject, projectBuilder, dependencyResolver, getLogger() );
+
                 task.setIncludeBaseDirectory( includeBaseDirectory );
                 task.setDefaultOutputDirectory( binaries.getOutputDirectory() );
                 task.setDefaultOutputFileNameMapping( binaries.getOutputFileNameMapping() );
@@ -253,7 +264,8 @@
         }
     }
 
-    protected Set getModuleProjects( ModuleSet moduleSet, AssemblerConfigurationSource configSource )
+    protected Set getModuleProjects( ModuleSet moduleSet, AssemblerConfigurationSource configSource,
+                                     boolean includeSubModules )
         throws ArchiveCreationException
     {
         MavenProject project = configSource.getProject();
@@ -261,7 +273,9 @@
         Set moduleProjects;
         try
         {
-            moduleProjects = ProjectUtils.getProjectModules( project, configSource.getReactorProjects(), getLogger() );
+            moduleProjects =
+                ProjectUtils.getProjectModules( project, configSource.getReactorProjects(), includeSubModules,
+                                                getLogger() );
         }
         catch ( IOException e )
         {

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java?rev=438528&r1=438527&r2=438528&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java Wed Aug 30 08:59:57 2006
@@ -1,10 +1,13 @@
 package org.apache.maven.plugin.assembly.archive.task;
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
 import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
-import org.apache.maven.plugin.assembly.filter.AssemblyScopeArtifactFilter;
+import org.apache.maven.plugin.assembly.artifact.DependencyResolver;
 import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
 import org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils;
 import org.apache.maven.plugin.assembly.utils.FilterUtils;
@@ -12,6 +15,7 @@
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.project.artifact.InvalidDependencyVersionException;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.logging.Logger;
@@ -19,7 +23,6 @@
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
@@ -53,12 +56,15 @@
 
     private String defaultOutputFileNameMapping;
 
+    private final DependencyResolver dependencyResolver;
+
     public AddDependencySetsTask( List dependencySets, MavenProject project, MavenProjectBuilder projectBuilder,
-                                  Logger logger )
+                                  DependencyResolver dependencyResolver, Logger logger )
     {
         this.dependencySets = dependencySets;
         this.project = project;
         this.projectBuilder = projectBuilder;
+        this.dependencyResolver = dependencyResolver;
         this.logger = logger;
     }
 
@@ -70,6 +76,12 @@
             logger.debug( "No dependency sets specified." );
             return;
         }
+        
+        List deps = project.getDependencies();
+        if ( deps == null || deps.isEmpty() )
+        {
+            logger.debug( "Project " + project.getId() + " has no dependencies. Skipping dependency set addition." );
+        }
 
         for ( Iterator i = dependencySets.iterator(); i.hasNext(); )
         {
@@ -85,7 +97,7 @@
     {
         logger.info( "Processing DependencySet" );
 
-        Set dependencyArtifacts = getDependencyArtifacts( project, dependencySet );
+        Set dependencyArtifacts = resolveDependencyArtifacts( dependencySet, configSource );
 
         for ( Iterator j = dependencyArtifacts.iterator(); j.hasNext(); )
         {
@@ -125,7 +137,40 @@
         }
     }
 
-    private void addNonArchiveDependency( Artifact depArtifact, MavenProject depProject, DependencySet dependencySet,
+    protected Set resolveDependencyArtifacts( DependencySet dependencySet, AssemblerConfigurationSource configSource )
+        throws ArchiveCreationException
+    {
+        ArtifactRepository localRepository = configSource.getLocalRepository();
+
+        List additionalRemoteRepositories = configSource.getRemoteRepositories();
+
+        Set dependencyArtifacts;
+        try
+        {
+            dependencyArtifacts =
+                dependencyResolver.resolveDependencies( project, dependencySet.getScope(), localRepository,
+                                                        additionalRemoteRepositories );
+        }
+        catch ( ArtifactResolutionException e )
+        {
+            throw new ArchiveCreationException( "Failed to resolve dependencies for project: " + project.getId(), e );
+        }
+        catch ( ArtifactNotFoundException e )
+        {
+            throw new ArchiveCreationException( "Failed to resolve dependencies for project: " + project.getId(), e );
+        }
+        catch ( InvalidDependencyVersionException e )
+        {
+            throw new ArchiveCreationException( "Failed to resolve dependencies for project: " + project.getId(), e );
+        }
+
+        FilterUtils.filterArtifacts( dependencyArtifacts, dependencySet.getIncludes(), dependencySet.getExcludes(),
+                                     true, Collections.EMPTY_LIST, logger );
+
+        return dependencyArtifacts;
+    }
+
+    protected void addNonArchiveDependency( Artifact depArtifact, MavenProject depProject, DependencySet dependencySet,
                                           Archiver archiver )
         throws AssemblyFormattingException, ArchiveCreationException
     {
@@ -159,24 +204,6 @@
         {
             throw new ArchiveCreationException( "Error adding file to archive: " + e.getMessage(), e );
         }
-    }
-
-    protected Set getDependencyArtifacts( MavenProject project, DependencySet dependencySet )
-    {
-        Set dependencyArtifacts = new HashSet();
-
-        Set projectArtifacts = project.getArtifacts();
-        if ( projectArtifacts != null )
-        {
-            dependencyArtifacts.addAll( projectArtifacts );
-        }
-
-        AssemblyScopeArtifactFilter scopeFilter = new AssemblyScopeArtifactFilter( dependencySet.getScope() );
-
-        FilterUtils.filterArtifacts( dependencyArtifacts, dependencySet.getIncludes(), dependencySet.getExcludes(),
-                                     true, Collections.singletonList( scopeFilter ), logger );
-
-        return dependencyArtifacts;
     }
 
     public boolean isIncludeBaseDirectory()

Added: 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=438528&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java Wed Aug 30 08:59:57 2006
@@ -0,0 +1,127 @@
+package org.apache.maven.plugin.assembly.artifact;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
+import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.plugin.assembly.filter.AssemblyScopeArtifactFilter;
+import org.apache.maven.plugin.assembly.utils.FilterUtils;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.artifact.InvalidDependencyVersionException;
+import org.apache.maven.project.artifact.MavenMetadataSource;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.logging.Logger;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @plexus.component role="org.apache.maven.plugin.assembly.artifact.DependencyResolver" role-hint="default"
+ * 
+ * @author jdcasey
+ */
+public class DefaultDependencyResolver
+    extends AbstractLogEnabled implements DependencyResolver
+{
+
+    /**
+     * @plexus.requirement
+     */
+    private ArtifactResolver resolver;
+
+    /**
+     * @plexus.requirement
+     */
+    private ArtifactMetadataSource metadataSource;
+
+    /**
+     * @plexus.requirement
+     */
+    private ArtifactFactory factory;
+
+    public DefaultDependencyResolver()
+    {
+        // for plexus init
+    }
+
+    public DefaultDependencyResolver( ArtifactResolver resolver, ArtifactMetadataSource metadataSource,
+                               ArtifactFactory factory, Logger logger )
+    {
+        this.resolver = resolver;
+        this.metadataSource = metadataSource;
+        this.factory = factory;
+
+        enableLogging( logger );
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.maven.plugin.assembly.artifact.DependencyResolver#resolveDependencies(org.apache.maven.project.MavenProject, java.lang.String, org.apache.maven.artifact.repository.ArtifactRepository, java.util.List)
+     */
+    public Set resolveDependencies( MavenProject project, String scope, ArtifactRepository localRepository,
+                                    List remoteRepositories )
+        throws InvalidDependencyVersionException, ArtifactResolutionException, ArtifactNotFoundException
+    {
+        List repos = aggregateRemoteArtifactRepositories( remoteRepositories, project );
+
+        ArtifactFilter filter = new AssemblyScopeArtifactFilter( scope );
+
+        // TODO: such a call in MavenMetadataSource too - packaging not really the intention of type
+        Artifact artifact =
+            factory.createBuildArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion(),
+                                         project.getPackaging() );
+
+        Set dependencyArtifacts =
+            MavenMetadataSource.createArtifacts( factory, project.getDependencies(), null, filter, project );
+
+        ArtifactResolutionResult result =
+            resolver.resolveTransitively( dependencyArtifacts, artifact, localRepository, repos, metadataSource, filter );
+        
+        getLogger().debug( "While resolving dependencies of " + project.getId() + ":" );
+        
+        FilterUtils.reportFilteringStatistics( Collections.singleton( filter ), getLogger() );
+
+        return result.getArtifacts();
+    }
+
+    private List aggregateRemoteArtifactRepositories( List remoteRepositories, MavenProject project )
+    {
+        List repoLists = new ArrayList();
+        
+        repoLists.add( remoteRepositories );
+        repoLists.add( project.getRemoteArtifactRepositories() );
+        
+        List remoteRepos = new ArrayList();
+        Set encounteredUrls = new HashSet();
+
+        for ( Iterator listIterator = repoLists.iterator(); listIterator.hasNext(); )
+        {
+            List repositoryList = ( List ) listIterator.next();
+            
+            if ( repositoryList != null && !repositoryList.isEmpty() )
+            {
+                for ( Iterator it = repositoryList.iterator(); it.hasNext(); )
+                {
+                    ArtifactRepository repo = ( ArtifactRepository ) it.next();
+                    
+                    if ( !encounteredUrls.contains( repo.getUrl() ) )
+                    {
+                        remoteRepos.add( repo );
+                        encounteredUrls.add( repo.getUrl() );
+                    }
+                }
+            }
+        }
+
+        return remoteRepos;
+    }
+
+}

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DefaultDependencyResolver.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 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=438528&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DependencyResolver.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DependencyResolver.java Wed Aug 30 08:59:57 2006
@@ -0,0 +1,19 @@
+package org.apache.maven.plugin.assembly.artifact;
+
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.artifact.InvalidDependencyVersionException;
+
+import java.util.List;
+import java.util.Set;
+
+public interface DependencyResolver
+{
+
+    public abstract Set resolveDependencies( MavenProject project, String scope, ArtifactRepository localRepository,
+                                             List remoteRepositories )
+        throws InvalidDependencyVersionException, ArtifactResolutionException, ArtifactNotFoundException;
+
+}
\ No newline at end of file

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DependencyResolver.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/artifact/DependencyResolver.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AssemblyMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AssemblyMojo.java?rev=438528&r1=438527&r2=438528&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AssemblyMojo.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AssemblyMojo.java Wed Aug 30 08:59:57 2006
@@ -24,8 +24,8 @@
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
  * @version $Id$
+ * 
  * @goal assembly
- * @requiresDependencyResolution test
  * @execute phase="package"
  * @aggregator
  */

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AttachedAssemblyMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AttachedAssemblyMojo.java?rev=438528&r1=438527&r2=438528&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AttachedAssemblyMojo.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/AttachedAssemblyMojo.java Wed Aug 30 08:59:57 2006
@@ -24,8 +24,8 @@
  *
  * @author <a href="mailto:jerome@coffeebreaks.org">Jerome Lacoste</a>
  * @version $Id$
+ * 
  * @goal attached
- * @requiresDependencyResolution test
  * @aggregator
  */
 public class AttachedAssemblyMojo

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectoryInlineMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectoryInlineMojo.java?rev=438528&r1=438527&r2=438528&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectoryInlineMojo.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectoryInlineMojo.java Wed Aug 30 08:59:57 2006
@@ -23,8 +23,8 @@
  * launching a parallel lifecycle build.
  *
  * @author <a href="mailto:gscokart@users.sourceforge.net">Gilles Scokart</a>
+ * 
  * @goal directory-inline
- * @requiresDependencyResolution test
  * @aggregator
  */
 public class DirectoryInlineMojo

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectoryMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectoryMojo.java?rev=438528&r1=438527&r2=438528&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectoryMojo.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectoryMojo.java Wed Aug 30 08:59:57 2006
@@ -22,7 +22,6 @@
  * Assemble an application bundle or distribution.
  *
  * @goal directory
- * @requiresDependencyResolution test
  * @execute phase="package"
  * @aggregator
  */

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/SingleAssemblyMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/SingleAssemblyMojo.java?rev=438528&r1=438527&r2=438528&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/SingleAssemblyMojo.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/mojos/SingleAssemblyMojo.java Wed Aug 30 08:59:57 2006
@@ -27,7 +27,6 @@
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @version $Id$
  * @goal single
- * @requiresDependencyResolution test
  */
 public class SingleAssemblyMojo
     extends AbstractAssemblyMojo

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/FilterUtils.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/FilterUtils.java?rev=438528&r1=438527&r2=438528&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/FilterUtils.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/FilterUtils.java Wed Aug 30 08:59:57 2006
@@ -1,6 +1,7 @@
 package org.apache.maven.plugin.assembly.utils;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
@@ -121,7 +122,13 @@
             }
         }
         
-        for ( Iterator it = allFilters.iterator(); it.hasNext(); )
+        
+        reportFilteringStatistics( allFilters, logger );
+    }
+
+    public static void reportFilteringStatistics( Collection filters, Logger logger )
+    {
+        for ( Iterator it = filters.iterator(); it.hasNext(); )
         {
             ArtifactFilter f = (ArtifactFilter) it.next();
             

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java?rev=438528&r1=438527&r2=438528&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java Wed Aug 30 08:59:57 2006
@@ -5,6 +5,7 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -17,9 +18,12 @@
     {
     }
 
-    public static Set getProjectModules( MavenProject project, List reactorProjects, Logger logger )
+    public static Set getProjectModules( MavenProject project, List reactorProjects, boolean includeSubModules,
+                                         Logger logger )
         throws IOException
     {
+        Set singleParentSet = Collections.singleton( project );
+        
         Set moduleCandidates = new HashSet( reactorProjects );
 
         Set modules = new HashSet();
@@ -40,26 +44,36 @@
 
             for ( Iterator candidateIterator = moduleCandidates.iterator(); candidateIterator.hasNext(); )
             {
-                MavenProject moduleCandidate = (MavenProject) candidateIterator.next();
+                MavenProject moduleCandidate = ( MavenProject ) candidateIterator.next();
 
                 if ( moduleCandidate.getFile() == null )
                 {
                     logger.warn( "Cannot compute whether " + moduleCandidate.getId() + " is a module of: "
-                        + project.getId() + "; it does not have an associated POM file on the local filesystem." );
+                                    + project.getId()
+                                    + "; it does not have an associated POM file on the local filesystem." );
                     continue;
                 }
 
-                Set currentPotentialParents = new HashSet( modules );
-                
+                Set currentPotentialParents;
+                if ( includeSubModules )
+                {
+                    currentPotentialParents = new HashSet( modules );
+                }
+                else
+                {
+                    currentPotentialParents = singleParentSet;
+                }
+
                 for ( Iterator parentIterator = currentPotentialParents.iterator(); parentIterator.hasNext(); )
                 {
-                    MavenProject potentialParent = (MavenProject) parentIterator.next();
+                    MavenProject potentialParent = ( MavenProject ) parentIterator.next();
 
                     if ( potentialParent.getFile() == null )
                     {
                         logger.warn( "Cannot use: " + moduleCandidate.getId()
-                            + " as a potential module-parent while computing the module set for: " + project.getId()
-                            + "; it does not have an associated POM file on the local filesystem." );
+                                        + " as a potential module-parent while computing the module set for: "
+                                        + project.getId()
+                                        + "; it does not have an associated POM file on the local filesystem." );
                         continue;
                     }
 
@@ -82,7 +96,8 @@
                     }
                 }
             }
-        } while ( changed != 0 );
+        }
+        while ( changed != 0 );
 
         // remove the master project from the modules set, now that we're done
         // using it as a set of potential module
@@ -99,19 +114,19 @@
         File basedir = mainProject.getBasedir();
 
         File moduleFile = moduleProject.getFile().getCanonicalFile();
-        
+
         File moduleBasedir = moduleProject.getBasedir();
-        
+
         if ( moduleBasedir == null )
         {
             moduleBasedir = new File( "." );
         }
-        
+
         moduleBasedir = moduleBasedir.getCanonicalFile();
 
         for ( Iterator it = modules.iterator(); it.hasNext(); )
         {
-            String moduleSubpath = (String) it.next();
+            String moduleSubpath = ( String ) it.next();
 
             File moduleDir = new File( basedir, moduleSubpath ).getCanonicalFile();
 

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo?rev=438528&r1=438527&r2=438528&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo Wed Aug 30 08:59:57 2006
@@ -481,6 +481,17 @@
       <version>1.0.0</version>
       <fields>
         <field>
+          <name>includeSubModules</name>
+          <version>1.0.0</version>
+          <type>boolean</type>
+          <defaultValue>true</defaultValue>
+          <description>
+          If set to false, the plugin will exclude sub-modules from processing in this ModuleSet.
+          Otherwise, it will process all sub-modules, each subject to include/exclude rules.
+          Default value is true.
+          </description>
+        </field>
+        <field>
           <name>includes</name>
           <version>1.0.0</version>
           <description>

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=438528&r1=438527&r2=438528&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 Wed Aug 30 08:59:57 2006
@@ -1,28 +1,23 @@
 package org.apache.maven.plugin.assembly.archive.phase;
 
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.model.Model;
-import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
 import org.apache.maven.plugin.assembly.archive.ArchiveCreationException;
-import org.apache.maven.plugin.assembly.archive.task.testutils.MockAndControlForAddArtifactTask;
+import org.apache.maven.plugin.assembly.archive.task.testutils.MockAndControlForAddDependencySetsTask;
+import org.apache.maven.plugin.assembly.artifact.DependencyResolver;
 import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
 import org.apache.maven.plugin.assembly.testutils.MockManager;
 import org.apache.maven.plugins.assembly.model.Assembly;
 import org.apache.maven.plugins.assembly.model.DependencySet;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.ProjectBuildingException;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.logging.console.ConsoleLogger;
-import org.easymock.MockControl;
 
 import java.io.IOException;
 import java.util.Collections;
-import java.util.List;
 
-import junit.framework.Assert;
 import junit.framework.TestCase;
 
 public class DependencySetAssemblyPhaseTest
@@ -51,35 +46,33 @@
         assembly.setIncludeBaseDirectory( false );
         assembly.addDependencySet( ds );
         
-        MockAndControlForAddArtifactTask macTask = new MockAndControlForAddArtifactTask( mockManager );
+        MockAndControlForAddDependencySetsTask macTask = new MockAndControlForAddDependencySetsTask( mockManager );
 
         macTask.expectArtifactGetFile();
         macTask.expectArtifactGetType( "jar" );
-        macTask.expectArtifactGetScope( Artifact.SCOPE_COMPILE );
         macTask.expectGetClassifier( null );
         macTask.expectIsSnapshot( false );
         macTask.expectGetArtifactHandler();
+        
+        macTask.expectCSGetRepositories( null, null );
+        macTask.expectResolveDependencies( Collections.singleton( macTask.artifact ) );
 
         macTask.expectAddFile( "out/artifact", 8 );
 
         project.setArtifacts( Collections.singleton( macTask.artifact ) );
 
-        MockAndControlForConfigSource macCS = new MockAndControlForConfigSource();
-
-        macCS.enableGetProject( project );
-        macCS.enableGetFinalName( "final-name" );
-        macCS.enableGetRepositories( null, Collections.EMPTY_LIST );
+        macTask.expectGetProject( project );
+        macTask.expectCSGetFinalName( "final-name" );
         
         Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
         
-        MockAndControlForProjectBuilder macPB = new MockAndControlForProjectBuilder();
-        
         MavenProject depProject = new MavenProject( new Model() );
-        macPB.expectBuildFromRepository( depProject );
+        
+        macTask.expectBuildFromRepository( depProject );
 
         mockManager.replayAll();
 
-        createPhase( macPB.projectBuilder, logger ).execute( assembly, macTask.archiver, macCS.configSource );
+        createPhase( macTask, logger ).execute( assembly, macTask.archiver, macTask.configSource );
 
         mockManager.verifyAll();
     }
@@ -94,90 +87,33 @@
         
         Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
         
-        MockAndControlForProjectBuilder macPB = new MockAndControlForProjectBuilder();
-        
-        MockAndControlForConfigSource macCS = new MockAndControlForConfigSource();
-        macCS.enableGetProject( null );
+        MockAndControlForAddDependencySetsTask macTask = new MockAndControlForAddDependencySetsTask( mockManager );
+
+        macTask.expectGetProject( null );
 
         mockManager.replayAll();
 
-        createPhase( macPB.projectBuilder, logger ).execute( assembly, null, macCS.configSource );
+        createPhase( macTask, logger ).execute( assembly, null, macTask.configSource );
 
         mockManager.verifyAll();
     }
 
-    private DependencySetAssemblyPhase createPhase( MavenProjectBuilder projectBuilder, Logger logger )
-    {
-        DependencySetAssemblyPhase phase = new DependencySetAssemblyPhase( projectBuilder );
-
-        phase.enableLogging( logger );
-
-        return phase;
-    }
-
-    private final class MockAndControlForConfigSource
+    private DependencySetAssemblyPhase createPhase( MockAndControlForAddDependencySetsTask macTask, Logger logger )
     {
-        AssemblerConfigurationSource configSource;
-
-        MockControl control;
-
-        MockAndControlForConfigSource()
-        {
-            control = MockControl.createControl( AssemblerConfigurationSource.class );
-            mockManager.add( control );
-
-            configSource = ( AssemblerConfigurationSource ) control.getMock();
-        }
-
-        public void enableGetRepositories( ArtifactRepository localRepo, List remoteRepos )
-        {
-            configSource.getLocalRepository();
-            control.setReturnValue( localRepo, MockControl.ONE_OR_MORE );
-            
-            configSource.getRemoteRepositories();
-            control.setReturnValue( remoteRepos, MockControl.ONE_OR_MORE );
-        }
+        MavenProjectBuilder projectBuilder = null;
+        DependencyResolver dependencyResolver = null;
         
-        public void enableGetFinalName( String finalName )
+        if ( macTask != null )
         {
-            configSource.getFinalName();
-            control.setReturnValue( finalName, MockControl.ONE_OR_MORE );
+            projectBuilder = macTask.projectBuilder;
+            dependencyResolver = macTask.dependencyResolver;
         }
-
-        void enableGetProject( MavenProject project )
-        {
-            configSource.getProject();
-            control.setReturnValue( project, MockControl.ONE_OR_MORE );
-        }
-    }
-
-    private final class MockAndControlForProjectBuilder
-    {
-        MavenProjectBuilder projectBuilder;
         
-        MockControl control;
-        
-        public MockAndControlForProjectBuilder()
-        {
-            control = MockControl.createControl( MavenProjectBuilder.class );
-            mockManager.add( control );
-            
-            projectBuilder = ( MavenProjectBuilder ) control.getMock();
-        }
+        DependencySetAssemblyPhase phase = new DependencySetAssemblyPhase( projectBuilder, dependencyResolver, logger );
 
-        public void expectBuildFromRepository( MavenProject project )
-        {
-            try
-            {
-                projectBuilder.buildFromRepository( null, null, null );
-                control.setMatcher( MockControl.ALWAYS_MATCHER );
-                control.setReturnValue( project, MockControl.ONE_OR_MORE );
-            }
-            catch ( ProjectBuildingException e )
-            {
-                Assert.fail( "should never happen" );
-            }
-        }
+        phase.enableLogging( logger );
+
+        return phase;
     }
 
 }