diff --git a/pom.xml b/pom.xml
index fd1add8..88770e0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -249,5 +249,32 @@
         </plugins>
       </build>
     </profile>
+    
+    <profile>
+      <id>apache-release</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-assembly-plugin</artifactId>
+            <version>2.2-beta-3</version>
+            <executions>
+              <execution>
+                <id>attach-src-dist</id>
+                <goals>
+                  <goal>single</goal>
+                </goals>
+                <phase>package</phase>
+                <configuration>
+                  <descriptors>
+                    <descriptor>src/assembly/src.xml</descriptor>
+                  </descriptors>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
   </profiles>
 </project>
diff --git a/src/assembly/src.xml b/src/assembly/src.xml
new file mode 100644
index 0000000..1020f83
--- /dev/null
+++ b/src/assembly/src.xml
@@ -0,0 +1,31 @@
+<assembly>
+  <id>src</id>
+  <formats>
+    <format>tar.gz</format>
+    <format>tar.bz2</format>
+    <format>zip</format>
+  </formats>
+  <fileSets>
+    <fileSet>
+      <directory>${project.basedir}</directory>
+      <outputDirectory>/</outputDirectory>
+      <useDefaultExcludes>true</useDefaultExcludes>
+      <includes>
+        <include>src/**</include>
+        <include>pom.xml</include>
+        <include>sample-build-test.pom</include>
+        <include>sample.build.xml</include>
+        <include>README*</include>
+      </includes>
+    </fileSet>
+    <fileSet>
+      <directory>${project.build.outputDirectory}/META-INF</directory>
+      <outputDirectory>/</outputDirectory>
+      <useDefaultExcludes>true</useDefaultExcludes>
+      <includes>
+        <include>LICENSE*</include>
+        <include>NOTICE*</include>
+      </includes>
+    </fileSet>
+  </fileSets>
+</assembly>
\ No newline at end of file
diff --git a/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java b/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
index 1c32895..d9a6487 100644
--- a/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
+++ b/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
@@ -81,6 +81,8 @@
     private String type;
 
     private boolean verbose;
+    
+    private boolean addArtifactFileSetRefs;
 
     protected void doExecute()
     {
@@ -273,6 +275,13 @@
         }
 
         getProject().setProperty( artifact.getDependencyConflictId(), artifact.getFile().getAbsolutePath() );
+        
+        if ( isAddArtifactFileSetRefs() )
+        {
+            FileSet artifactFileSet = new FileSet();
+            artifactFileSet.setFile( artifact.getFile() );
+            getProject().addReference( artifact.getDependencyConflictId(), artifactFileSet );
+        }
     }
 
     private void resolveSource( ArtifactFactory artifactFactory, ArtifactResolver resolver,
@@ -412,4 +421,14 @@
             log( "Unable to determine version from Maven Ant Tasks JAR file: " + e.getMessage(), Project.MSG_WARN );
         }
     }
+
+    public boolean isAddArtifactFileSetRefs()
+    {
+        return addArtifactFileSetRefs;
+    }
+
+    public void setAddArtifactFileSetRefs( boolean addArtifactFileSetRefs )
+    {
+        this.addArtifactFileSetRefs = addArtifactFileSetRefs;
+    }
 }
diff --git a/src/site/apt/reference.apt b/src/site/apt/reference.apt
index 503f861..c08056a 100644
--- a/src/site/apt/reference.apt
+++ b/src/site/apt/reference.apt
@@ -58,12 +58,14 @@
 *-------------------------+---------------------------------------------------------------------------+--------------+-------------+
 | <<<useScope>>>          | Follows the maven scope behaviour.  Can be set to <<<compile>>>, <<<runtime>>>, or <<<test>>>.  If no value is provided, all scopes will be included.  | No   |    |
 *-------------------------+---------------------------------------------------------------------------+--------------+-------------+
-| <<<scopes>>>            | <(since 2.0.10)>  A comma separated list of specific scopes to be retrieved.  If no value is provided, all scopes will be included.  | No   |    |
+| <<<scopes>>>            | A comma separated list of specific scopes to be retrieved.  If no value is provided, all scopes will be included.  | No   |  2.0.10  |
 *-------------------------+---------------------------------------------------------------------------+--------------+-------------+
 | <<<verbose>>>           | If <<<true>>> this displays the results of each dependency resolution and their relationships. Default is <false>. | No | |
 *-------------------------+---------------------------------------------------------------------------+--------------+-------------+
 | <<<versionsId>>>        | The property ID to store the versions of the resolved dependencies, for use by a {{{reference.html#VersionMapper} <<<VersionMapper>>>}}. | No | 2.0.7 |
 *-------------------------+---------------------------------------------------------------------------+--------------+-------------+
+| <<<addArtifactFileSetRefs>>> | If set to true, will add a fileset for each resolved dependency.  The fileset has an id of <<<groupId:artifactId:type[:classifier]>>>.  Default is <false>.  | No | 2.0.10 |
+*-------------------------+---------------------------------------------------------------------------+--------------+-------------+
 
   The task can include the <<<dependency>>> nested type, in addition to the other shared types
   {{{reference.html#localRepository} <<<localRepository>>>}}, {{{reference.html#pom} <<<pom>>>}} and
