diff --git a/src/it/projects/basic-features/classpath-descriptor/invoker.properties b/src/it/projects/basic-features/classpath-descriptor/invoker.properties
index 86d0756..728079c 100644
--- a/src/it/projects/basic-features/classpath-descriptor/invoker.properties
+++ b/src/it/projects/basic-features/classpath-descriptor/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:assembly
+invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/basic-features/descriptorDirectoryScan/invoker.properties b/src/it/projects/basic-features/descriptorDirectoryScan/invoker.properties
index e667a1f..728079c 100644
--- a/src/it/projects/basic-features/descriptorDirectoryScan/invoker.properties
+++ b/src/it/projects/basic-features/descriptorDirectoryScan/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory
+invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/basic-features/file-copyIntoTopDir/TODO.txt b/src/it/projects/basic-features/file-copyIntoTopDir/TODO.txt
deleted file mode 100644
index 345e6ae..0000000
--- a/src/it/projects/basic-features/file-copyIntoTopDir/TODO.txt
+++ /dev/null
@@ -1 +0,0 @@
-Test
diff --git a/src/it/projects/basic-features/file-copyIntoTopDir/invoker.properties b/src/it/projects/basic-features/file-copyIntoTopDir/invoker.properties
deleted file mode 100644
index 1b476c4..0000000
--- a/src/it/projects/basic-features/file-copyIntoTopDir/invoker.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# 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=org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory
diff --git a/src/it/projects/basic-features/file-copyIntoTopDir/pom.xml b/src/it/projects/basic-features/file-copyIntoTopDir/pom.xml
deleted file mode 100644
index 61ad873..0000000
--- a/src/it/projects/basic-features/file-copyIntoTopDir/pom.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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>
-  <parent>
-    <groupId>org.apache.maven.plugin.assembly.test</groupId>
-    <artifactId>it-project-parent</artifactId>
-    <version>1</version>
-  </parent>
-  
-  <groupId>org.test</groupId>
-  <artifactId>parent</artifactId>
-  <version>1.0</version>
-  
-  <name>Parent</name>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <configuration>
-          <descriptors>
-            <descriptor>src/assemble/bin.xml</descriptor>
-          </descriptors>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-</project>
diff --git a/src/it/projects/basic-features/file-copyIntoTopDir/src/assemble/bin.xml b/src/it/projects/basic-features/file-copyIntoTopDir/src/assemble/bin.xml
deleted file mode 100644
index 152555c..0000000
--- a/src/it/projects/basic-features/file-copyIntoTopDir/src/assemble/bin.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-<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>bug-example</id>
-  <formats>
-    <format>dir</format>
-  </formats>
-  <includeBaseDirectory>false</includeBaseDirectory>
-  <files>
-    <file>
-      <source>TODO.txt</source>
-      <outputDirectory>/</outputDirectory>
-    </file>
-  </files>
-</assembly>
diff --git a/src/it/projects/basic-features/file-copyIntoTopDir/verify.bsh b/src/it/projects/basic-features/file-copyIntoTopDir/verify.bsh
deleted file mode 100644
index 2d9336c..0000000
--- a/src/it/projects/basic-features/file-copyIntoTopDir/verify.bsh
+++ /dev/null
@@ -1,17 +0,0 @@
-import java.io.*;
-import java.net.*;
-import java.util.jar.*;
-
-boolean result = true;
-
-try
-{
-    result = new File( basedir, "target/parent-1.0-bug-example/TODO.txt" ).exists();   
-}
-catch( IOException e )
-{
-    e.printStackTrace();
-    result = false;
-}
-
-return result;
diff --git a/src/it/projects/basic-features/file-sameName/invoker.properties b/src/it/projects/basic-features/file-sameName/invoker.properties
index a708935..2da4fe6 100644
--- a/src/it/projects/basic-features/file-sameName/invoker.properties
+++ b/src/it/projects/basic-features/file-sameName/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:assembly
+invoker.goals=org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/basic-features/massembly-256-pomPropertiesInterp/invoker.properties b/src/it/projects/basic-features/massembly-256-pomPropertiesInterp/invoker.properties
index fa8bf7e..728079c 100644
--- a/src/it/projects/basic-features/massembly-256-pomPropertiesInterp/invoker.properties
+++ b/src/it/projects/basic-features/massembly-256-pomPropertiesInterp/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:attached
+invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/basic-features/massembly-351-projectPrefixInterp/invoker.properties b/src/it/projects/basic-features/massembly-351-projectPrefixInterp/invoker.properties
index fa8bf7e..728079c 100644
--- a/src/it/projects/basic-features/massembly-351-projectPrefixInterp/invoker.properties
+++ b/src/it/projects/basic-features/massembly-351-projectPrefixInterp/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:attached
+invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/basic-features/outputFileNameMapping-simple/invoker.properties b/src/it/projects/basic-features/outputFileNameMapping-simple/invoker.properties
index e667a1f..728079c 100644
--- a/src/it/projects/basic-features/outputFileNameMapping-simple/invoker.properties
+++ b/src/it/projects/basic-features/outputFileNameMapping-simple/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory
+invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/basic-features/outputFileNameMapping-withArtifactBaseVersion/invoker.properties b/src/it/projects/basic-features/outputFileNameMapping-withArtifactBaseVersion/invoker.properties
index 1b476c4..2da4fe6 100644
--- a/src/it/projects/basic-features/outputFileNameMapping-withArtifactBaseVersion/invoker.properties
+++ b/src/it/projects/basic-features/outputFileNameMapping-withArtifactBaseVersion/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory
+invoker.goals=org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/bugs/massembly-190/invoker.properties b/src/it/projects/bugs/massembly-190/invoker.properties
index c1b600f..703e763 100644
--- a/src/it/projects/bugs/massembly-190/invoker.properties
+++ b/src/it/projects/bugs/massembly-190/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean package assembly:assembly
+invoker.goals=clean package org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/bugs/massembly-462/invoker.properties b/src/it/projects/bugs/massembly-462/invoker.properties
index c686d5b..728079c 100644
--- a/src/it/projects/bugs/massembly-462/invoker.properties
+++ b/src/it/projects/bugs/massembly-462/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory-inline
+invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/dependency-sets/dependencySet-projectArtifactNotIncluded/invoker.properties b/src/it/projects/dependency-sets/dependencySet-projectArtifactNotIncluded/invoker.properties
index 1b476c4..2da4fe6 100644
--- a/src/it/projects/dependency-sets/dependencySet-projectArtifactNotIncluded/invoker.properties
+++ b/src/it/projects/dependency-sets/dependencySet-projectArtifactNotIncluded/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory
+invoker.goals=org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/dependency-sets/including-pom-dependency/invoker.properties b/src/it/projects/dependency-sets/including-pom-dependency/invoker.properties
index e667a1f..728079c 100644
--- a/src/it/projects/dependency-sets/including-pom-dependency/invoker.properties
+++ b/src/it/projects/dependency-sets/including-pom-dependency/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory
+invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/dependency-sets/including-sar-dependency/invoker.properties b/src/it/projects/dependency-sets/including-sar-dependency/invoker.properties
index e667a1f..728079c 100644
--- a/src/it/projects/dependency-sets/including-sar-dependency/invoker.properties
+++ b/src/it/projects/dependency-sets/including-sar-dependency/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory
+invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/dependency-sets/massembly-99/invoker.properties b/src/it/projects/dependency-sets/massembly-99/invoker.properties
index 9afbffa..703e763 100644
--- a/src/it/projects/dependency-sets/massembly-99/invoker.properties
+++ b/src/it/projects/dependency-sets/massembly-99/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean package org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory-inline
+invoker.goals=clean package org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/dependency-sets/using-moduleSet-implied-depSet/invoker.properties b/src/it/projects/dependency-sets/using-moduleSet-implied-depSet/invoker.properties
index 9afbffa..703e763 100644
--- a/src/it/projects/dependency-sets/using-moduleSet-implied-depSet/invoker.properties
+++ b/src/it/projects/dependency-sets/using-moduleSet-implied-depSet/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean package org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory-inline
+invoker.goals=clean package org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/file-modes/file-set-fileMode/invoker.properties b/src/it/projects/file-modes/file-set-fileMode/invoker.properties
index 1b476c4..2da4fe6 100644
--- a/src/it/projects/file-modes/file-set-fileMode/invoker.properties
+++ b/src/it/projects/file-modes/file-set-fileMode/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory
+invoker.goals=org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/file-modes/fileItem-fileMode/invoker.properties b/src/it/projects/file-modes/fileItem-fileMode/invoker.properties
index 1b476c4..2da4fe6 100644
--- a/src/it/projects/file-modes/fileItem-fileMode/invoker.properties
+++ b/src/it/projects/file-modes/fileItem-fileMode/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory
+invoker.goals=org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/file-sets/default-directory-unspecified/invoker.properties b/src/it/projects/file-sets/default-directory-unspecified/invoker.properties
index c686d5b..728079c 100644
--- a/src/it/projects/file-sets/default-directory-unspecified/invoker.properties
+++ b/src/it/projects/file-sets/default-directory-unspecified/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory-inline
+invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/file-sets/default-excludes-unspecified/invoker.properties b/src/it/projects/file-sets/default-excludes-unspecified/invoker.properties
index c686d5b..728079c 100644
--- a/src/it/projects/file-sets/default-excludes-unspecified/invoker.properties
+++ b/src/it/projects/file-sets/default-excludes-unspecified/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory-inline
+invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/file-sets/dont-use-default-excludes/invoker.properties b/src/it/projects/file-sets/dont-use-default-excludes/invoker.properties
index c686d5b..3111208 100644
--- a/src/it/projects/file-sets/dont-use-default-excludes/invoker.properties
+++ b/src/it/projects/file-sets/dont-use-default-excludes/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory-inline
+invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single! | update 
diff --git a/src/it/projects/file-sets/excluding-svn-dirs/invoker.properties b/src/it/projects/file-sets/excluding-svn-dirs/invoker.properties
index c686d5b..728079c 100644
--- a/src/it/projects/file-sets/excluding-svn-dirs/invoker.properties
+++ b/src/it/projects/file-sets/excluding-svn-dirs/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory-inline
+invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/file-sets/include-base-directory/invoker.properties b/src/it/projects/file-sets/include-base-directory/invoker.properties
index c686d5b..728079c 100644
--- a/src/it/projects/file-sets/include-base-directory/invoker.properties
+++ b/src/it/projects/file-sets/include-base-directory/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory-inline
+invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/file-sets/use-default-excludes/invoker.properties b/src/it/projects/file-sets/use-default-excludes/invoker.properties
index c686d5b..728079c 100644
--- a/src/it/projects/file-sets/use-default-excludes/invoker.properties
+++ b/src/it/projects/file-sets/use-default-excludes/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory-inline
+invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/filtering-feature/filter-comp-descriptor-path/invoker.properties b/src/it/projects/filtering-feature/filter-comp-descriptor-path/invoker.properties
index a708935..2da4fe6 100644
--- a/src/it/projects/filtering-feature/filter-comp-descriptor-path/invoker.properties
+++ b/src/it/projects/filtering-feature/filter-comp-descriptor-path/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:assembly
+invoker.goals=org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/filtering-feature/filtersDefinedInAssemblyPluginConfig/invoker.properties b/src/it/projects/filtering-feature/filtersDefinedInAssemblyPluginConfig/invoker.properties
index a708935..2da4fe6 100644
--- a/src/it/projects/filtering-feature/filtersDefinedInAssemblyPluginConfig/invoker.properties
+++ b/src/it/projects/filtering-feature/filtersDefinedInAssemblyPluginConfig/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:assembly
+invoker.goals=org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/forking-tests/assembly-assembly-with-module-binaries/invoker.properties b/src/it/projects/forking-tests/assembly-assembly-with-module-binaries/invoker.properties
index 9f1387a..ee01d0b 100644
--- a/src/it/projects/forking-tests/assembly-assembly-with-module-binaries/invoker.properties
+++ b/src/it/projects/forking-tests/assembly-assembly-with-module-binaries/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=install org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:assembly
+invoker.goals=install org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/forking-tests/assembly-attached-with-module-binaries/invoker.properties b/src/it/projects/forking-tests/assembly-attached-with-module-binaries/invoker.properties
index e2bd4d7..ee01d0b 100644
--- a/src/it/projects/forking-tests/assembly-attached-with-module-binaries/invoker.properties
+++ b/src/it/projects/forking-tests/assembly-attached-with-module-binaries/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=install org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:attached
+invoker.goals=install org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/multimodule/massembly-298/invoker.properties b/src/it/projects/multimodule/massembly-298/invoker.properties
index 9f1387a..ee01d0b 100644
--- a/src/it/projects/multimodule/massembly-298/invoker.properties
+++ b/src/it/projects/multimodule/massembly-298/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=install org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:assembly
+invoker.goals=install org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/multimodule/multimodule-binariesNotSource/invoker.properties b/src/it/projects/multimodule/multimodule-binariesNotSource/invoker.properties
index 9afbffa..703e763 100644
--- a/src/it/projects/multimodule/multimodule-binariesNotSource/invoker.properties
+++ b/src/it/projects/multimodule/multimodule-binariesNotSource/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean package org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory-inline
+invoker.goals=clean package org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/multimodule/two-level-multimodule-dontIncludeSubModules/invoker.properties b/src/it/projects/multimodule/two-level-multimodule-dontIncludeSubModules/invoker.properties
index eb95500..c4b8020 100644
--- a/src/it/projects/multimodule/two-level-multimodule-dontIncludeSubModules/invoker.properties
+++ b/src/it/projects/multimodule/two-level-multimodule-dontIncludeSubModules/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=package org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory
+invoker.goals=package org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/multimodule/two-level-multimodule/invoker.properties b/src/it/projects/multimodule/two-level-multimodule/invoker.properties
index eb95500..c4b8020 100644
--- a/src/it/projects/multimodule/two-level-multimodule/invoker.properties
+++ b/src/it/projects/multimodule/two-level-multimodule/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=package org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory
+invoker.goals=package org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/multimodule/two-levels-includeBaseDir-withBin/invoker.properties b/src/it/projects/multimodule/two-levels-includeBaseDir-withBin/invoker.properties
index 9afbffa..703e763 100644
--- a/src/it/projects/multimodule/two-levels-includeBaseDir-withBin/invoker.properties
+++ b/src/it/projects/multimodule/two-levels-includeBaseDir-withBin/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean package org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory-inline
+invoker.goals=clean package org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/multimodule/two-levels-includeBaseDir-withSrc/invoker.properties b/src/it/projects/multimodule/two-levels-includeBaseDir-withSrc/invoker.properties
index c686d5b..728079c 100644
--- a/src/it/projects/multimodule/two-levels-includeBaseDir-withSrc/invoker.properties
+++ b/src/it/projects/multimodule/two-levels-includeBaseDir-withSrc/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory-inline
+invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/multimodule/twoLevel-dontIncludeSubModules-artifactIdExprOutDir/invoker.properties b/src/it/projects/multimodule/twoLevel-dontIncludeSubModules-artifactIdExprOutDir/invoker.properties
index c686d5b..728079c 100644
--- a/src/it/projects/multimodule/twoLevel-dontIncludeSubModules-artifactIdExprOutDir/invoker.properties
+++ b/src/it/projects/multimodule/twoLevel-dontIncludeSubModules-artifactIdExprOutDir/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory-inline
+invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/it/projects/multimodule/twoLevel-includeSubModules-excludeSubModuleSourceDirs/invoker.properties b/src/it/projects/multimodule/twoLevel-includeSubModules-excludeSubModuleSourceDirs/invoker.properties
index c686d5b..728079c 100644
--- a/src/it/projects/multimodule/twoLevel-includeSubModules-excludeSubModuleSourceDirs/invoker.properties
+++ b/src/it/projects/multimodule/twoLevel-includeSubModules-excludeSubModuleSourceDirs/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:directory-inline
+invoker.goals=clean org.apache.maven.plugins:maven-assembly-plugin:${testVersion}:single
diff --git a/src/main/java/org/apache/maven/plugin/assembly/mojos/AssemblyMojo.java b/src/main/java/org/apache/maven/plugin/assembly/mojos/AssemblyMojo.java
deleted file mode 100644
index 585df64..0000000
--- a/src/main/java/org/apache/maven/plugin/assembly/mojos/AssemblyMojo.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.apache.maven.plugin.assembly.mojos;
-
-/*
- * 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 org.apache.maven.plugins.annotations.Execute;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.project.MavenProject;
-
-/**
- * Assemble an application bundle or distribution using an assembly descriptor from the command line. This goal will
- * force Maven to build all included POMs up to the <code>package</code> phase BEFORE the assembly is processed. <br/>
- * 
- * <b>NOTE:</b> This goal should ONLY be run from the command line, and if building a multimodule project it should be
- * used from the root POM. Use the <code>assembly:single</code> goal for binding your assembly to the lifecycle. <br/>
- * 
- * @author <a href="mailto:jdcasey@apache.org">John Casey</a>
- * @author <a href="mailto:brett@apache.org">Brett Porter</a>
- * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
- * @version $Id$
- * 
- * @deprecated Use assembly:single instead! The assembly:assembly mojo leads to non-standard builds.
- */
-@Deprecated
-@Mojo( name = "assembly", aggregator = true, inheritByDefault = false )
-@Execute( phase = LifecyclePhase.PACKAGE )
-public class AssemblyMojo
-    extends AbstractAssemblyMojo
-{
-    /**
-     * Get the executed project from the forked lifecycle.
-     */
-    @Parameter( property = "executedProject" )
-    private MavenProject executedProject;
-
-    @Override
-    public MavenProject getProject()
-    {
-        return executedProject;
-    }
-
-}
diff --git a/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectoryInlineMojo.java b/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectoryInlineMojo.java
deleted file mode 100644
index df41cda..0000000
--- a/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectoryInlineMojo.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package org.apache.maven.plugin.assembly.mojos;
-
-/*
- * 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 org.apache.maven.plugins.annotations.Component;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.project.MavenProject;
-
-/**
- * Like the <code>assembly:attached</code> goal, assemble an application bundle or distribution from an assembly
- * descriptor, WITHOUT first forcing Maven to build all POMs to the <code>package</code> phase (as is required by the
- * <code>assembly:assembly</code> goal). This goal differs from <code>assembly:attached</code> in that it ignores the
- * &lt;formats/&gt; section of the assembly descriptor, and forces the assembly to be created as a directory in the
- * project's build-output directory (usually <code>./target</code>). <br/>
- * 
- * This goal is also functionally equivalent to using the <code>assembly:attached</code> goal in conjunction with the
- * <code>dir</code> assembly format. <br/>
- * 
- * <b>NOTE:</b> This goal should ONLY be run from the command line, and if building a multimodule project it should be
- * used from the root POM. Use the <code>assembly:directory-single</code> goal for binding your assembly to the
- * lifecycle.
- * 
- * @author <a href="mailto:jdcasey@apache.org">John Casey</a>
- * @author <a href="mailto:gscokart@users.sourceforge.net">Gilles Scokart</a>
- * @version $Id$
- * 
- * @deprecated Use assembly:single and an assembly with format == dir instead! This mojo is redundant, and leads to
- *             non-standard builds.
- */
-@Mojo( name = "directory-inline", aggregator = true, inheritByDefault = false )
-@Deprecated
-public class DirectoryInlineMojo
-    extends AbstractDirectoryMojo
-{
-    /**
-     */
-    @Parameter( defaultValue = "${project}", readonly = true, required = true )
-    private MavenProject project;
-
-    @Override
-    public MavenProject getProject()
-    {
-        return project;
-    }
-
-}
diff --git a/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectoryMojo.java b/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectoryMojo.java
deleted file mode 100644
index 03b459d..0000000
--- a/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectoryMojo.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package org.apache.maven.plugin.assembly.mojos;
-
-/*
- * 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 org.apache.maven.plugins.annotations.Execute;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.project.MavenProject;
-
-/**
- * Like the <code>assembly:attached</code> goal, assemble an application bundle or distribution using an assembly
- * descriptor from the command line. This goal will force Maven to build all included POMs up to the
- * <code>package</code> phase BEFORE the assembly is processed. This goal differs from <code>assembly:assembly</code> in
- * that it ignores the &lt;formats/&gt; section of the assembly descriptor, and forces the assembly to be created as a
- * directory in the project's build-output directory (usually <code>./target</code>). <br/>
- * <p/>
- * This goal is also functionally equivalent to using the <code>assembly:assembly</code> goal in conjunction with the
- * <code>dir</code> assembly format. <br/>
- * <p/>
- * <b>NOTE:</b> This goal should ONLY be run from the command line, and if building a multimodule project it should be
- * used from the root POM. Use the <code>assembly:directory-single</code> goal for binding your assembly to the
- * lifecycle.
- *
- * @author <a href="mailto:jdcasey@apache.org">John Casey</a>
- * @version $Id$
- * @deprecated Use assembly:single and an assembly with format == dir instead! This mojo is redundant.
- */
-@Mojo( name = "directory", aggregator = true, inheritByDefault = false )
-@Execute( phase = LifecyclePhase.PACKAGE )
-@Deprecated
-public class DirectoryMojo
-    extends AbstractDirectoryMojo
-{
-    /**
-     * Get the executed project from the forked lifecycle.
-     */
-    @Parameter( property = "executedProject" )
-    private MavenProject executedProject;
-
-    @Override
-    public MavenProject getProject()
-    {
-        return executedProject;
-    }
-}
diff --git a/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectorySingleMojo.java b/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectorySingleMojo.java
deleted file mode 100644
index 8d2a6ce..0000000
--- a/src/main/java/org/apache/maven/plugin/assembly/mojos/DirectorySingleMojo.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.apache.maven.plugin.assembly.mojos;
-
-/*
- * 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 org.apache.maven.plugins.annotations.Component;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.project.MavenProject;
-
-/**
- * Like the <code>assembly:attached</code> goal, assemble an application bundle or distribution from an assembly
- * descriptor. This goal is suitable either for binding to the lifecycle or calling directly from the command line
- * (provided all required files are available before the build starts, or are produced by another goal specified before
- * this one on the command line). <br/>
- * 
- * This goal differs from <code>assembly:single</code> in that it ignores the &lt;formats/&gt; section of the assembly
- * descriptor, and forces the assembly to be created as a directory in the project's build-output directory (usually
- * <code>./target</code>).
- * 
- * @author <a href="mailto:jdcasey@apache.org">John Casey</a>
- * @author <a href="mailto:gscokart@users.sourceforge.net">Gilles Scokart</a>
- * @version $Id$
- * 
- * @deprecated Use assembly:single and an assembly with format == dir instead! This mojo is redundant.
- */
-@Mojo( name = "directory-single", inheritByDefault = false )
-@Deprecated
-public class DirectorySingleMojo
-    extends AbstractDirectoryMojo
-{
-    /**
-     */
-    @Parameter( defaultValue = "${project}", readonly = true, required = true )
-    private MavenProject project;
-
-    @Override
-    public MavenProject getProject()
-    {
-        return project;
-    }
-
-}
diff --git a/src/main/java/org/apache/maven/plugin/assembly/mojos/UnpackMojo.java b/src/main/java/org/apache/maven/plugin/assembly/mojos/UnpackMojo.java
deleted file mode 100644
index cf38878..0000000
--- a/src/main/java/org/apache/maven/plugin/assembly/mojos/UnpackMojo.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package org.apache.maven.plugin.assembly.mojos;
-
-/*
- * 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.File;
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugin.assembly.archive.ArchiveExpansionException;
-import org.apache.maven.plugin.assembly.utils.AssemblyFileUtils;
-import org.apache.maven.plugins.annotations.Component;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.apache.maven.plugins.annotations.ResolutionScope;
-import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.archiver.manager.ArchiverManager;
-import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
-
-/**
- * Unpack project dependencies. Currently supports dependencies of type jar and zip.
- *
- * @version $Id$
- * @deprecated Use org.apache.maven.plugins:maven-dependency-plugin goal: unpack or unpack-dependencies instead.
- */
-@Mojo( name = "unpack", requiresDependencyResolution = ResolutionScope.TEST, inheritByDefault = false )
-@Deprecated
-public class UnpackMojo
-    extends AbstractMojo
-{
-
-    /**
-     */
-    @Parameter( defaultValue = "${project}", readonly = true, required = true )
-    private MavenProject project;
-
-    /**
-     */
-    @Component
-    private ArchiverManager archiverManager;
-
-    /**
-     * Directory to unpack JARs into if needed
-     */
-    @Parameter( defaultValue = "${project.build.directory}/assembly/work", required = true )
-    protected File workDirectory;
-
-    /**
-     * Unpacks the archive file.
-     *
-     * @throws MojoExecutionException
-     */
-    public void execute()
-        throws MojoExecutionException, MojoFailureException
-    {
-        final Set<Artifact> dependencies = new LinkedHashSet<Artifact>();
-
-        if ( project.getArtifact() != null && project.getArtifact().getFile() != null )
-        {
-            dependencies.add( project.getArtifact() );
-        }
-
-        @SuppressWarnings( "unchecked" )
-        final Set<Artifact> projectArtifacts = project.getArtifacts();
-        if ( projectArtifacts != null )
-        {
-            dependencies.addAll( projectArtifacts );
-        }
-
-        for (final Artifact artifact : dependencies) {
-            final String name = artifact.getFile().getName();
-
-            final File tempLocation = new File(workDirectory, name.substring(0, name.lastIndexOf('.')));
-            boolean process = false;
-            if (!tempLocation.exists()) {
-                tempLocation.mkdirs();
-                process = true;
-            } else if (artifact.getFile().lastModified() > tempLocation.lastModified()) {
-                process = true;
-            }
-
-            if (process) {
-                final File file = artifact.getFile();
-                try {
-                    AssemblyFileUtils.unpack(file, tempLocation, archiverManager);
-                } catch (final NoSuchArchiverException e) {
-                    getLog().info("Skip unpacking dependency file with unknown extension: " + file.getPath());
-                } catch (final ArchiveExpansionException e) {
-                    throw new MojoExecutionException("Error unpacking dependency file: " + file, e);
-                }
-            }
-        }
-    }
-
-}
\ No newline at end of file
