You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2022/05/02 08:41:17 UTC

[maven-assembly-plugin] branch master updated: [MASSEMBLY-954] Update plugin to Maven 3.2.5 (#54)

This is an automated email from the ASF dual-hosted git repository.

cstamas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-assembly-plugin.git


The following commit(s) were added to refs/heads/master by this push:
     new 57a84318 [MASSEMBLY-954] Update plugin to Maven 3.2.5 (#54)
57a84318 is described below

commit 57a84318617c7ce1735e29138974eb0af4665a53
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Mon May 2 10:41:12 2022 +0200

    [MASSEMBLY-954] Update plugin to Maven 3.2.5 (#54)
    
    Updates parent POM to 36, Maven to 3.2.5 w/
    proper scoping, and many other dependencies.
    
    Also, gets rid of Plexus API and Plexus components
    and replaces them with JSR330. Also in tests gets
    rid of Junit3 TestCase and fully switched to Junit4
    w/ one exception (where PlexusTestCase is needed).
    
    Got fully rid of Plexus Logger as well, but downstream
    dependencies are still expecting it so added a small
    bridging.
    
    Plugin still remains Java7.
---
 pom.xml                                            | 246 +++++++++++----------
 .../assembly/AssemblerConfigurationSource.java     |   6 -
 .../plugins/assembly/archive/AssemblyArchiver.java |   2 -
 .../assembly/archive/DefaultAssemblyArchiver.java  |  89 +++-----
 .../archive/archiver/AssemblyProxyArchiver.java    |  44 ++--
 .../archive/phase/AssemblyArchiverPhase.java       |   2 -
 .../archive/phase/DependencySetAssemblyPhase.java  |  54 ++---
 .../archive/phase/FileItemAssemblyPhase.java       |  17 +-
 .../archive/phase/FileSetAssemblyPhase.java        |  16 +-
 .../archive/phase/ModuleSetAssemblyPhase.java      | 103 ++++-----
 .../archive/phase/RepositoryAssemblyPhase.java     |  38 ++--
 .../assembly/archive/task/AddArtifactTask.java     |  28 +--
 .../archive/task/AddDependencySetsTask.java        |  49 ++--
 .../assembly/archive/task/AddFileSetsTask.java     |  37 +---
 .../artifact/DefaultDependencyResolver.java        |  35 ++-
 .../filter/AbstractLineAggregatingHandler.java     |   3 +-
 .../filter/ComponentsXmlArchiverFileFilter.java    |   7 +-
 .../assembly/filter/MetaInfServicesHandler.java    |   5 +-
 .../assembly/filter/MetaInfSpringHandler.java      |   5 +-
 .../filter/SimpleAggregatingDescriptorHandler.java |  35 +--
 .../plugins/assembly/format/ReaderFormatter.java   |  10 +-
 .../plugins/assembly/functions/MavenProjects.java  |   4 +-
 .../PlexusLoggingHelper.java}                      |  21 +-
 .../SarPlexusIoResourceCollection.java}            |  25 ++-
 .../SarUnArchiverProvider.java}                    |  23 +-
 .../interpolation/AssemblyInterpolator.java        |   5 +-
 .../plugins/assembly/io/DefaultAssemblyReader.java |  57 ++---
 .../assembly/mojos/AbstractAssemblyMojo.java       |  13 +-
 .../plugins/assembly/mojos/SingleAssemblyMojo.java |   3 +-
 .../repository/DefaultRepositoryAssembler.java     |  50 +++--
 .../plugins/assembly/utils/AssemblyFileUtils.java  |   9 +-
 .../assembly/utils/AssemblyFormatUtils.java        |  24 +-
 .../maven/plugins/assembly/utils/FilterUtils.java  |   9 +-
 .../plugins/assembly/utils/LineEndingsUtils.java   |  13 +-
 .../maven/plugins/assembly/utils/ProjectUtils.java |  18 +-
 .../assembly/utils/TypeConversionUtils.java        |   4 +-
 src/main/resources/META-INF/plexus/components.xml  |  37 ----
 .../archive/DefaultAssemblyArchiverTest.java       |  66 ++----
 .../archiver/AssemblyProxyArchiverTest.java        |  21 +-
 .../phase/DependencySetAssemblyPhaseTest.java      |   3 +-
 .../archive/phase/FileItemAssemblyPhaseTest.java   |  71 ++----
 .../archive/phase/FileSetAssemblyPhaseTest.java    |   5 -
 .../archive/phase/ModuleSetAssemblyPhaseTest.java  |  14 +-
 .../archive/phase/RepositoryAssemblyPhaseTest.java |   9 +-
 .../assembly/archive/task/AddArtifactTaskTest.java |  14 +-
 .../archive/task/AddDependencySetsTaskTest.java    |  32 +--
 .../assembly/archive/task/AddFileSetsTaskTest.java |   6 -
 .../artifact/DefaultDependencyResolverTest.java    |  39 ++--
 .../artifact/ResolutionManagementInfoTest.java     |  13 +-
 .../ComponentsXmlArchiverFileFilterTest.java       |  34 ++-
 .../assembly/format/ReaderFormatterTest.java       |   5 +-
 .../assembly/io/DefaultAssemblyReaderTest.java     |   5 +-
 .../io/PrefixedClasspathLocatorStrategyTest.java   |  10 +-
 .../assembly/testutils/PojoConfigSource.java       |  10 +-
 .../plugins/assembly/utils/FilterUtilsTest.java    |  30 +--
 .../utils/LinuxLineFeedInputStreamTest.java        |  13 +-
 .../plugins/assembly/utils/ProjectUtilsTest.java   |  28 ++-
 .../assembly/utils/TypeConversionUtilsTest.java    |  66 +++---
 .../utils/WindowsLineFeedInputStreamTest.java      |  13 +-
 src/test/resources/simplelogger.properties         |  18 ++
 60 files changed, 720 insertions(+), 951 deletions(-)

diff --git a/pom.xml b/pom.xml
index 3a811111..487db1a9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,7 +27,7 @@ under the License.
   <parent>
     <artifactId>maven-plugins</artifactId>
     <groupId>org.apache.maven.plugins</groupId>
-    <version>34</version>
+    <version>36</version>
     <relativePath/>
   </parent>
 
@@ -66,9 +66,10 @@ under the License.
   <properties>
     <javaVersion>7</javaVersion>
     <mdoVersion>2.1.0</mdoVersion>
-    <mavenArchiverVersion>3.5.1</mavenArchiverVersion>
-    <mavenFilteringVersion>3.2.0</mavenFilteringVersion>
-    <mavenVersion>3.0</mavenVersion>
+    <mavenVersion>3.2.5</mavenVersion>
+    <slf4jVersion>1.7.5</slf4jVersion>
+
+    <surefire.version>3.0.0-M6</surefire.version>
     <testOutputToFile>true</testOutputToFile>
     <checkstyle.violation.ignore>RedundantThrows,NewlineAtEndOfFile,ParameterNumber,MethodLength,FileLength,ModifierOrder,JavadocMethod</checkstyle.violation.ignore>
     <project.build.outputTimestamp>2020-04-27T17:26:57Z</project.build.outputTimestamp>
@@ -88,52 +89,66 @@ under the License.
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-plugin-api</artifactId>
       <version>${mavenVersion}</version>
+      <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-core</artifactId>
       <version>${mavenVersion}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-compat</artifactId>
-      <version>${mavenVersion}</version>
-      <scope>test</scope>
+      <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact</artifactId>
       <version>${mavenVersion}</version>
+      <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-model</artifactId>
       <version>${mavenVersion}</version>
+      <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-settings</artifactId>
       <version>${mavenVersion}</version>
+      <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.maven.shared</groupId>
-      <artifactId>maven-shared-utils</artifactId>
-      <version>3.3.3</version>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <version>${slf4jVersion}</version>
+      <scope>provided</scope>
     </dependency>
+
     <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-aether-provider</artifactId>
-      <version>3.0</version>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
+      <scope>provided</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+      <version>1</version>
+      <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>org.sonatype.sisu</groupId>
-      <artifactId>sisu-inject-plexus</artifactId>
-      <version>1.4.2</version>
+      <groupId>org.eclipse.sisu</groupId>
+      <artifactId>org.eclipse.sisu.plexus</artifactId>
+      <scope>provided</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.maven.shared</groupId>
+      <artifactId>maven-shared-utils</artifactId>
+      <version>3.3.4</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.shared</groupId>
       <artifactId>maven-common-artifact-filters</artifactId>
-      <version>3.1.1</version>
+      <version>3.2.0</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.shared</groupId>
@@ -141,27 +156,28 @@ under the License.
       <version>0.13.1</version>
     </dependency>
 
-    <dependency>
-      <groupId>com.google.code.findbugs</groupId>
-      <artifactId>jsr305</artifactId>
-      <version>3.0.0</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven.plugin-tools</groupId>
-      <artifactId>maven-plugin-annotations</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-interpolation</artifactId>
       <version>1.26</version>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-slf4j-logging</artifactId>
+      <version>1.1</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.codehaus.plexus</groupId>
+          <artifactId>plexus-container-default</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-archiver</artifactId>
       <version>4.2.1</version>
     </dependency>
-
     <dependency>
     <groupId>commons-io</groupId>
     <artifactId>commons-io</artifactId>
@@ -170,7 +186,7 @@ under the License.
     <dependency>
       <groupId>org.apache.maven.shared</groupId>
       <artifactId>maven-filtering</artifactId>
-      <version>${mavenFilteringVersion}</version>
+      <version>3.2.0</version>
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
@@ -180,7 +196,7 @@ under the License.
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-archiver</artifactId>
-      <version>${mavenArchiverVersion}</version>
+      <version>3.5.1</version>
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
@@ -188,22 +204,55 @@ under the License.
       <version>3.3.0</version>
     </dependency>
 
+    <!-- Test -->
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.13.2</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.hamcrest</groupId>
+      <artifactId>hamcrest-core</artifactId>
+      <version>2.2</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <version>${slf4jVersion}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-compat</artifactId>
+      <version>${mavenVersion}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-aether-provider</artifactId>
+      <version>${mavenVersion}</version>
+      <scope>test</scope>
+    </dependency>
+
     <dependency>
       <groupId>org.apache.maven.plugin-testing</groupId>
       <artifactId>maven-plugin-testing-harness</artifactId>
-      <version>2.1</version>
+      <version>3.3.0</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-core</artifactId>
       <version>2.28.2</version>
-      <scope>test</scope> 
+      <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.jdom</groupId>
-      <artifactId>jdom</artifactId>
-      <version>1.1.3</version>
+      <artifactId>jdom2</artifactId>
+      <version>2.0.6.1</version>
       <scope>test</scope>
     </dependency>
     <!-- need this because JDOM incorrectly declares its own dependencies -->
@@ -212,24 +261,6 @@ under the License.
       <artifactId>jaxen</artifactId>
       <version>1.2.0</version>
       <scope>test</scope>
-    </dependency>    
-    
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.13.2</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.hamcrest</groupId>
-      <artifactId>hamcrest-core</artifactId>
-      <version>2.2</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-component-annotations</artifactId>
-      <scope>provided</scope>
     </dependency>
   </dependencies>
 
@@ -244,59 +275,8 @@ under the License.
       </resource>
     </resources>
 
-    <plugins>
-      <plugin>
-        <groupId>org.codehaus.plexus</groupId>
-        <artifactId>plexus-component-metadata</artifactId>
-        <executions>
-          <execution>
-            <id>descriptors</id>
-            <goals>
-              <goal>generate-metadata</goal>
-              <goal>generate-test-metadata</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.modello</groupId>
-        <artifactId>modello-maven-plugin</artifactId>
-        <configuration>
-          <version>${mdoVersion}</version>
-          <models>
-            <model>src/main/mdo/assembly.mdo</model>
-            <model>src/main/mdo/assembly-component.mdo</model>
-          </models>
-        </configuration>
-        <executions>
-          <execution>
-            <id>mdo</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>xpp3-reader</goal>
-              <goal>xpp3-writer</goal>
-              <goal>java</goal>
-              <goal>xsd</goal>
-            </goals>
-          </execution>
-          <execution>
-            <id>mdo-site</id>
-            <phase>pre-site</phase>
-            <goals>
-              <goal>xdoc</goal>
-              <goal>xsd</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
     <pluginManagement>
       <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-jxr-plugin</artifactId>
-          <version>3.1.1</version>
-        </plugin>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-resources-plugin</artifactId>
@@ -342,21 +322,49 @@ under the License.
         </plugin>
       </plugins>
     </pluginManagement>
+
+    <plugins>
+      <plugin>
+        <groupId>org.eclipse.sisu</groupId>
+        <artifactId>sisu-maven-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.modello</groupId>
+        <artifactId>modello-maven-plugin</artifactId>
+        <configuration>
+          <version>${mdoVersion}</version>
+          <models>
+            <model>src/main/mdo/assembly.mdo</model>
+            <model>src/main/mdo/assembly-component.mdo</model>
+          </models>
+        </configuration>
+        <executions>
+          <execution>
+            <id>mdo</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>xpp3-reader</goal>
+              <goal>xpp3-writer</goal>
+              <goal>java</goal>
+              <goal>xsd</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>mdo-site</id>
+            <phase>pre-site</phase>
+            <goals>
+              <goal>xdoc</goal>
+              <goal>xsd</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
   </build>
 
   <profiles>
     <profile>
       <id>run-its</id>
-      <pluginRepositories>
-        <pluginRepository>
-          <id>apache.snapshots</id>
-          <url>https://repository.apache.org/snapshots</url>
-          <releases>
-            <enabled>false</enabled>
-          </releases>
-        </pluginRepository>
-      </pluginRepositories>
-
       <properties>
         <test.remote.repo.url>file://${project.build.testOutputDirectory}/remote-repository</test.remote.repo.url>
         <testVersion>${project.version}</testVersion>
@@ -367,7 +375,6 @@ under the License.
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-invoker-plugin</artifactId>
-            <version>3.2.2</version>
             <configuration>
               <properties>
                 <testVersion>${testVersion}</testVersion>
@@ -402,11 +409,6 @@ under the License.
                 <artifactId>commons-compress</artifactId>
                 <version>1.20</version>
               </dependency>
-              <dependency>
-                <groupId>commons-io</groupId>
-                <artifactId>commons-io</artifactId>
-                <version>2.6</version>
-              </dependency>
             </dependencies>
           </plugin>
         </plugins>
diff --git a/src/main/java/org/apache/maven/plugins/assembly/AssemblerConfigurationSource.java b/src/main/java/org/apache/maven/plugins/assembly/AssemblerConfigurationSource.java
index ace04d20..41478847 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/AssemblerConfigurationSource.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/AssemblerConfigurationSource.java
@@ -23,8 +23,6 @@ import java.io.File;
 import java.util.List;
 import java.util.Properties;
 
-import javax.annotation.Nonnull;
-
 import org.apache.maven.archiver.MavenArchiveConfiguration;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.execution.MavenSession;
@@ -199,22 +197,18 @@ public interface AssemblerConfigurationSource
      */
     List<String> getDelimiters();
 
-    @Nonnull
     FixedStringSearchInterpolator getRepositoryInterpolator();
 
     /**
      * Gets an interpolator from environment variables and stuff
      */
-    @Nonnull
     FixedStringSearchInterpolator getCommandLinePropsInterpolator();
 
     /**
      * Gets an interpolator from environment variables and stuff
      */
-    @Nonnull
     FixedStringSearchInterpolator getEnvInterpolator();
 
-    @Nonnull
     FixedStringSearchInterpolator getMainProjectInterpolator();
 
     /**
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/AssemblyArchiver.java b/src/main/java/org/apache/maven/plugins/assembly/archive/AssemblyArchiver.java
index 269e2489..d3a70ed6 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/AssemblyArchiver.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/AssemblyArchiver.java
@@ -34,8 +34,6 @@ import java.util.Date;
  */
 public interface AssemblyArchiver
 {
-    String ROLE = AssemblyArchiver.class.getName();
-
     /**
      * Create the assembly archive. Generally:
      * <ol>
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java b/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java
index 195aea27..116b7515 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java
@@ -19,6 +19,9 @@ package org.apache.maven.plugins.assembly.archive;
  * under the License.
  */
 
+import javax.inject.Inject;
+import javax.inject.Named;
+
 import org.apache.maven.plugin.DebugConfigurationListener;
 import org.apache.maven.plugins.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugins.assembly.InvalidAssemblerConfigurationException;
@@ -29,12 +32,12 @@ import org.apache.maven.plugins.assembly.artifact.DependencyResolutionException;
 import org.apache.maven.plugins.assembly.filter.ComponentsXmlArchiverFileFilter;
 import org.apache.maven.plugins.assembly.filter.ContainerDescriptorHandler;
 import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
+import org.apache.maven.plugins.assembly.internal.PlexusLoggingHelper;
 import org.apache.maven.plugins.assembly.interpolation.AssemblyExpressionEvaluator;
 import org.apache.maven.plugins.assembly.model.Assembly;
 import org.apache.maven.plugins.assembly.model.ContainerDescriptorHandlerConfig;
 import org.apache.maven.plugins.assembly.utils.AssemblyFileUtils;
 import org.apache.maven.plugins.assembly.utils.AssemblyFormatUtils;
-import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.archiver.ArchiveFinalizer;
 import org.codehaus.plexus.archiver.Archiver;
@@ -48,8 +51,6 @@ import org.codehaus.plexus.archiver.tar.TarArchiver;
 import org.codehaus.plexus.archiver.tar.TarLongFileMode;
 import org.codehaus.plexus.archiver.war.WarArchiver;
 import org.codehaus.plexus.archiver.zip.AbstractZipArchiver;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.component.configurator.ComponentConfigurationException;
 import org.codehaus.plexus.component.configurator.ComponentConfigurator;
 import org.codehaus.plexus.component.configurator.ConfigurationListener;
@@ -58,14 +59,12 @@ import org.codehaus.plexus.component.repository.exception.ComponentLookupExcepti
 import org.codehaus.plexus.components.io.fileselectors.FileSelector;
 import org.codehaus.plexus.configuration.PlexusConfiguration;
 import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
-import org.codehaus.plexus.context.Context;
-import org.codehaus.plexus.context.ContextException;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
@@ -78,6 +77,8 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
+import static java.util.Objects.requireNonNull;
+
 /**
  * Controller component designed to organize the many activities involved in creating an assembly archive. This includes
  * locating and configuring {@link Archiver} instances, executing multiple {@link org.apache.maven.plugins.assembly
@@ -87,40 +88,30 @@ import java.util.Map;
  *
  *
  */
-@Component( role = AssemblyArchiver.class, instantiationStrategy = "per-lookup" )
-public class DefaultAssemblyArchiver
-    extends AbstractLogEnabled
-    implements AssemblyArchiver, Contextualizable
+@Named
+public class DefaultAssemblyArchiver implements AssemblyArchiver
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( DefaultAssemblyArchiver.class );
 
-    @Requirement
-    private ArchiverManager archiverManager;
+    private final ArchiverManager archiverManager;
 
-    @Requirement( role = AssemblyArchiverPhase.class )
-    private List<AssemblyArchiverPhase> assemblyPhases;
+    private final List<AssemblyArchiverPhase> assemblyPhases;
 
     @SuppressWarnings( "MismatchedQueryAndUpdateOfCollection" )
-    @Requirement( role = ContainerDescriptorHandler.class )
-    private Map<String, ContainerDescriptorHandler> containerDescriptorHandlers;
+    private final Map<String, ContainerDescriptorHandler> containerDescriptorHandlers;
 
-    private PlexusContainer container;
-
-    @SuppressWarnings( "UnusedDeclaration" )
-    public DefaultAssemblyArchiver()
-    {
-    }
+    private final PlexusContainer container;
 
-    // introduced for testing.
 
-    /**
-     * @param archiverManager The archive manager.
-     * @param assemblyPhases  The list of {@link AssemblyArchiverPhase}
-     */
-    protected DefaultAssemblyArchiver( final ArchiverManager archiverManager,
-                                       final List<AssemblyArchiverPhase> assemblyPhases )
+    @Inject
+    public DefaultAssemblyArchiver( ArchiverManager archiverManager, List<AssemblyArchiverPhase> assemblyPhases,
+                                    Map<String, ContainerDescriptorHandler> containerDescriptorHandlers,
+                                    PlexusContainer container )
     {
-        this.archiverManager = archiverManager;
-        this.assemblyPhases = assemblyPhases;
+        this.archiverManager = requireNonNull( archiverManager );
+        this.assemblyPhases = requireNonNull( assemblyPhases );
+        this.containerDescriptorHandlers = requireNonNull( containerDescriptorHandlers );
+        this.container = requireNonNull( container );
     }
 
     private List<AssemblyArchiverPhase> sortedPhases()
@@ -221,7 +212,7 @@ public class DefaultAssemblyArchiver
         throws InvalidAssemblerConfigurationException
     // CHECKSTYLE_ON: LineLength
     {
-        getLogger().debug( "All known ContainerDescriptorHandler components: " + ( containerDescriptorHandlers == null
+        LOGGER.debug( "All known ContainerDescriptorHandler components: " + ( containerDescriptorHandlers == null
             ? "none; map is null."
             : "" + containerDescriptorHandlers.keySet() ) );
 
@@ -246,12 +237,12 @@ public class DefaultAssemblyArchiver
                         "Cannot find ContainerDescriptorHandler with hint: " + hint );
                 }
 
-                getLogger().debug(
+                LOGGER.debug(
                     "Found container descriptor handler with hint: " + hint + " (component: " + handler + ")" );
 
                 if ( config.getConfiguration() != null )
                 {
-                    getLogger().debug( "Configuring handler with:\n\n" + config.getConfiguration() + "\n\n" );
+                    LOGGER.debug( "Configuring handler with:\n\n" + config.getConfiguration() + "\n\n" );
 
                     configureContainerDescriptorHandler( handler, (Xpp3Dom) config.getConfiguration(), configSource );
                 }
@@ -338,10 +329,10 @@ public class DefaultAssemblyArchiver
         }
 
         archiver = new AssemblyProxyArchiver( prefix, archiver, containerHandlers, extraSelectors, extraFinalizers,
-                                              configSource.getWorkingDirectory(), getLogger() );
+                                              configSource.getWorkingDirectory() );
         if ( configSource.isDryRun() )
         {
-            archiver = new DryRunArchiver( archiver, getLogger() );
+            archiver = new DryRunArchiver( archiver, PlexusLoggingHelper.wrap( LOGGER ) );
         }
 
         archiver.setUseJvmChmod( configSource.isUpdateOnly() );
@@ -378,7 +369,7 @@ public class DefaultAssemblyArchiver
                                                       final AssemblerConfigurationSource configSource )
         throws InvalidAssemblerConfigurationException
     {
-        getLogger().debug( "Configuring handler: '" + handler.getClass().getName() + "' -->" );
+        LOGGER.debug( "Configuring handler: '" + handler.getClass().getName() + "' -->" );
 
         try
         {
@@ -395,7 +386,7 @@ public class DefaultAssemblyArchiver
                 "Failed to lookup configurator for setup of handler: " + handler.getClass().getName(), e );
         }
 
-        getLogger().debug( "-- end configuration --" );
+        LOGGER.debug( "-- end configuration --" );
     }
 
     private void configureArchiver( final Archiver archiver, final AssemblerConfigurationSource configSource )
@@ -411,7 +402,7 @@ public class DefaultAssemblyArchiver
                                          e );
         }
 
-        getLogger().debug( "Configuring archiver: '" + archiver.getClass().getName() + "' -->" );
+        LOGGER.debug( "Configuring archiver: '" + archiver.getClass().getName() + "' -->" );
 
         try
         {
@@ -427,7 +418,7 @@ public class DefaultAssemblyArchiver
                 "Failed to lookup configurator for setup of archiver: " + archiver.getClass().getName(), e );
         }
 
-        getLogger().debug( "-- end configuration --" );
+        LOGGER.debug( "-- end configuration --" );
     }
 
     private void configureComponent( final Object component, final Xpp3Dom config,
@@ -436,7 +427,8 @@ public class DefaultAssemblyArchiver
     {
         final ComponentConfigurator configurator = container.lookup( ComponentConfigurator.class, "basic" );
 
-        final ConfigurationListener listener = new DebugConfigurationListener( getLogger() );
+        final ConfigurationListener listener = new DebugConfigurationListener(
+                PlexusLoggingHelper.wrap( LOGGER ) );
 
         final ExpressionEvaluator expressionEvaluator = new AssemblyExpressionEvaluator( configSource );
 
@@ -553,17 +545,4 @@ public class DefaultAssemblyArchiver
 
         return tarArchiver;
     }
-
-    @Override
-    public void contextualize( final Context context )
-        throws ContextException
-    {
-        container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
-    }
-
-    protected void setContainer( final PlexusContainer container )
-    {
-        this.container = container;
-    }
-
 }
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/archiver/AssemblyProxyArchiver.java b/src/main/java/org/apache/maven/plugins/assembly/archive/archiver/AssemblyProxyArchiver.java
index 2b0cd068..cf009982 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/archiver/AssemblyProxyArchiver.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/archiver/AssemblyProxyArchiver.java
@@ -34,9 +34,9 @@ import org.codehaus.plexus.components.io.fileselectors.FileInfo;
 import org.codehaus.plexus.components.io.fileselectors.FileSelector;
 import org.codehaus.plexus.components.io.resources.PlexusIoResource;
 import org.codehaus.plexus.components.io.resources.PlexusIoResourceCollection;
-import org.codehaus.plexus.logging.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-import javax.annotation.Nonnull;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -60,16 +60,14 @@ import java.util.Map;
  * @author jdcasey
  *
  */
-public class AssemblyProxyArchiver
-    implements Archiver
+public class AssemblyProxyArchiver implements Archiver
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( AssemblyProxyArchiver.class );
 
     private final Archiver delegate;
 
     private final ThreadLocal<Boolean> inPublicApi = new ThreadLocal<>();
 
-    private final Logger logger;
-
     private final String assemblyWorkPath;
 
     private String rootPrefix;
@@ -86,15 +84,13 @@ public class AssemblyProxyArchiver
     public AssemblyProxyArchiver( final String rootPrefix, final Archiver delegate,
                                   final List<ContainerDescriptorHandler> containerDescriptorHandlers,
                                   final List<FileSelector> extraSelectors, final List<ArchiveFinalizer> extraFinalizers,
-                                  final File assemblyWorkDir, final Logger logger )
+                                  final File assemblyWorkDir )
     {
         this.rootPrefix = rootPrefix;
         this.delegate = delegate;
 
         assemblyWorkPath = assemblyWorkDir.getAbsolutePath().replace( '\\', '/' );
 
-        this.logger = logger;
-
         if ( !"".equals( rootPrefix ) && !rootPrefix.endsWith( "/" ) )
         {
             this.rootPrefix += "/";
@@ -140,7 +136,7 @@ public class AssemblyProxyArchiver
      * {@inheritDoc}
      */
     @Override
-    public void addArchivedFileSet( @Nonnull final File archiveFile, final String prefix, final String[] includes,
+    public void addArchivedFileSet( final File archiveFile, final String prefix, final String[] includes,
                                     final String[] excludes )
     {
         inPublicApi.set( Boolean.TRUE );
@@ -165,9 +161,9 @@ public class AssemblyProxyArchiver
 
     private void debug( final String message )
     {
-        if ( ( logger != null ) && logger.isDebugEnabled() )
+        if ( LOGGER.isDebugEnabled() )
         {
-            logger.debug( message );
+            LOGGER.debug( message );
         }
     }
 
@@ -175,7 +171,7 @@ public class AssemblyProxyArchiver
      * {@inheritDoc}
      */
     @Override
-    public void addArchivedFileSet( @Nonnull final File archiveFile, final String prefix )
+    public void addArchivedFileSet( final File archiveFile, final String prefix )
     {
         inPublicApi.set( Boolean.TRUE );
         try
@@ -225,7 +221,7 @@ public class AssemblyProxyArchiver
      * {@inheritDoc}
      */
     @Override
-    public void addArchivedFileSet( @Nonnull final File archiveFile )
+    public void addArchivedFileSet( final File archiveFile )
     {
         inPublicApi.set( Boolean.TRUE );
         try
@@ -249,7 +245,7 @@ public class AssemblyProxyArchiver
      * {@inheritDoc}
      */
     @Override
-    public void addDirectory( @Nonnull final File directory, final String prefix, final String[] includes,
+    public void addDirectory( final File directory, final String prefix, final String[] includes,
                               final String[] excludes )
     {
         inPublicApi.set( Boolean.TRUE );
@@ -313,7 +309,7 @@ public class AssemblyProxyArchiver
      * {@inheritDoc}
      */
     @Override
-    public void addDirectory( @Nonnull final File directory, final String prefix )
+    public void addDirectory( final File directory, final String prefix )
     {
         inPublicApi.set( Boolean.TRUE );
         try
@@ -338,7 +334,7 @@ public class AssemblyProxyArchiver
      * {@inheritDoc}
      */
     @Override
-    public void addDirectory( @Nonnull final File directory, final String[] includes, final String[] excludes )
+    public void addDirectory( final File directory, final String[] includes, final String[] excludes )
     {
         inPublicApi.set( Boolean.TRUE );
         try
@@ -365,7 +361,7 @@ public class AssemblyProxyArchiver
      * {@inheritDoc}
      */
     @Override
-    public void addDirectory( @Nonnull final File directory )
+    public void addDirectory( final File directory )
     {
         inPublicApi.set( Boolean.TRUE );
         try
@@ -390,7 +386,7 @@ public class AssemblyProxyArchiver
      * {@inheritDoc}
      */
     @Override
-    public void addFile( @Nonnull final File inputFile, @Nonnull final String destFileName, final int permissions )
+    public void addFile( final File inputFile, final String destFileName, final int permissions )
     {
         if ( acceptFile( inputFile ) )
         {
@@ -412,7 +408,7 @@ public class AssemblyProxyArchiver
      * {@inheritDoc}
      */
     @Override
-    public void addFile( @Nonnull final File inputFile, @Nonnull final String destFileName )
+    public void addFile( final File inputFile, final String destFileName )
     {
         if ( acceptFile( inputFile ) )
         {
@@ -706,7 +702,7 @@ public class AssemblyProxyArchiver
      * {@inheritDoc}
      */
     @Override
-    public void addFileSet( @Nonnull final FileSet fileSet )
+    public void addFileSet( final FileSet fileSet )
     {
         inPublicApi.set( Boolean.TRUE );
         try
@@ -729,7 +725,8 @@ public class AssemblyProxyArchiver
 
         if ( fsPath.equals( assemblyWorkPath ) )
         {
-            logger.debug( "SKIPPING fileset with source directory matching assembly working-directory: " + fsPath );
+            LOGGER.debug(
+                    "SKIPPING fileset with source directory matching assembly working-directory: " + fsPath );
         }
         else if ( assemblyWorkPath.startsWith( fsPath ) )
         {
@@ -741,7 +738,7 @@ public class AssemblyProxyArchiver
 
             final String workDirExclude = assemblyWorkPath.substring( fsPath.length() + 1 );
 
-            logger.debug(
+            LOGGER.debug(
                 "Adding exclude for assembly working-directory: " + workDirExclude + "\nFile-Set source directory: "
                     + fsPath );
 
@@ -850,7 +847,6 @@ public class AssemblyProxyArchiver
      * {@inheritDoc}
      */
     @Override
-    @Nonnull
     public ResourceIterator getResources()
     {
         return delegate.getResources();
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/AssemblyArchiverPhase.java b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/AssemblyArchiverPhase.java
index 269e9597..83a15452 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/AssemblyArchiverPhase.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/AssemblyArchiverPhase.java
@@ -35,8 +35,6 @@ import org.codehaus.plexus.archiver.Archiver;
  */
 public interface AssemblyArchiverPhase
 {
-    String ROLE = AssemblyArchiverPhase.class.getName();
-
     /**
      * Handle the associated section of the assembly descriptor.
      *
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/DependencySetAssemblyPhase.java b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/DependencySetAssemblyPhase.java
index 09e9ff10..64077cd8 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/DependencySetAssemblyPhase.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/DependencySetAssemblyPhase.java
@@ -19,6 +19,10 @@ package org.apache.maven.plugins.assembly.archive.phase;
  * under the License.
  */
 
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugins.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugins.assembly.InvalidAssemblerConfigurationException;
@@ -31,55 +35,35 @@ import org.apache.maven.plugins.assembly.model.Assembly;
 import org.apache.maven.plugins.assembly.model.DependencySet;
 import org.apache.maven.project.ProjectBuilder;
 import org.codehaus.plexus.archiver.Archiver;
-import org.codehaus.plexus.archiver.manager.ArchiverManager;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.logging.Logger;
 
 import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
 
+import static java.util.Objects.requireNonNull;
+
 /**
  * Handles the top-level &lt;dependencySets/&gt; section of the assembly descriptor.
  *
  *
  */
-@Component( role = AssemblyArchiverPhase.class, hint = "dependency-sets" )
-public class DependencySetAssemblyPhase
-    extends AbstractLogEnabled
-    implements AssemblyArchiverPhase, PhaseOrder
+@Singleton
+@Named( "dependency-sets" )
+public class DependencySetAssemblyPhase implements AssemblyArchiverPhase, PhaseOrder
 {
+    private final ProjectBuilder projectBuilder;
 
-    @Requirement
-    private ProjectBuilder projectBuilder;
-
-    @Requirement
-    private ArchiverManager archiverManager;
-
-    @Requirement
-    private DependencyResolver dependencyResolver;
-
-
-    /**
-     * Default constructor.
-     */
-    public DependencySetAssemblyPhase()
-    {
-        // used for plexus init
-    }
+    private final DependencyResolver dependencyResolver;
 
     /**
-     * @param projectBuilder The Maven Project Builder.
-     * @param logger         The Logger.
+     * Injected ctor.
      */
-    public DependencySetAssemblyPhase( final ProjectBuilder projectBuilder, DependencyResolver dependencyResolver,
-                                       final Logger logger )
+    @Inject
+    public DependencySetAssemblyPhase( final ProjectBuilder projectBuilder,
+                                       final DependencyResolver dependencyResolver )
     {
-        this.projectBuilder = projectBuilder;
-        this.dependencyResolver = dependencyResolver;
-        enableLogging( logger );
+        this.projectBuilder = requireNonNull( projectBuilder );
+        this.dependencyResolver = requireNonNull( dependencyResolver );
     }
 
     /**
@@ -98,8 +82,8 @@ public class DependencySetAssemblyPhase
         {
             final AddDependencySetsTask task =
                 new AddDependencySetsTask( Collections.singletonList( dependencySetSetEntry.getKey() ),
-                                           dependencySetSetEntry.getValue(), configSource.getProject(), projectBuilder,
-                                           getLogger() );
+                        dependencySetSetEntry.getValue(), configSource.getProject(),
+                        projectBuilder );
 
             task.execute( archiver, configSource );
         }
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java
index 68d23aa4..0a93086f 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java
@@ -19,6 +19,9 @@ package org.apache.maven.plugins.assembly.archive.phase;
  * under the License.
  */
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import static org.codehaus.plexus.components.io.resources.ResourceFactory.createResource;
 
 import java.io.File;
@@ -43,23 +46,23 @@ import org.apache.maven.plugins.assembly.utils.AssemblyFormatUtils;
 import org.apache.maven.plugins.assembly.utils.TypeConversionUtils;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.components.io.functions.ContentSupplier;
 import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
 import org.codehaus.plexus.components.io.resources.PlexusIoFileResource;
 import org.codehaus.plexus.components.io.resources.PlexusIoResource;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Handles the top-level &lt;files/&gt; section of the assembly descriptor.
  *
  *
  */
-@Component( role = AssemblyArchiverPhase.class, hint = "file-items" )
-public class FileItemAssemblyPhase
-    extends AbstractLogEnabled
-    implements AssemblyArchiverPhase, PhaseOrder
+@Singleton
+@Named( "file-items" )
+public class FileItemAssemblyPhase implements AssemblyArchiverPhase, PhaseOrder
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( FileItemAssemblyPhase.class );
 
     /**
      * {@inheritDoc}
@@ -167,7 +170,7 @@ public class FileItemAssemblyPhase
                     restoUse = createResource( source, fileSetTransformers );
                 }
 
-                int mode = TypeConversionUtils.modeToInt( fileItem.getFileMode(), getLogger() );
+                int mode = TypeConversionUtils.modeToInt( fileItem.getFileMode(), LOGGER );
                 archiver.addResource( restoUse, target, mode );
             }
             catch ( final ArchiverException | IOException e )
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileSetAssemblyPhase.java b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileSetAssemblyPhase.java
index 98ce40db..3035b3bc 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileSetAssemblyPhase.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileSetAssemblyPhase.java
@@ -26,10 +26,10 @@ import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
 import org.apache.maven.plugins.assembly.model.Assembly;
 import org.apache.maven.plugins.assembly.model.FileSet;
 import org.codehaus.plexus.archiver.Archiver;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
 
-import javax.annotation.Nonnull;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import java.util.List;
 
 /**
@@ -37,17 +37,17 @@ import java.util.List;
  *
  *
  */
-@Component( role = AssemblyArchiverPhase.class, hint = "file-sets" )
+@Singleton
+@Named( "file-sets" )
 public class FileSetAssemblyPhase
-    extends AbstractLogEnabled
-    implements AssemblyArchiverPhase, PhaseOrder
+        implements AssemblyArchiverPhase, PhaseOrder
 {
 
     /**
      * {@inheritDoc}
      */
     @Override
-    public void execute( @Nonnull final Assembly assembly, final Archiver archiver,
+    public void execute( final Assembly assembly, final Archiver archiver,
                          final AssemblerConfigurationSource configSource )
         throws ArchiveCreationException, AssemblyFormattingException
     {
@@ -56,8 +56,6 @@ public class FileSetAssemblyPhase
         if ( ( fileSets != null ) && !fileSets.isEmpty() )
         {
             final AddFileSetsTask task = new AddFileSetsTask( fileSets );
-
-            task.setLogger( getLogger() );
             task.execute( archiver, configSource );
         }
     }
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhase.java b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhase.java
index e35c8e85..43112870 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhase.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhase.java
@@ -46,14 +46,14 @@ import org.apache.maven.plugins.assembly.utils.TypeConversionUtils;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuilder;
 import org.codehaus.plexus.archiver.Archiver;
-import org.codehaus.plexus.archiver.manager.ArchiverManager;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.logging.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
-import javax.annotation.Nonnull;
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -64,6 +64,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import static java.util.Objects.requireNonNull;
 import static org.apache.maven.plugins.assembly.functions.MavenProjects.addTo;
 import static org.apache.maven.plugins.assembly.functions.MavenProjects.log;
 
@@ -72,11 +73,11 @@ import static org.apache.maven.plugins.assembly.functions.MavenProjects.log;
  *
  *
  */
-@Component( role = AssemblyArchiverPhase.class, hint = "module-sets" )
-public class ModuleSetAssemblyPhase
-    extends AbstractLogEnabled
-    implements AssemblyArchiverPhase, PhaseOrder
+@Singleton
+@Named( "module-sets" )
+public class ModuleSetAssemblyPhase implements AssemblyArchiverPhase, PhaseOrder
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( ModuleSetAssemblyPhase.class );
 
     // TODO: Remove if using something like commons-lang instead.
 
@@ -85,33 +86,19 @@ public class ModuleSetAssemblyPhase
      */
     private static final String LINE_SEPARATOR = System.getProperty( "line.separator" );
 
-    @Requirement
-    private ProjectBuilder projectBuilder;
-
-    @Requirement
-    private ArchiverManager archiverManager;
+    private final ProjectBuilder projectBuilder;
 
-    @Requirement
-    private DependencyResolver dependencyResolver;
-
-    /**
-     * Create an instance.
-     */
-    public ModuleSetAssemblyPhase()
-    {
-        // needed for plexus
-    }
+    private final DependencyResolver dependencyResolver;
 
     /**
-     * @param projectBuilder The project builder.
-     * @param logger         The logger.
+     * Injected ctor.
      */
-    public ModuleSetAssemblyPhase( final ProjectBuilder projectBuilder, DependencyResolver dependencyResolver,
-                                   final Logger logger )
+    @Inject
+    public ModuleSetAssemblyPhase( final ProjectBuilder projectBuilder,
+                                   final DependencyResolver dependencyResolver )
     {
-        this.projectBuilder = projectBuilder;
-        this.dependencyResolver = dependencyResolver;
-        enableLogging( logger );
+        this.projectBuilder = requireNonNull( projectBuilder );
+        this.dependencyResolver = requireNonNull( dependencyResolver );
     }
 
     public static List<DependencySet> getDependencySets( final ModuleBinaries binaries )
@@ -137,7 +124,6 @@ public class ModuleSetAssemblyPhase
         return depSets;
     }
 
-    @Nonnull
     public static Set<MavenProject> getModuleProjects( final ModuleSet moduleSet,
                                                        final AssemblerConfigurationSource configSource,
                                                        final Logger logger )
@@ -192,7 +178,7 @@ public class ModuleSetAssemblyPhase
             {
                 validate( resolvedModule, configSource );
 
-                final Set<MavenProject> moduleProjects = getModuleProjects( resolvedModule, configSource, getLogger() );
+                final Set<MavenProject> moduleProjects = getModuleProjects( resolvedModule, configSource, LOGGER );
 
                 final ModuleSources sources = resolvedModule.getSources();
                 addModuleSourceFileSets( sources, moduleProjects, archiver, configSource );
@@ -207,12 +193,12 @@ public class ModuleSetAssemblyPhase
     {
         if ( ( moduleSet.getSources() == null ) && ( moduleSet.getBinaries() == null ) )
         {
-            getLogger().warn( "Encountered ModuleSet with no sources or binaries specified. Skipping." );
+            LOGGER.warn( "Encountered ModuleSet with no sources or binaries specified. Skipping." );
         }
 
         if ( moduleSet.isUseAllReactorProjects() && !moduleSet.isIncludeSubModules() )
         {
-            getLogger().warn( "includeSubModules == false is incompatible with useAllReactorProjects. Ignoring."
+            LOGGER.warn( "includeSubModules == false is incompatible with useAllReactorProjects. Ignoring."
                                   + "\n\nTo refactor, remove the <includeSubModules/> flag, and use the <includes/> "
                                   + "and <excludes/> sections to fine-tune the modules included." );
         }
@@ -221,7 +207,7 @@ public class ModuleSetAssemblyPhase
         if ( projects != null && projects.size() > 1 && projects.indexOf( configSource.getProject() ) == 0
             && moduleSet.getBinaries() != null )
         {
-            getLogger().warn( "[DEPRECATION] moduleSet/binaries section detected in root-project assembly."
+            LOGGER.warn( "[DEPRECATION] moduleSet/binaries section detected in root-project assembly."
                                   + "\n\nMODULE BINARIES MAY NOT BE AVAILABLE FOR THIS ASSEMBLY!"
                                   + "\n\n To refactor, move this assembly into a child project and use the flag "
                                   + "<useAllReactorProjects>true</useAllReactorProjects> in each moduleSet." );
@@ -232,12 +218,12 @@ public class ModuleSetAssemblyPhase
             final ModuleSources sources = moduleSet.getSources();
             if ( isDeprecatedModuleSourcesConfigPresent( sources ) )
             {
-                getLogger().warn( "[DEPRECATION] Use of <moduleSources/> as a file-set is deprecated. "
+                LOGGER.warn( "[DEPRECATION] Use of <moduleSources/> as a file-set is deprecated. "
                                       + "Please use the <fileSets/> sub-element of <moduleSources/> instead." );
             }
             else if ( !sources.isUseDefaultExcludes() )
             {
-                getLogger().warn( "[DEPRECATION] Use of directoryMode, fileMode, or useDefaultExcludes "
+                LOGGER.warn( "[DEPRECATION] Use of directoryMode, fileMode, or useDefaultExcludes "
                                       + "elements directly within <moduleSources/> are all deprecated. "
                                       + "Please use the <fileSets/> sub-element of <moduleSources/> instead." );
             }
@@ -257,7 +243,7 @@ public class ModuleSetAssemblyPhase
 
         final Set<MavenProject> moduleProjects = new LinkedHashSet<>();
 
-        MavenProjects.select( projects, "pom", log( getLogger() ), addTo( moduleProjects ) );
+        MavenProjects.select( projects, "pom", log( LOGGER ), addTo( moduleProjects ) );
 
         final String classifier = binaries.getAttachmentClassifier();
 
@@ -269,13 +255,13 @@ public class ModuleSetAssemblyPhase
 
             if ( classifier == null )
             {
-                getLogger().debug( "Processing binary artifact for module project: " + project.getId() );
+                LOGGER.debug( "Processing binary artifact for module project: " + project.getId() );
 
                 artifact = project.getArtifact();
             }
             else
             {
-                getLogger().debug(
+                LOGGER.debug(
                     "Processing binary attachment: " + classifier + " for module project: " + project.getId() );
 
                 artifact = MavenProjects.findArtifactByClassifier( project, classifier );
@@ -320,19 +306,18 @@ public class ModuleSetAssemblyPhase
                     sb.append( mavenProject.getId() );
                     sb.append( LINE_SEPARATOR );
                 }
-                getLogger().warn( sb.toString() );
+                LOGGER.warn( sb.toString() );
             }
 
             for ( final MavenProject moduleProject : moduleProjects )
             {
-                getLogger().debug( "Processing binary dependencies for module project: " + moduleProject.getId() );
+                LOGGER.debug( "Processing binary dependencies for module project: " + moduleProject.getId() );
 
                 for ( Map.Entry<DependencySet, Set<Artifact>> dependencySetSetEntry : dependencySetSetMap.entrySet() )
                 {
                     final AddDependencySetsTask task =
                         new AddDependencySetsTask( Collections.singletonList( dependencySetSetEntry.getKey() ),
-                                                   dependencySetSetEntry.getValue(), moduleProject, projectBuilder,
-                                                   getLogger() );
+                                                   dependencySetSetEntry.getValue(), moduleProject, projectBuilder );
 
                     task.setModuleProject( moduleProject );
                     task.setModuleArtifact( chosenModuleArtifacts.get( moduleProject ) );
@@ -353,10 +338,10 @@ public class ModuleSetAssemblyPhase
         if ( moduleProjects != null && !moduleProjects.isEmpty() )
         {
             String version = moduleProjects.iterator().next().getVersion();
-            getLogger().debug( "First version:" + version );
+            LOGGER.debug( "First version:" + version );
             for ( MavenProject mavenProject : moduleProjects )
             {
-                getLogger().debug( " -> checking " + mavenProject.getId() );
+                LOGGER.debug( " -> checking " + mavenProject.getId() );
                 if ( !version.equals( mavenProject.getVersion() ) )
                 {
                     result.add( mavenProject );
@@ -377,7 +362,7 @@ public class ModuleSetAssemblyPhase
                     + "Please ensure the package phase is run before the assembly is generated." );
         }
 
-        final AddArtifactTask task = new AddArtifactTask( artifact, getLogger(), null );
+        final AddArtifactTask task = new AddArtifactTask( artifact, null );
 
         task.setFileNameMapping( binaries.getOutputFileNameMapping() );
         task.setOutputDirectory( binaries.getOutputDirectory() );
@@ -385,13 +370,13 @@ public class ModuleSetAssemblyPhase
         task.setModuleProject( project );
         task.setModuleArtifact( artifact );
 
-        final int dirMode = TypeConversionUtils.modeToInt( binaries.getDirectoryMode(), getLogger() );
+        final int dirMode = TypeConversionUtils.modeToInt( binaries.getDirectoryMode(), LOGGER );
         if ( dirMode != -1 )
         {
             task.setDirectoryMode( dirMode );
         }
 
-        final int fileMode = TypeConversionUtils.modeToInt( binaries.getFileMode(), getLogger() );
+        final int fileMode = TypeConversionUtils.modeToInt( binaries.getFileMode(), LOGGER );
         if ( fileMode != -1 )
         {
             task.setFileMode( fileMode );
@@ -444,7 +429,7 @@ public class ModuleSetAssemblyPhase
 
         for ( final MavenProject moduleProject : moduleProjects )
         {
-            getLogger().info( "Processing sources for module project: " + moduleProject.getId() );
+            LOGGER.info( "Processing sources for module project: " + moduleProject.getId() );
 
             final List<FileSet> moduleFileSets = new ArrayList<>();
 
@@ -457,7 +442,6 @@ public class ModuleSetAssemblyPhase
 
             task.setProject( moduleProject );
             task.setModuleProject( moduleProject );
-            task.setLogger( getLogger() );
 
             task.execute( archiver, configSource );
         }
@@ -466,7 +450,7 @@ public class ModuleSetAssemblyPhase
     /**
      * Determine whether the deprecated file-set configuration directly within the ModuleSources object is present.
      */
-    boolean isDeprecatedModuleSourcesConfigPresent( @Nonnull final ModuleSources sources )
+    boolean isDeprecatedModuleSourcesConfigPresent( final ModuleSources sources )
     {
         boolean result = false;
 
@@ -486,10 +470,9 @@ public class ModuleSetAssemblyPhase
         return result;
     }
 
-    @Nonnull
-    FileSet createFileSet( @Nonnull final FileSet fileSet, @Nonnull final ModuleSources sources,
-                           @Nonnull final MavenProject moduleProject,
-                           @Nonnull final AssemblerConfigurationSource configSource )
+    FileSet createFileSet( final FileSet fileSet, final ModuleSources sources,
+                           final MavenProject moduleProject,
+                           final AssemblerConfigurationSource configSource )
         throws AssemblyFormattingException
     {
         final FileSet fs = new FileSet();
@@ -574,8 +557,8 @@ public class ModuleSetAssemblyPhase
 
         fs.setOutputDirectory( destPath );
 
-        getLogger().debug( "module source directory is: " + sourcePath );
-        getLogger().debug( "module dest directory is: " + destPath + " (assembly basedir may be prepended)" );
+        LOGGER.debug( "module source directory is: " + sourcePath );
+        LOGGER.debug( "module dest directory is: " + destPath + " (assembly basedir may be prepended)" );
 
         return fs;
     }
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhase.java b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhase.java
index d328a937..639a3eb4 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhase.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhase.java
@@ -19,6 +19,10 @@ package org.apache.maven.plugins.assembly.archive.phase;
  * under the License.
  */
 
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.plugins.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugins.assembly.InvalidAssemblerConfigurationException;
 import org.apache.maven.plugins.assembly.archive.ArchiveCreationException;
@@ -35,34 +39,30 @@ import org.apache.maven.plugins.assembly.repository.model.RepositoryInfo;
 import org.apache.maven.plugins.assembly.utils.AssemblyFormatUtils;
 import org.apache.maven.plugins.assembly.utils.TypeConversionUtils;
 import org.codehaus.plexus.archiver.Archiver;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.util.List;
 
+import static java.util.Objects.requireNonNull;
+
 /**
  *
  */
-@Component( role = AssemblyArchiverPhase.class, hint = "repositories" )
-public class RepositoryAssemblyPhase
-    extends AbstractLogEnabled
-    implements AssemblyArchiverPhase, PhaseOrder
+@Singleton
+@Named( "repositories" )
+public class RepositoryAssemblyPhase implements AssemblyArchiverPhase, PhaseOrder
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( RepositoryAssemblyPhase.class );
 
-    @Requirement
-    private RepositoryAssembler repositoryAssembler;
+    private final RepositoryAssembler repositoryAssembler;
 
-    public RepositoryAssemblyPhase()
-    {
-        // used for plexus.
-    }
 
-    // introduced for testing.
+    @Inject
     public RepositoryAssemblyPhase( final RepositoryAssembler repositoryAssembler )
     {
-        this.repositoryAssembler = repositoryAssembler;
+        this.repositoryAssembler = requireNonNull( repositoryAssembler );
     }
 
     /**
@@ -94,10 +94,10 @@ public class RepositoryAssemblyPhase
 
             try
             {
-                getLogger().debug( "Assembling repository to: " + repositoryDirectory );
+                LOGGER.debug( "Assembling repository to: " + repositoryDirectory );
                 repositoryAssembler.buildRemoteRepository( repositoryDirectory, wrap( repository ),
                                                            wrap( configSource ) );
-                getLogger().debug( "Finished assembling repository to: " + repositoryDirectory );
+                LOGGER.debug( "Finished assembling repository to: " + repositoryDirectory );
             }
             catch ( final RepositoryAssemblyException e )
             {
@@ -106,13 +106,13 @@ public class RepositoryAssemblyPhase
 
             final AddDirectoryTask task = new AddDirectoryTask( repositoryDirectory );
 
-            final int dirMode = TypeConversionUtils.modeToInt( repository.getDirectoryMode(), getLogger() );
+            final int dirMode = TypeConversionUtils.modeToInt( repository.getDirectoryMode(), LOGGER );
             if ( dirMode != -1 )
             {
                 task.setDirectoryMode( dirMode );
             }
 
-            final int fileMode = TypeConversionUtils.modeToInt( repository.getFileMode(), getLogger() );
+            final int fileMode = TypeConversionUtils.modeToInt( repository.getFileMode(), LOGGER );
             if ( fileMode != -1 )
             {
                 task.setFileMode( fileMode );
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddArtifactTask.java b/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddArtifactTask.java
index 6a281e7a..136e1398 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddArtifactTask.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddArtifactTask.java
@@ -31,9 +31,10 @@ import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.archiver.util.DefaultArchivedFileSet;
 import org.codehaus.plexus.archiver.util.DefaultFileSet;
 import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
-import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
@@ -45,13 +46,12 @@ import java.util.List;
  */
 public class AddArtifactTask
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( AddArtifactTask.class );
 
     public static final String[] DEFAULT_INCLUDES_ARRAY = { "**/*" };
 
     private final Artifact artifact;
 
-    private final Logger logger;
-
     private final InputStreamTransformer transformer;
 
     private final Charset encoding;
@@ -78,18 +78,17 @@ public class AddArtifactTask
 
     private String outputFileNameMapping;
 
-    public AddArtifactTask( final Artifact artifact, final Logger logger, InputStreamTransformer transformer,
+    public AddArtifactTask( final Artifact artifact, InputStreamTransformer transformer,
                             Charset encoding )
     {
         this.artifact = artifact;
-        this.logger = logger;
         this.transformer = transformer;
         this.encoding = encoding;
     }
 
-    public AddArtifactTask( final Artifact artifact, final Logger logger, Charset encoding )
+    public AddArtifactTask( final Artifact artifact, Charset encoding )
     {
-        this( artifact, logger, null, encoding );
+        this( artifact, null, encoding );
     }
 
     public void execute( final Archiver archiver, final AssemblerConfigurationSource configSource )
@@ -164,7 +163,7 @@ public class AddArtifactTask
         {
             final File artifactFile = artifact.getFile();
 
-            logger.debug(
+            LOGGER.debug(
                 "Adding artifact: " + artifact.getId() + " with file: " + artifactFile + " to assembly location: "
                     + outputLocation + "." );
 
@@ -207,12 +206,12 @@ public class AddArtifactTask
             final File artifactFile = artifact.getFile();
             if ( artifactFile == null )
             {
-                logger.warn(
+                LOGGER.warn(
                     "Skipping artifact: " + artifact.getId() + "; it does not have an associated file or directory." );
             }
             else if ( artifactFile.isDirectory() )
             {
-                logger.debug( "Adding artifact directory contents for: " + artifact + " to: " + outputLocation );
+                LOGGER.debug( "Adding artifact directory contents for: " + artifact + " to: " + outputLocation );
 
                 DefaultFileSet fs = DefaultFileSet.fileSet( artifactFile );
                 fs.setIncludes( includesArray );
@@ -224,9 +223,9 @@ public class AddArtifactTask
             }
             else
             {
-                logger.debug( "Unpacking artifact contents for: " + artifact + " to: " + outputLocation );
-                logger.debug( "includes:\n" + StringUtils.join( includesArray, "\n" ) + "\n" );
-                logger.debug(
+                LOGGER.debug( "Unpacking artifact contents for: " + artifact + " to: " + outputLocation );
+                LOGGER.debug( "includes:\n" + StringUtils.join( includesArray, "\n" ) + "\n" );
+                LOGGER.debug(
                     "excludes:\n" + ( excludesArray == null ? "none" : StringUtils.join( excludesArray, "\n" ) )
                         + "\n" );
                 DefaultArchivedFileSet afs = DefaultArchivedFileSet.archivedFileSet( artifactFile );
@@ -251,7 +250,8 @@ public class AddArtifactTask
         final File tempRoot = configSource.getTemporaryRootDirectory();
         final File tempArtifactFile = new File( tempRoot, artifact.getFile().getName() );
 
-        logger.warn( "Artifact: " + artifact.getId() + " references the same file as the assembly destination file. "
+        LOGGER.warn(
+                "Artifact: " + artifact.getId() + " references the same file as the assembly destination file. "
                          + "Moving it to a temporary location for inclusion." );
         try
         {
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddDependencySetsTask.java b/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddDependencySetsTask.java
index f99aa27d..a3738e1b 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddDependencySetsTask.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddDependencySetsTask.java
@@ -53,13 +53,15 @@ import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
 import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
-import org.codehaus.plexus.logging.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  *
  */
 public class AddDependencySetsTask
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( AddDependencySetsTask.class );
 
     private static final List<String> NON_ARCHIVE_DEPENDENCY_TYPES;
 
@@ -74,8 +76,6 @@ public class AddDependencySetsTask
 
     private final List<DependencySet> dependencySets;
 
-    private final Logger logger;
-
     private final MavenProject project;
 
     private final ProjectBuilder projectBuilder1;
@@ -92,13 +92,12 @@ public class AddDependencySetsTask
 
 
     public AddDependencySetsTask( final List<DependencySet> dependencySets, final Set<Artifact> resolvedArtifacts,
-                                  final MavenProject project, ProjectBuilder projectBuilder, final Logger logger )
+                                  final MavenProject project, ProjectBuilder projectBuilder )
     {
         this.dependencySets = dependencySets;
         this.resolvedArtifacts = resolvedArtifacts;
         this.project = project;
         this.projectBuilder1 = projectBuilder;
-        this.logger = logger;
     }
 
     public void execute( final Archiver archiver, final AssemblerConfigurationSource configSource )
@@ -106,14 +105,15 @@ public class AddDependencySetsTask
     {
         if ( ( dependencySets == null ) || dependencySets.isEmpty() )
         {
-            logger.debug( "No dependency sets specified." );
+            LOGGER.debug( "No dependency sets specified." );
             return;
         }
 
         final List<Dependency> deps = project.getDependencies();
         if ( ( deps == null ) || deps.isEmpty() )
         {
-            logger.debug( "Project " + project.getId() + " has no dependencies. Skipping dependency set addition." );
+            LOGGER.debug(
+                    "Project " + project.getId() + " has no dependencies. Skipping dependency set addition." );
         }
 
         for ( final DependencySet dependencySet : dependencySets )
@@ -126,11 +126,11 @@ public class AddDependencySetsTask
                            final AssemblerConfigurationSource configSource )
         throws AssemblyFormattingException, ArchiveCreationException, InvalidAssemblerConfigurationException
     {
-        logger.debug( "Processing DependencySet (output=" + dependencySet.getOutputDirectory() + ")" );
+        LOGGER.debug( "Processing DependencySet (output=" + dependencySet.getOutputDirectory() + ")" );
 
         if ( !dependencySet.isUseTransitiveDependencies() && dependencySet.isUseTransitiveFiltering() )
         {
-            logger.warn( "DependencySet has nonsensical configuration: useTransitiveDependencies == false "
+            LOGGER.warn( "DependencySet has nonsensical configuration: useTransitiveDependencies == false "
                              + "AND useTransitiveFiltering == true. Transitive filtering flag will be ignored." );
         }
 
@@ -141,7 +141,7 @@ public class AddDependencySetsTask
             checkMultiArtifactOutputConfig( dependencySet );
         }
 
-        logger.debug( "Adding " + dependencyArtifacts.size() + " dependency artifacts." );
+        LOGGER.debug( "Adding " + dependencyArtifacts.size() + " dependency artifacts." );
 
         UnpackOptions unpackOptions = dependencySet.getUnpackOptions();
         InputStreamTransformer fileSetTransformers = isUnpackWithOptions( dependencySet )
@@ -162,7 +162,7 @@ public class AddDependencySetsTask
             }
             catch ( final ProjectBuildingException e )
             {
-                logger.debug(
+                LOGGER.debug(
                     "Error retrieving POM of module-dependency: " + depArtifact.getId() + "; Reason: " + e.getMessage()
                         + "\n\nBuilding stub project instance." );
 
@@ -217,7 +217,7 @@ public class AddDependencySetsTask
 
         if ( ( dir == null || !dir.contains( "${" ) ) && ( mapping == null || !mapping.contains( "${" ) ) )
         {
-            logger.warn( "NOTE: Your assembly specifies a dependencySet that matches multiple artifacts, but "
+            LOGGER.warn( "NOTE: Your assembly specifies a dependencySet that matches multiple artifacts, but "
                              + "specifies a concrete output format. THIS MAY RESULT IN ONE OR MORE ARTIFACTS BEING "
                              + "OBSCURED!\n\n" + "Output directory: '" + dir + "'\nOutput filename mapping: '" + mapping
                              + "'" );
@@ -230,11 +230,11 @@ public class AddDependencySetsTask
                                     InputStreamTransformer fileSetTransformers )
         throws AssemblyFormattingException, ArchiveCreationException
     {
-        logger.debug( "Adding dependency artifact " + depArtifact.getId() + "." );
+        LOGGER.debug( "Adding dependency artifact " + depArtifact.getId() + "." );
 
         String encoding = isUnpackWithOptions( dependencySet ) ? dependencySet.getUnpackOptions().getEncoding() : null;
         Charset charset = encoding != null ? Charset.forName( encoding ) : null;
-        final AddArtifactTask task = new AddArtifactTask( depArtifact, logger, fileSetTransformers, charset );
+        final AddArtifactTask task = new AddArtifactTask( depArtifact, fileSetTransformers, charset );
 
         task.setProject( depProject );
         task.setModuleProject( moduleProject );
@@ -242,13 +242,13 @@ public class AddDependencySetsTask
         task.setOutputDirectory( dependencySet.getOutputDirectory(), defaultOutputDirectory );
         task.setFileNameMapping( dependencySet.getOutputFileNameMapping(), defaultOutputFileNameMapping );
 
-        final int dirMode = TypeConversionUtils.modeToInt( dependencySet.getDirectoryMode(), logger );
+        final int dirMode = TypeConversionUtils.modeToInt( dependencySet.getDirectoryMode(), LOGGER );
         if ( dirMode != -1 )
         {
             task.setDirectoryMode( dirMode );
         }
 
-        final int fileMode = TypeConversionUtils.modeToInt( dependencySet.getFileMode(), logger );
+        final int fileMode = TypeConversionUtils.modeToInt( dependencySet.getFileMode(), LOGGER );
         if ( fileMode != -1 )
         {
             task.setFileMode( fileMode );
@@ -302,7 +302,7 @@ public class AddDependencySetsTask
             }
             else
             {
-                logger.warn( "Cannot include project artifact: " + projectArtifact
+                LOGGER.warn( "Cannot include project artifact: " + projectArtifact
                                  + "; it doesn't have an associated file or directory." );
             }
         }
@@ -320,7 +320,7 @@ public class AddDependencySetsTask
                     }
                     else
                     {
-                        logger.warn(
+                        LOGGER.warn(
                             "Cannot include attached artifact: " + project.getId() + " for project: " + project.getId()
                                 + "; it doesn't have an associated file or directory." );
                     }
@@ -330,11 +330,11 @@ public class AddDependencySetsTask
 
         if ( dependencySet.isUseTransitiveFiltering() )
         {
-            logger.debug( "Filtering dependency artifacts USING transitive dependency path information." );
+            LOGGER.debug( "Filtering dependency artifacts USING transitive dependency path information." );
         }
         else
         {
-            logger.debug( "Filtering dependency artifacts WITHOUT transitive dependency path information." );
+            LOGGER.debug( "Filtering dependency artifacts WITHOUT transitive dependency path information." );
         }
 
         final ScopeFilter scopeFilter = FilterUtils.newScopeFilter( dependencySet.getScope() );
@@ -343,7 +343,7 @@ public class AddDependencySetsTask
         
         FilterUtils.filterArtifacts( dependencyArtifacts, dependencySet.getIncludes(), dependencySet.getExcludes(),
                                      dependencySet.isUseStrictFiltering(), dependencySet.isUseTransitiveFiltering(),
-                                     logger, filter );
+                                     LOGGER, filter );
 
         return dependencyArtifacts;
     }
@@ -384,7 +384,7 @@ public class AddDependencySetsTask
 
         try
         {
-            final int mode = TypeConversionUtils.modeToInt( dependencySet.getFileMode(), logger );
+            final int mode = TypeConversionUtils.modeToInt( dependencySet.getFileMode(), LOGGER );
             if ( mode > -1 )
             {
                 archiver.addFile( source, target, mode );
@@ -405,11 +405,6 @@ public class AddDependencySetsTask
         return dependencySets;
     }
 
-    public Logger getLogger()
-    {
-        return logger;
-    }
-
     public void setDefaultOutputDirectory( final String defaultOutputDirectory )
     {
         this.defaultOutputDirectory = defaultOutputDirectory;
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTask.java b/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTask.java
index 1f6a1d25..9c5db1c3 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTask.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTask.java
@@ -36,19 +36,18 @@ import org.apache.maven.plugins.assembly.utils.TypeConversionUtils;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  *
  */
 public class AddFileSetsTask
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( AddFileSetsTask.class );
 
     private final List<FileSet> fileSets;
 
-    private Logger logger;
-
     private MavenProject project;
 
     private MavenProject moduleProject;
@@ -97,9 +96,6 @@ public class AddFileSetsTask
                      final File archiveBaseDir )
         throws AssemblyFormattingException, ArchiveCreationException
     {
-        // throw this check in just in case someone extends this class...
-        checkLogger();
-
         if ( project == null )
         {
             project = configSource.getProject();
@@ -113,7 +109,7 @@ public class AddFileSetsTask
         {
             destDirectory = fileSet.getDirectory();
 
-            AssemblyFormatUtils.warnForPlatformSpecifics( logger, destDirectory );
+            AssemblyFormatUtils.warnForPlatformSpecifics( LOGGER, destDirectory );
         }
 
 
@@ -122,16 +118,16 @@ public class AddFileSetsTask
                                                     AssemblyFormatUtils.moduleProjectInterpolator( moduleProject ),
                                                     AssemblyFormatUtils.artifactProjectInterpolator( project ) );
 
-        if ( logger.isDebugEnabled() )
+        if ( LOGGER.isDebugEnabled() )
         {
-            logger.debug( "FileSet[" + destDirectory + "]" + " dir perms: " + Integer.toString(
+            LOGGER.debug( "FileSet[" + destDirectory + "]" + " dir perms: " + Integer.toString(
                 archiver.getOverrideDirectoryMode(), 8 ) + " file perms: " + Integer.toString(
                 archiver.getOverrideFileMode(), 8 ) + ( fileSet.getLineEnding() == null
                 ? ""
                 : " lineEndings: " + fileSet.getLineEnding() ) );
         }
 
-        logger.debug( "The archive base directory is '" + archiveBaseDir + "'" );
+        LOGGER.debug( "The archive base directory is '" + archiveBaseDir + "'" );
 
         File fileSetDir = getFileSetDirectory( fileSet, basedir, archiveBaseDir );
 
@@ -144,7 +140,7 @@ public class AddFileSetsTask
                                                         fileSet.getLineEnding() );
             if ( fileSetTransformers == null )
             {
-                logger.debug( "NOT reformatting any files in " + fileSetDir );
+                LOGGER.debug( "NOT reformatting any files in " + fileSetDir );
             }
 
             if ( fileSetDir.getPath().equals( File.separator ) )
@@ -155,13 +151,13 @@ public class AddFileSetsTask
             }
             final AddDirectoryTask task = new AddDirectoryTask( fileSetDir, fileSetTransformers );
 
-            final int dirMode = TypeConversionUtils.modeToInt( fileSet.getDirectoryMode(), logger );
+            final int dirMode = TypeConversionUtils.modeToInt( fileSet.getDirectoryMode(), LOGGER );
             if ( dirMode != -1 )
             {
                 task.setDirectoryMode( dirMode );
             }
 
-            final int fileMode = TypeConversionUtils.modeToInt( fileSet.getFileMode(), logger );
+            final int fileMode = TypeConversionUtils.modeToInt( fileSet.getFileMode(), LOGGER );
             if ( fileMode != -1 )
             {
                 task.setFileMode( fileMode );
@@ -210,19 +206,6 @@ public class AddFileSetsTask
         return fileSetDir;
     }
 
-    private void checkLogger()
-    {
-        if ( logger == null )
-        {
-            logger = new ConsoleLogger( Logger.LEVEL_INFO, "AddFileSetsTask-internal" );
-        }
-    }
-
-    public void setLogger( final Logger logger )
-    {
-        this.logger = logger;
-    }
-
     public void setProject( final MavenProject project )
     {
         this.project = project;
diff --git a/src/main/java/org/apache/maven/plugins/assembly/artifact/DefaultDependencyResolver.java b/src/main/java/org/apache/maven/plugins/assembly/artifact/DefaultDependencyResolver.java
index b4ef76fb..10471a79 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/artifact/DefaultDependencyResolver.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/artifact/DefaultDependencyResolver.java
@@ -19,6 +19,10 @@ package org.apache.maven.plugins.assembly.artifact;
  * under the License.
  */
 
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -34,23 +38,30 @@ import org.apache.maven.plugins.assembly.model.ModuleBinaries;
 import org.apache.maven.plugins.assembly.model.ModuleSet;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.repository.RepositorySystem;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static java.util.Objects.requireNonNull;
 
 /**
  * @author jdcasey
  *
  */
-@Component( role = DependencyResolver.class )
-public class DefaultDependencyResolver
-    extends AbstractLogEnabled
-    implements DependencyResolver
+@Singleton
+@Named
+public class DefaultDependencyResolver implements DependencyResolver
 {
-    @Requirement
-    private RepositorySystem resolver;
-    
+    private static final Logger LOGGER = LoggerFactory.getLogger( DefaultDependencyResolver.class );
+
+    private final RepositorySystem resolver;
+
+    @Inject
+    public DefaultDependencyResolver( RepositorySystem resolver )
+    {
+        this.resolver = requireNonNull( resolver );
+    }
+
     @Override
     public Map<DependencySet, Set<Artifact>> resolveDependencySets( final Assembly assembly, ModuleSet moduleSet,
                                                                     final AssemblerConfigurationSource configSource,
@@ -107,7 +118,7 @@ public class DefaultDependencyResolver
             Set<MavenProject> projects;
             try
             {
-                projects = ModuleSetAssemblyPhase.getModuleProjects( set, configSource, getLogger() );
+                projects = ModuleSetAssemblyPhase.getModuleProjects( set, configSource, LOGGER );
             }
             catch ( final ArchiveCreationException e )
             {
@@ -157,7 +168,7 @@ public class DefaultDependencyResolver
             }
 
             requirements.addArtifacts( dependencyArtifacts );
-            getLogger().debug( "Dependencies for project: " + project.getId() + " are:\n" + StringUtils.join(
+            LOGGER.debug( "Dependencies for project: " + project.getId() + " are:\n" + StringUtils.join(
                 dependencyArtifacts.iterator(), "\n" ) );
         }
     }
diff --git a/src/main/java/org/apache/maven/plugins/assembly/filter/AbstractLineAggregatingHandler.java b/src/main/java/org/apache/maven/plugins/assembly/filter/AbstractLineAggregatingHandler.java
index 12f10120..57b6b5c7 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/filter/AbstractLineAggregatingHandler.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/filter/AbstractLineAggregatingHandler.java
@@ -26,7 +26,6 @@ import org.codehaus.plexus.archiver.ResourceIterator;
 import org.codehaus.plexus.archiver.UnArchiver;
 import org.codehaus.plexus.components.io.fileselectors.FileInfo;
 
-import javax.annotation.Nonnull;
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileOutputStream;
@@ -119,7 +118,7 @@ abstract class AbstractLineAggregatingHandler
     }
 
     @Override
-    public boolean isSelected( @Nonnull final FileInfo fileInfo )
+    public boolean isSelected( final FileInfo fileInfo )
         throws IOException
     {
         if ( excludeOverride )
diff --git a/src/main/java/org/apache/maven/plugins/assembly/filter/ComponentsXmlArchiverFileFilter.java b/src/main/java/org/apache/maven/plugins/assembly/filter/ComponentsXmlArchiverFileFilter.java
index 813da5f3..be7ccb8c 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/filter/ComponentsXmlArchiverFileFilter.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/filter/ComponentsXmlArchiverFileFilter.java
@@ -25,14 +25,13 @@ import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.archiver.ResourceIterator;
 import org.codehaus.plexus.archiver.UnArchiver;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.components.io.fileselectors.FileInfo;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
 import org.codehaus.plexus.util.xml.Xpp3DomWriter;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
-import javax.annotation.Nonnull;
+import javax.inject.Named;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -51,7 +50,7 @@ import java.util.Map;
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  *
  */
-@Component( role = ContainerDescriptorHandler.class, hint = "plexus", instantiationStrategy = "per-lookup" )
+@Named( "plexus" )
 public class ComponentsXmlArchiverFileFilter
     implements ContainerDescriptorHandler
 {
@@ -164,7 +163,7 @@ public class ComponentsXmlArchiverFileFilter
     }
 
     @Override
-    public boolean isSelected( @Nonnull final FileInfo fileInfo )
+    public boolean isSelected( final FileInfo fileInfo )
         throws IOException
     {
         if ( fileInfo.isFile() )
diff --git a/src/main/java/org/apache/maven/plugins/assembly/filter/MetaInfServicesHandler.java b/src/main/java/org/apache/maven/plugins/assembly/filter/MetaInfServicesHandler.java
index 7f423e09..6bb45a85 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/filter/MetaInfServicesHandler.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/filter/MetaInfServicesHandler.java
@@ -19,15 +19,16 @@ package org.apache.maven.plugins.assembly.filter;
  * under the License.
  */
 
+import javax.inject.Named;
+
 import java.nio.file.Paths;
 
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.components.io.fileselectors.FileInfo;
 
 /**
  *
  */
-@Component( role = ContainerDescriptorHandler.class, hint = "metaInf-services", instantiationStrategy = "per-lookup" )
+@Named( "metaInf-services" )
 public class MetaInfServicesHandler
     extends AbstractLineAggregatingHandler
 {
diff --git a/src/main/java/org/apache/maven/plugins/assembly/filter/MetaInfSpringHandler.java b/src/main/java/org/apache/maven/plugins/assembly/filter/MetaInfSpringHandler.java
index b833b774..e004a30e 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/filter/MetaInfSpringHandler.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/filter/MetaInfSpringHandler.java
@@ -19,13 +19,14 @@ package org.apache.maven.plugins.assembly.filter;
  * under the License.
  */
 
-import org.codehaus.plexus.component.annotations.Component;
+import javax.inject.Named;
+
 import org.codehaus.plexus.components.io.fileselectors.FileInfo;
 
 /**
  *
  */
-@Component( role = ContainerDescriptorHandler.class, hint = "metaInf-spring", instantiationStrategy = "per-lookup" )
+@Named( "metaInf-spring" )
 public class MetaInfSpringHandler
     extends AbstractLineAggregatingHandler
 {
diff --git a/src/main/java/org/apache/maven/plugins/assembly/filter/SimpleAggregatingDescriptorHandler.java b/src/main/java/org/apache/maven/plugins/assembly/filter/SimpleAggregatingDescriptorHandler.java
index 2fa73730..65c98883 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/filter/SimpleAggregatingDescriptorHandler.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/filter/SimpleAggregatingDescriptorHandler.java
@@ -23,14 +23,11 @@ import org.apache.maven.plugins.assembly.utils.AssemblyFileUtils;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.archiver.UnArchiver;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.components.io.fileselectors.FileInfo;
-import org.codehaus.plexus.logging.LogEnabled;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.codehaus.plexus.util.IOUtil;
 
-import javax.annotation.Nonnull;
+import javax.inject.Named;
+
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
@@ -49,11 +46,9 @@ import java.util.List;
 /**
  *
  */
-@Component( role = ContainerDescriptorHandler.class, hint = "file-aggregator", instantiationStrategy = "per-lookup" )
-public class SimpleAggregatingDescriptorHandler
-    implements ContainerDescriptorHandler, LogEnabled
+@Named( "file-aggregator" )
+public class SimpleAggregatingDescriptorHandler implements ContainerDescriptorHandler
 {
-
     // component configuration.
 
     @SuppressWarnings( "FieldCanBeLocal" )
@@ -71,10 +66,6 @@ public class SimpleAggregatingDescriptorHandler
 
     private boolean overrideFilterAction;
 
-    // injected by the container.
-
-    private Logger logger;
-
     @Override
     public void finalizeArchiveCreation( final Archiver archiver )
     {
@@ -155,7 +146,7 @@ public class SimpleAggregatingDescriptorHandler
     }
 
     @Override
-    public boolean isSelected( @Nonnull final FileInfo fileInfo )
+    public boolean isSelected( final FileInfo fileInfo )
         throws IOException
     {
         checkConfig();
@@ -202,22 +193,6 @@ public class SimpleAggregatingDescriptorHandler
         }
     }
 
-    protected final Logger getLogger()
-    {
-        if ( logger == null )
-        {
-            logger = new ConsoleLogger( Logger.LEVEL_INFO, "" );
-        }
-
-        return logger;
-    }
-
-    @Override
-    public void enableLogging( final Logger logger )
-    {
-        this.logger = logger;
-    }
-
     @SuppressWarnings( "UnusedDeclaration" )
     public String getFilePattern()
     {
diff --git a/src/main/java/org/apache/maven/plugins/assembly/format/ReaderFormatter.java b/src/main/java/org/apache/maven/plugins/assembly/format/ReaderFormatter.java
index f47a6faf..8906d4de 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/format/ReaderFormatter.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/format/ReaderFormatter.java
@@ -29,8 +29,6 @@ import org.apache.maven.shared.filtering.MavenReaderFilterRequest;
 import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
 import org.codehaus.plexus.components.io.resources.PlexusIoResource;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -45,7 +43,7 @@ import java.util.Set;
  */
 public class ReaderFormatter
 {
-    private static Reader createReaderFilter( @Nonnull Reader source, String escapeString, List<String> delimiters,
+    private static Reader createReaderFilter( Reader source, String escapeString, List<String> delimiters,
                                               AssemblerConfigurationSource configSource, boolean isPropertiesFile,
                                               Properties additionalProperties )
         throws IOException
@@ -115,7 +113,6 @@ public class ReaderFormatter
 
     }
 
-    @Nullable
     public static InputStreamTransformer getFileSetTransformers( final AssemblerConfigurationSource configSource,
                                                                  final boolean isFiltered,
                                                                  final Set<String> nonFilteredFileExtensions,
@@ -131,9 +128,8 @@ public class ReaderFormatter
             return new InputStreamTransformer()
             {
                 @Override
-                @Nonnull
-                public InputStream transform( @Nonnull PlexusIoResource plexusIoResource,
-                                              @Nonnull InputStream inputStream )
+                public InputStream transform( PlexusIoResource plexusIoResource,
+                                              InputStream inputStream )
                     throws IOException
                 {
                     final String fileName = plexusIoResource.getName();
diff --git a/src/main/java/org/apache/maven/plugins/assembly/functions/MavenProjects.java b/src/main/java/org/apache/maven/plugins/assembly/functions/MavenProjects.java
index 0fafd2a1..77e298e2 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/functions/MavenProjects.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/functions/MavenProjects.java
@@ -22,9 +22,8 @@ package org.apache.maven.plugins.assembly.functions;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.logging.Logger;
+import org.slf4j.Logger;
 
-import javax.annotation.Nullable;
 import java.util.List;
 import java.util.Set;
 
@@ -71,7 +70,6 @@ public class MavenProjects
         }
     }
 
-    @Nullable
     public static Artifact findArtifactByClassifier( MavenProject mavenProject, String classifier )
     {
         final List<Artifact> attachments = mavenProject.getAttachedArtifacts();
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/archiver/SarUnArchiver.java b/src/main/java/org/apache/maven/plugins/assembly/internal/PlexusLoggingHelper.java
similarity index 62%
copy from src/main/java/org/apache/maven/plugins/assembly/archive/archiver/SarUnArchiver.java
copy to src/main/java/org/apache/maven/plugins/assembly/internal/PlexusLoggingHelper.java
index 343843cd..6708a9c7 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/archiver/SarUnArchiver.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/internal/PlexusLoggingHelper.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugins.assembly.archive.archiver;
+package org.apache.maven.plugins.assembly.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,16 +19,21 @@ package org.apache.maven.plugins.assembly.archive.archiver;
  * under the License.
  */
 
-import org.codehaus.plexus.archiver.zip.ZipUnArchiver;
+import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.logging.slf4j.Slf4jLogger;
 
 /**
- * @author jdcasey
- *
- *          //todo delete this class once the plexus maven plugin can merge a generated components.xml with an
- *          existing one.
+ * Support for plexus logging, as downstream component APIs still expect Plexus logger..
  */
-class SarUnArchiver
-    extends ZipUnArchiver
+public final class PlexusLoggingHelper
 {
+    private PlexusLoggingHelper()
+    {
+        // nop
+    }
 
+    public static Logger wrap( final org.slf4j.Logger logger )
+    {
+        return new Slf4jLogger( 0, logger ); // set it lowest level, let SLF4J filter
+    }
 }
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/archiver/SarUnArchiver.java b/src/main/java/org/apache/maven/plugins/assembly/internal/SarPlexusIoResourceCollection.java
similarity index 57%
copy from src/main/java/org/apache/maven/plugins/assembly/archive/archiver/SarUnArchiver.java
copy to src/main/java/org/apache/maven/plugins/assembly/internal/SarPlexusIoResourceCollection.java
index 343843cd..70b64331 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/archiver/SarUnArchiver.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/internal/SarPlexusIoResourceCollection.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugins.assembly.archive.archiver;
+package org.apache.maven.plugins.assembly.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,16 +19,23 @@ package org.apache.maven.plugins.assembly.archive.archiver;
  * under the License.
  */
 
-import org.codehaus.plexus.archiver.zip.ZipUnArchiver;
+import javax.inject.Named;
+import javax.inject.Provider;
+import javax.inject.Singleton;
+
+import org.codehaus.plexus.components.io.resources.PlexusIoResourceCollection;
+import org.codehaus.plexus.components.io.resources.PlexusIoZipFileResourceCollection;
 
 /**
- * @author jdcasey
- *
- *          //todo delete this class once the plexus maven plugin can merge a generated components.xml with an
- *          existing one.
+ * Provider for "sar" {@link PlexusIoResourceCollection}.
  */
-class SarUnArchiver
-    extends ZipUnArchiver
+@Singleton
+@Named( "sar" )
+public class SarPlexusIoResourceCollection implements Provider<PlexusIoResourceCollection>
 {
-
+    @Override
+    public PlexusIoResourceCollection get()
+    {
+        return new PlexusIoZipFileResourceCollection();
+    }
 }
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/archiver/SarUnArchiver.java b/src/main/java/org/apache/maven/plugins/assembly/internal/SarUnArchiverProvider.java
similarity index 67%
rename from src/main/java/org/apache/maven/plugins/assembly/archive/archiver/SarUnArchiver.java
rename to src/main/java/org/apache/maven/plugins/assembly/internal/SarUnArchiverProvider.java
index 343843cd..0859da20 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/archiver/SarUnArchiver.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/internal/SarUnArchiverProvider.java
@@ -1,4 +1,4 @@
-package org.apache.maven.plugins.assembly.archive.archiver;
+package org.apache.maven.plugins.assembly.internal;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,16 +19,23 @@ package org.apache.maven.plugins.assembly.archive.archiver;
  * under the License.
  */
 
+import javax.inject.Named;
+import javax.inject.Provider;
+import javax.inject.Singleton;
+
+import org.codehaus.plexus.archiver.UnArchiver;
 import org.codehaus.plexus.archiver.zip.ZipUnArchiver;
 
 /**
- * @author jdcasey
- *
- *          //todo delete this class once the plexus maven plugin can merge a generated components.xml with an
- *          existing one.
+ * Provider for "sar" {@link UnArchiver}.
  */
-class SarUnArchiver
-    extends ZipUnArchiver
+@Singleton
+@Named( "sar" )
+public class SarUnArchiverProvider implements Provider<UnArchiver>
 {
-
+    @Override
+    public UnArchiver get()
+    {
+        return new ZipUnArchiver();
+    }
 }
diff --git a/src/main/java/org/apache/maven/plugins/assembly/interpolation/AssemblyInterpolator.java b/src/main/java/org/apache/maven/plugins/assembly/interpolation/AssemblyInterpolator.java
index c7438567..ef32b851 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/interpolation/AssemblyInterpolator.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/interpolation/AssemblyInterpolator.java
@@ -29,9 +29,8 @@ import org.codehaus.plexus.interpolation.InterpolationPostProcessor;
 import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
 import org.codehaus.plexus.interpolation.fixed.InterpolationState;
 import org.codehaus.plexus.interpolation.object.FieldBasedObjectInterpolator;
-import org.codehaus.plexus.logging.Logger;
+import org.slf4j.Logger;
 
-import javax.annotation.Nonnull;
 import java.io.File;
 import java.io.IOException;
 import java.util.HashSet;
@@ -140,7 +139,7 @@ public class AssemblyInterpolator
     }
 
     public static FixedStringSearchInterpolator fullInterpolator( final MavenProject project,
-                                                                  @Nonnull FixedStringSearchInterpolator projectIp,
+                                                                  final FixedStringSearchInterpolator projectIp,
                                                                   final AssemblerConfigurationSource configSource )
     {
         FixedStringSearchInterpolator fixedStringSearchInterpolator =
diff --git a/src/main/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReader.java b/src/main/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReader.java
index 3344c532..b82fff56 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReader.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReader.java
@@ -19,6 +19,9 @@ package org.apache.maven.plugins.assembly.io;
  * under the License.
  */
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.maven.plugins.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugins.assembly.InvalidAssemblerConfigurationException;
 import org.apache.maven.plugins.assembly.interpolation.AssemblyExpressionEvaluator;
@@ -44,12 +47,11 @@ import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
 import org.codehaus.plexus.interpolation.fixed.InterpolationState;
 import org.codehaus.plexus.interpolation.fixed.PrefixedObjectValueSource;
 import org.codehaus.plexus.interpolation.fixed.PrefixedPropertiesValueSource;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.codehaus.plexus.util.DirectoryScanner;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
@@ -66,11 +68,11 @@ import java.util.Set;
 /**
  *
  */
-@org.codehaus.plexus.component.annotations.Component( role = AssemblyReader.class )
-public class DefaultAssemblyReader
-    extends AbstractLogEnabled
-    implements AssemblyReader
+@Singleton
+@Named
+public class DefaultAssemblyReader implements AssemblyReader
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( DefaultAssemblyReader.class );
 
     public static FixedStringSearchInterpolator createProjectInterpolator( MavenProject project )
     {
@@ -106,7 +108,7 @@ public class DefaultAssemblyReader
             locator.setStrategies( strategies );
             for ( String descriptor1 : descriptors )
             {
-                getLogger().info( "Reading assembly descriptor: " + descriptor1 );
+                LOGGER.info( "Reading assembly descriptor: " + descriptor1 );
                 addAssemblyFromDescriptor( descriptor1, locator, configSource, assemblies );
             }
         }
@@ -145,7 +147,7 @@ public class DefaultAssemblyReader
         {
             if ( configSource.isIgnoreMissingDescriptor() )
             {
-                getLogger().debug( "Ignoring missing assembly descriptors per configuration. "
+                LOGGER.debug( "Ignoring missing assembly descriptors per configuration. "
                     + "See messages above for specifics." );
             }
             else
@@ -160,7 +162,7 @@ public class DefaultAssemblyReader
         {
             if ( !ids.add( assembly.getId() ) )
             {
-                getLogger().warn( "The assembly id " + assembly.getId() + " is used more than once." );
+                LOGGER.warn( "The assembly id " + assembly.getId() + " is used more than once." );
             }
 
         }
@@ -195,7 +197,7 @@ public class DefaultAssemblyReader
         {
             if ( configSource.isIgnoreMissingDescriptor() )
             {
-                getLogger().debug( "Ignoring missing assembly descriptor with ID '" + ref + "' per configuration." );
+                LOGGER.debug( "Ignoring missing assembly descriptor with ID '" + ref + "' per configuration." );
                 return null;
             }
             else
@@ -226,7 +228,7 @@ public class DefaultAssemblyReader
         {
             if ( configSource.isIgnoreMissingDescriptor() )
             {
-                getLogger().debug( "Ignoring missing assembly descriptor: '" + descriptor + "' per configuration." );
+                LOGGER.debug( "Ignoring missing assembly descriptor: '" + descriptor + "' per configuration." );
                 return null;
             }
             else
@@ -261,7 +263,7 @@ public class DefaultAssemblyReader
         {
             if ( configSource.isIgnoreMissingDescriptor() )
             {
-                getLogger().debug( "Ignoring missing assembly descriptor with ID '" + spec
+                LOGGER.debug( "Ignoring missing assembly descriptor with ID '" + spec
                     + "' per configuration.\nLocator output was:\n\n" + locator.getMessageHolder().render() );
                 return null;
             }
@@ -311,17 +313,17 @@ public class DefaultAssemblyReader
             FixedStringSearchInterpolator interpolator =
                 AssemblyInterpolator.fullInterpolator( project, createProjectInterpolator( project ), configSource );
             AssemblyXpp3Reader.ContentTransformer transformer =
-                AssemblyInterpolator.assemblyInterpolator( interpolator, is, getLogger() );
+                AssemblyInterpolator.assemblyInterpolator( interpolator, is, LOGGER );
 
             final AssemblyXpp3Reader r = new AssemblyXpp3Reader( transformer );
             assembly = r.read( reader );
 
             ComponentXpp3Reader.ContentTransformer ctrans =
-                AssemblyInterpolator.componentInterpolator( interpolator, is, getLogger() );
+                AssemblyInterpolator.componentInterpolator( interpolator, is, LOGGER );
             mergeComponentsWithMainAssembly( assembly, assemblyDir, configSource, ctrans );
             debugPrintAssembly( "After assembly is interpolated:", assembly );
 
-            AssemblyInterpolator.checkErrors( AssemblyId.createAssemblyId( assembly ), is, getLogger() );
+            AssemblyInterpolator.checkErrors( AssemblyId.createAssemblyId( assembly ), is, LOGGER );
 
             reader.close();
             reader = null;
@@ -353,11 +355,11 @@ public class DefaultAssemblyReader
         }
         catch ( final IOException e )
         {
-            getLogger().debug( "Failed to print debug message with assembly descriptor listing, and message: "
+            LOGGER.debug( "Failed to print debug message with assembly descriptor listing, and message: "
                 + message, e );
         }
 
-        getLogger().debug( message + "\n\n" + sWriter.toString() + "\n\n" );
+        LOGGER.debug( message + "\n\n" + sWriter.toString() + "\n\n" );
     }
 
     /**
@@ -398,7 +400,7 @@ public class DefaultAssemblyReader
             }
             catch ( final Exception eee )
             {
-                getLogger().error( "Error interpolating componentDescriptor: " + location, eee );
+                LOGGER.error( "Error interpolating componentDescriptor: " + location, eee );
             }
 
             final Location resolvedLocation = locator.resolve( location );
@@ -486,7 +488,7 @@ public class DefaultAssemblyReader
                 + "please run site:site before creating the assembly" );
         }
 
-        getLogger().info( "Adding site directory to assembly : " + siteDirectory );
+        LOGGER.info( "Adding site directory to assembly : " + siteDirectory );
 
         final FileSet siteFileSet = new FileSet();
 
@@ -496,19 +498,4 @@ public class DefaultAssemblyReader
 
         assembly.addFileSet( siteFileSet );
     }
-
-    @Override
-    protected Logger getLogger()
-    {
-        Logger logger = super.getLogger();
-
-        if ( logger == null )
-        {
-            logger = new ConsoleLogger( Logger.LEVEL_INFO, "assemblyReader-internal" );
-            enableLogging( logger );
-        }
-
-        return logger;
-    }
-
 }
diff --git a/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java b/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
index 2999c8d2..2611b36f 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
@@ -25,7 +25,6 @@ import java.util.Date;
 import java.util.List;
 import java.util.Properties;
 
-import javax.annotation.Nonnull;
 import org.apache.maven.archiver.MavenArchiveConfiguration;
 import org.apache.maven.archiver.MavenArchiver;
 import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -934,8 +933,7 @@ public abstract class AbstractAssemblyMojo extends AbstractMojo implements Assem
     }
 
     @Override
-    @Nonnull
-    public FixedStringSearchInterpolator getCommandLinePropsInterpolator()
+    public synchronized FixedStringSearchInterpolator getCommandLinePropsInterpolator()
     {
         if ( commandLinePropertiesInterpolator == null )
         {
@@ -945,8 +943,7 @@ public abstract class AbstractAssemblyMojo extends AbstractMojo implements Assem
     }
 
     @Override
-    @Nonnull
-    public FixedStringSearchInterpolator getEnvInterpolator()
+    public synchronized FixedStringSearchInterpolator getEnvInterpolator()
     {
         if ( envInterpolator == null )
         {
@@ -956,8 +953,7 @@ public abstract class AbstractAssemblyMojo extends AbstractMojo implements Assem
     }
 
     @Override
-    @Nonnull
-    public FixedStringSearchInterpolator getRepositoryInterpolator()
+    public synchronized FixedStringSearchInterpolator getRepositoryInterpolator()
     {
         if ( rootInterpolator == null )
         {
@@ -967,8 +963,7 @@ public abstract class AbstractAssemblyMojo extends AbstractMojo implements Assem
     }
 
     @Override
-    @Nonnull
-    public FixedStringSearchInterpolator getMainProjectInterpolator()
+    public synchronized FixedStringSearchInterpolator getMainProjectInterpolator()
     {
         if ( mainProjectInterpolator == null )
         {
diff --git a/src/main/java/org/apache/maven/plugins/assembly/mojos/SingleAssemblyMojo.java b/src/main/java/org/apache/maven/plugins/assembly/mojos/SingleAssemblyMojo.java
index 2737c38e..67133be4 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/mojos/SingleAssemblyMojo.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/mojos/SingleAssemblyMojo.java
@@ -41,8 +41,7 @@ import org.codehaus.plexus.util.xml.Xpp3Dom;
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  *
  */
-@Mojo( name = "single", inheritByDefault = false, requiresDependencyResolution = ResolutionScope.TEST,
-    threadSafe = true )
+@Mojo( name = "single", requiresDependencyResolution = ResolutionScope.TEST, threadSafe = true )
 public class SingleAssemblyMojo
     extends AbstractAssemblyMojo
 {
diff --git a/src/main/java/org/apache/maven/plugins/assembly/repository/DefaultRepositoryAssembler.java b/src/main/java/org/apache/maven/plugins/assembly/repository/DefaultRepositoryAssembler.java
index ffc6b120..a1240fb4 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/repository/DefaultRepositoryAssembler.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/repository/DefaultRepositoryAssembler.java
@@ -19,6 +19,10 @@ package org.apache.maven.plugins.assembly.repository;
  * under the License.
  */
 
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -47,29 +51,37 @@ import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolver;
 import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException;
 import org.apache.maven.shared.transfer.repository.RepositoryManager;
 import org.apache.maven.shared.utils.io.FileUtils;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.logging.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static java.util.Objects.requireNonNull;
 
 /**
  * @author Jason van Zyl
  */
 
 // todo will need to pop the processed project cache using reflection
-@Component( role = RepositoryAssembler.class )
-public class DefaultRepositoryAssembler
-    extends AbstractLogEnabled
-    implements RepositoryAssembler
+@Singleton
+@Named
+public class DefaultRepositoryAssembler implements RepositoryAssembler
 {
-    @Requirement
-    protected ArtifactResolver artifactResolver;
+    private static final Logger LOGGER = LoggerFactory.getLogger( DefaultRepositoryAssembler.class );
 
-    @Requirement
-    private DependencyResolver dependencyResolver;
+    private final ArtifactResolver artifactResolver;
 
-    @Requirement
-    private RepositoryManager repositoryManager;
+    private final RepositoryManager repositoryManager;
+
+    private final DependencyResolver dependencyResolver;
+
+    @Inject
+    public DefaultRepositoryAssembler( ArtifactResolver artifactResolver,
+                                       RepositoryManager repositoryManager,
+                                       DependencyResolver dependencyResolver )
+    {
+        this.artifactResolver = requireNonNull( artifactResolver );
+        this.repositoryManager = requireNonNull( repositoryManager );
+        this.dependencyResolver = requireNonNull( dependencyResolver );
+    }
 
     public void buildRemoteRepository( File repositoryDirectory, RepositoryInfo repository,
                                        RepositoryBuilderConfigSource configSource )
@@ -78,17 +90,15 @@ public class DefaultRepositoryAssembler
         MavenProject project = configSource.getProject();
         ProjectBuildingRequest buildingRequest = configSource.getProjectBuildingRequest();
 
-        Iterable<ArtifactResult> result = null;
+        Iterable<ArtifactResult> result;
 
         Collection<Dependency> dependencies = project.getDependencies();
 
         if ( dependencies == null )
         {
-            Logger logger = getLogger();
-
-            if ( logger.isDebugEnabled() )
+            if ( LOGGER.isDebugEnabled() )
             {
-                logger.debug( "dependency-artifact set for project: " + project.getId()
+                LOGGER.debug( "dependency-artifact set for project: " + project.getId()
                     + " is null. Skipping repository processing." );
             }
 
@@ -213,7 +223,7 @@ public class DefaultRepositoryAssembler
 
                 if ( filter.include( a ) )
                 {
-                    getLogger().debug( "Re-resolving: " + a + " for repository assembly." );
+                    LOGGER.debug( "Re-resolving: " + a + " for repository assembly." );
 
                     setAlignment( a, groupVersionAlignments );
 
diff --git a/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFileUtils.java b/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFileUtils.java
index bfbd89da..079bcff2 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFileUtils.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFileUtils.java
@@ -21,7 +21,6 @@ package org.apache.maven.plugins.assembly.utils;
 
 import org.codehaus.plexus.components.io.fileselectors.FileInfo;
 
-import javax.annotation.Nonnull;
 import java.io.File;
 import java.util.Locale;
 
@@ -77,7 +76,7 @@ public final class AssemblyFileUtils
     }
 
     @SuppressWarnings( "ResultOfMethodCallIgnored" )
-    public static void verifyTempDirectoryAvailability( @Nonnull final File tempDir )
+    public static void verifyTempDirectoryAvailability( final File tempDir )
     {
         if ( !tempDir.exists() )
         {
@@ -85,14 +84,12 @@ public final class AssemblyFileUtils
         }
     }
 
-    @Nonnull
-    private static String normalizePath( @Nonnull String path )
+    private static String normalizePath( String path )
     {
         return path.replace( '\\', '/' );
     }
 
-    @Nonnull
-    public static String normalizeFileInfo( @Nonnull FileInfo fileInfo )
+    public static String normalizeFileInfo( FileInfo fileInfo )
     {
         String name = fileInfo.getName();
         name = normalizePath( name );
diff --git a/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFormatUtils.java b/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFormatUtils.java
index 363e2869..cf591ff2 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFormatUtils.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFormatUtils.java
@@ -26,9 +26,6 @@ import java.util.List;
 import java.util.ListIterator;
 import java.util.Properties;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugins.assembly.AssemblerConfigurationSource;
@@ -41,8 +38,8 @@ import org.codehaus.plexus.interpolation.fixed.MapBasedValueSource;
 import org.codehaus.plexus.interpolation.fixed.PrefixedObjectValueSource;
 import org.codehaus.plexus.interpolation.fixed.PrefixedPropertiesValueSource;
 import org.codehaus.plexus.interpolation.fixed.PropertiesBasedValueSource;
-import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.StringUtils;
+import org.slf4j.Logger;
 
 /**
  *
@@ -75,7 +72,6 @@ public final class AssemblyFormatUtils
     }
 
 
-    @Nonnull
     public static FixedStringSearchInterpolator finalNameInterpolator( String finalName )
     {
         final Properties specialExpressionOverrides = new Properties();
@@ -93,7 +89,6 @@ public final class AssemblyFormatUtils
         return FixedStringSearchInterpolator.create( new PropertiesBasedValueSource( specialExpressionOverrides ) );
     }
 
-    @Nonnull
     public static FixedStringSearchInterpolator moduleProjectInterpolator( final MavenProject moduleProject )
     {
         if ( moduleProject != null )
@@ -131,7 +126,6 @@ public final class AssemblyFormatUtils
 
     }
 
-    @Nonnull
     public static FixedStringSearchInterpolator artifactProjectInterpolator( final MavenProject artifactProject )
     {
         if ( artifactProject != null )
@@ -155,8 +149,7 @@ public final class AssemblyFormatUtils
         }
     }
 
-    @Nonnull
-    public static FixedStringSearchInterpolator artifactInterpolator( @Nonnull final Artifact artifact )
+    public static FixedStringSearchInterpolator artifactInterpolator( final Artifact artifact )
     {
         final String groupIdPath = artifact.getGroupId().replace( '.', '/' );
 
@@ -168,7 +161,6 @@ public final class AssemblyFormatUtils
     }
 
 
-    @Nonnull
     public static FixedStringSearchInterpolator classifierRules( final Artifact artifact )
     {
         final Properties specialRules = new Properties();
@@ -298,8 +290,7 @@ public final class AssemblyFormatUtils
      */
 
 
-    @Nonnull
-    public static String fixRelativeRefs( @Nonnull String src )
+    public static String fixRelativeRefs( String src )
     {
         String value = src;
 
@@ -383,13 +374,12 @@ public final class AssemblyFormatUtils
      * <li>environment variables.</li>
      * </ol>
      */
-    public static String evaluateFileNameMapping( final String expression, @Nonnull final Artifact artifact,
-                                                  @Nullable final MavenProject mainProject,
-                                                  @Nullable final Artifact moduleArtifact,
-                                                  @Nonnull final AssemblerConfigurationSource configSource,
+    public static String evaluateFileNameMapping( final String expression, final Artifact artifact,
+                                                  /* nullable */ final MavenProject mainProject,
+                                                  /* nullable */  final Artifact moduleArtifact,
+                                                  final AssemblerConfigurationSource configSource,
                                                   FixedStringSearchInterpolator moduleProjectInterpolator,
                                                   FixedStringSearchInterpolator artifactProjectInterpolator )
-        throws AssemblyFormattingException
     {
         String value = expression;
 
diff --git a/src/main/java/org/apache/maven/plugins/assembly/utils/FilterUtils.java b/src/main/java/org/apache/maven/plugins/assembly/utils/FilterUtils.java
index df4ee99d..d2867683 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/utils/FilterUtils.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/utils/FilterUtils.java
@@ -33,12 +33,13 @@ import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.plugins.assembly.InvalidAssemblerConfigurationException;
+import org.apache.maven.plugins.assembly.internal.PlexusLoggingHelper;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.artifact.filter.PatternExcludesArtifactFilter;
 import org.apache.maven.shared.artifact.filter.PatternIncludesArtifactFilter;
 import org.apache.maven.shared.artifact.filter.StatisticsReportingArtifactFilter;
 import org.apache.maven.shared.artifact.filter.resolve.ScopeFilter;
-import org.codehaus.plexus.logging.Logger;
+import org.slf4j.Logger;
 
 /**
  *
@@ -90,7 +91,7 @@ public final class FilterUtils
         {
             if ( f != null )
             {
-                f.reportMissedCriteria( logger );
+                f.reportMissedCriteria( PlexusLoggingHelper.wrap( logger ) );
             }
         }
         return result;
@@ -186,8 +187,8 @@ public final class FilterUtils
                     logger.debug( "Statistics for " + sFilter + "\n" );
                 }
 
-                sFilter.reportMissedCriteria( logger );
-                sFilter.reportFilteredArtifacts( logger );
+                sFilter.reportMissedCriteria( PlexusLoggingHelper.wrap( logger ) );
+                sFilter.reportFilteredArtifacts( PlexusLoggingHelper.wrap( logger ) );
             }
         }
     }
diff --git a/src/main/java/org/apache/maven/plugins/assembly/utils/LineEndingsUtils.java b/src/main/java/org/apache/maven/plugins/assembly/utils/LineEndingsUtils.java
index e69f4e8c..3cc14816 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/utils/LineEndingsUtils.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/utils/LineEndingsUtils.java
@@ -30,9 +30,6 @@ import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.io.RandomAccessFile;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
 import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
 
 /**
@@ -60,7 +57,7 @@ public final class LineEndingsUtils
      * @param encoding    The encoding to use, null for platform encoding
      * @throws IOException .
      */
-    public static void convertLineEndings( @Nonnull File source, @Nonnull File dest, LineEndings lineEndings,
+    public static void convertLineEndings( final File source, File dest, LineEndings lineEndings,
                                            final Boolean atEndOfFile, String encoding )
         throws IOException
     {
@@ -146,7 +143,7 @@ public final class LineEndingsUtils
      * @return an input stream that enforces a specifi line ending style
      */
     @SuppressWarnings( "resource" )
-    public static InputStream lineEndingConverter( @Nonnull InputStream in, LineEndings lineEndings )
+    public static InputStream lineEndingConverter( InputStream in, LineEndings lineEndings )
         throws IOException
     {
         return lineEndings.isNewLine()
@@ -154,8 +151,7 @@ public final class LineEndingsUtils
             : lineEndings.isCrLF() ? new WindowsLineFeedInputStream( in, false ) : in;
     }
 
-    @Nonnull
-    public static LineEndings getLineEnding( @Nullable String lineEnding )
+    public static LineEndings getLineEnding( /* nullable */ String lineEnding )
         throws AssemblyFormattingException
     {
         LineEndings result = LineEndings.keep;
@@ -181,8 +177,7 @@ public final class LineEndingsUtils
      * @return The proper line ending characters
      * @throws AssemblyFormattingException
      */
-    @Nullable
-    public static String getLineEndingCharacters( @Nullable String lineEnding )
+    public static String getLineEndingCharacters( /* nullable */ String lineEnding )
         throws AssemblyFormattingException
     {
         String value = lineEnding;
diff --git a/src/main/java/org/apache/maven/plugins/assembly/utils/ProjectUtils.java b/src/main/java/org/apache/maven/plugins/assembly/utils/ProjectUtils.java
index e420a825..6c42707c 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/utils/ProjectUtils.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/utils/ProjectUtils.java
@@ -21,10 +21,8 @@ package org.apache.maven.plugins.assembly.utils;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.logging.Logger;
+import org.slf4j.Logger;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 import java.io.File;
 import java.io.IOException;
 import java.util.Collections;
@@ -43,8 +41,7 @@ public final class ProjectUtils
     {
     }
 
-    @Nullable
-    public static String getClassifier( @Nonnull Artifact artifact )
+    public static String getClassifier( Artifact artifact )
     {
         String classifier = artifact.getClassifier();
         if ( classifier != null && classifier.length() == 0 )
@@ -54,10 +51,9 @@ public final class ProjectUtils
         return classifier;
     }
 
-    @Nonnull
-    public static Set<MavenProject> getProjectModules( @Nonnull final MavenProject project,
-                                                       @Nonnull final List<MavenProject> reactorProjects,
-                                                       final boolean includeSubModules, @Nonnull final Logger logger )
+    public static Set<MavenProject> getProjectModules( final MavenProject project,
+                                                       final List<MavenProject> reactorProjects,
+                                                       final boolean includeSubModules, final Logger logger )
         throws IOException
     {
         final Set<MavenProject> singleParentSet = Collections.singleton( project );
@@ -147,8 +143,8 @@ public final class ProjectUtils
         return modules;
     }
 
-    private static boolean projectContainsModule( @Nonnull final MavenProject mainProject,
-                                                  @Nonnull final MavenProject moduleProject )
+    private static boolean projectContainsModule( final MavenProject mainProject,
+                                                  final MavenProject moduleProject )
         throws IOException
     {
         final List<String> modules = mainProject.getModules();
diff --git a/src/main/java/org/apache/maven/plugins/assembly/utils/TypeConversionUtils.java b/src/main/java/org/apache/maven/plugins/assembly/utils/TypeConversionUtils.java
index 6565a9d5..2ed93a85 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/utils/TypeConversionUtils.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/utils/TypeConversionUtils.java
@@ -20,7 +20,7 @@ package org.apache.maven.plugins.assembly.utils;
  */
 
 import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
-import org.codehaus.plexus.logging.Logger;
+import org.slf4j.Logger;
 
 import java.util.List;
 
@@ -158,7 +158,7 @@ public final class TypeConversionUtils
         }
         // end execute-/list-access checks.
 
-        if ( warn )
+        if ( warn && logger != null )
         {
             logger.warn( messages.toString() );
         }
diff --git a/src/main/resources/META-INF/plexus/components.xml b/src/main/resources/META-INF/plexus/components.xml
deleted file mode 100644
index 9475059e..00000000
--- a/src/main/resources/META-INF/plexus/components.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-
-<component-set>
-  <components>
-    <!-- UnArchiver -->
-    <component>
-      <role>org.codehaus.plexus.archiver.UnArchiver</role>
-      <role-hint>sar</role-hint>
-      <implementation>org.codehaus.plexus.archiver.zip.ZipUnArchiver</implementation>
-      <instantiation-strategy>per-lookup</instantiation-strategy>
-    </component>
-    <component>
-      <role>org.codehaus.plexus.components.io.resources.PlexusIoResourceCollection</role>
-      <role-hint>sar</role-hint>
-      <implementation>org.codehaus.plexus.components.io.resources.PlexusIoZipFileResourceCollection</implementation>
-      <instantiation-strategy>per-lookup</instantiation-strategy>
-    </component>
-  </components>
-</component-set>
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java
index dd41811c..47af9259 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java
@@ -41,6 +41,7 @@ import org.apache.maven.model.Model;
 import org.apache.maven.plugins.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugins.assembly.InvalidAssemblerConfigurationException;
 import org.apache.maven.plugins.assembly.archive.phase.AssemblyArchiverPhase;
+import org.apache.maven.plugins.assembly.filter.ContainerDescriptorHandler;
 import org.apache.maven.plugins.assembly.model.Assembly;
 import org.apache.maven.plugins.assembly.mojos.AbstractAssemblyMojo;
 import org.apache.maven.project.MavenProject;
@@ -56,8 +57,6 @@ import org.codehaus.plexus.archiver.tar.TarLongFileMode;
 import org.codehaus.plexus.archiver.war.WarArchiver;
 import org.codehaus.plexus.archiver.zip.ZipArchiver;
 import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -71,6 +70,8 @@ public class DefaultAssemblyArchiverTest
     @Rule
     public TemporaryFolder temporaryFolder = new TemporaryFolder();
 
+    private ArchiverManager archiverManager;
+
     private PlexusContainer container;
 
     public static void setupInterpolators( AssemblerConfigurationSource configSource )
@@ -91,6 +92,7 @@ public class DefaultAssemblyArchiverTest
     public void setup()
         throws PlexusContainerException
     {
+        this.archiverManager = mock( ArchiverManager.class );
         this.container = new DefaultPlexusContainer();
     }
 
@@ -98,7 +100,7 @@ public class DefaultAssemblyArchiverTest
     public void failWhenAssemblyIdIsNull()
         throws Exception
     {
-        final DefaultAssemblyArchiver archiver = createSubject( null, null, null );
+        final DefaultAssemblyArchiver archiver = createSubject( Collections.<AssemblyArchiverPhase>emptyList() );
         archiver.createArchive( new Assembly(), "full-name", "zip", null, false, null, null );
     }
 
@@ -108,7 +110,6 @@ public class DefaultAssemblyArchiverTest
     {
         Archiver archiver = mock( Archiver.class );
         
-        final ArchiverManager archiverManager = mock( ArchiverManager.class );
         when( archiverManager.getArchiver( "zip" ) ).thenReturn( archiver );
 
         final AssemblyArchiverPhase phase = mock( AssemblyArchiverPhase.class );
@@ -128,7 +129,7 @@ public class DefaultAssemblyArchiverTest
         final Assembly assembly = new Assembly();
         assembly.setId( "id" );
 
-        final DefaultAssemblyArchiver subject = createSubject( archiverManager, Collections.singletonList( phase ), null );
+        final DefaultAssemblyArchiver subject = createSubject( Collections.singletonList( phase ) );
 
         subject.createArchive( assembly, "full-name", "zip", configSource, false, null, null );
         
@@ -167,7 +168,6 @@ public class DefaultAssemblyArchiverTest
     {
         final TestArchiverWithConfig archiver = new TestArchiverWithConfig();
 
-        final ArchiverManager archiverManager = mock( ArchiverManager.class );
         when( archiverManager.getArchiver( "dummy" ) ).thenReturn( archiver );
 
         final AssemblerConfigurationSource configSource = mock( AssemblerConfigurationSource.class );
@@ -191,7 +191,7 @@ public class DefaultAssemblyArchiverTest
         when( configSource.getOverrideGroupName() ).thenReturn( "root" );
 
         final DefaultAssemblyArchiver subject =
-            createSubject( archiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
+            createSubject( new ArrayList<AssemblyArchiverPhase>() );
 
         subject.createArchiver( "dummy", false, "finalName", configSource, null, false, null, null );
 
@@ -207,7 +207,6 @@ public class DefaultAssemblyArchiverTest
     {
         final TestTarArchiver ttArchiver = new TestTarArchiver();
 
-        final ArchiverManager archiverManager = mock( ArchiverManager.class );
         when( archiverManager.getArchiver( "tar" ) ).thenReturn( ttArchiver );
 
         final AssemblerConfigurationSource configSource = mock( AssemblerConfigurationSource.class );
@@ -219,7 +218,7 @@ public class DefaultAssemblyArchiverTest
         when( configSource.getOverrideGid() ).thenReturn( 0 );
         when( configSource.getOverrideGroupName() ).thenReturn( "root" );
 
-        final DefaultAssemblyArchiver subject = createSubject( archiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
+        final DefaultAssemblyArchiver subject = createSubject( new ArrayList<AssemblyArchiverPhase>() );
 
         subject.createArchiver( "tar", false, "finalName", configSource, null, false, null, null );
 
@@ -247,7 +246,6 @@ public class DefaultAssemblyArchiverTest
     {
         final TestWarArchiver twArchiver = new TestWarArchiver();
 
-        final ArchiverManager archiverManager = mock( ArchiverManager.class );
         when( archiverManager.getArchiver( "war" ) ).thenReturn( twArchiver );
 
         final AssemblerConfigurationSource configSource = mock( AssemblerConfigurationSource.class );
@@ -259,7 +257,7 @@ public class DefaultAssemblyArchiverTest
         when( configSource.getWorkingDirectory() ).thenReturn( new File( "." ) );
         when( configSource.isIgnorePermissions() ).thenReturn( true );
         
-        final DefaultAssemblyArchiver subject = createSubject( archiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
+        final DefaultAssemblyArchiver subject = createSubject( new ArrayList<AssemblyArchiverPhase>() );
 
         subject.createArchiver( "war", false, null, configSource, null, false, null, null );
 
@@ -288,7 +286,6 @@ public class DefaultAssemblyArchiverTest
     {
         final ZipArchiver archiver = new ZipArchiver();
 
-        final ArchiverManager archiverManager = mock( ArchiverManager.class );
         when( archiverManager.getArchiver( "zip" ) ).thenReturn( archiver );
 
         final AssemblerConfigurationSource configSource = mock( AssemblerConfigurationSource.class );
@@ -300,7 +297,7 @@ public class DefaultAssemblyArchiverTest
         when( configSource.isIgnorePermissions() ).thenReturn( true );
 
         final DefaultAssemblyArchiver subject =
-            createSubject( archiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
+            createSubject( new ArrayList<AssemblyArchiverPhase>() );
 
         subject.createArchiver( "zip", false, null, configSource, null, false, null, null );
 
@@ -324,11 +321,10 @@ public class DefaultAssemblyArchiverTest
     {
         final TestWarArchiver twArchiver = new TestWarArchiver();
 
-        final ArchiverManager archiverManager = mock( ArchiverManager.class );
         when( archiverManager.getArchiver( "war" ) ).thenReturn( twArchiver );
 
         final DefaultAssemblyArchiver subject =
-            createSubject( archiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
+            createSubject( new ArrayList<AssemblyArchiverPhase>() );
 
         subject.createWarArchiver();
 
@@ -344,10 +340,9 @@ public class DefaultAssemblyArchiverTest
     {
         final TestTarArchiver archiver = new TestTarArchiver();
         
-        final ArchiverManager archiverManager = mock( ArchiverManager.class );
         when( archiverManager.getArchiver( "tar" ) ).thenReturn( archiver );
 
-        final DefaultAssemblyArchiver subject = createSubject( archiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
+        final DefaultAssemblyArchiver subject = createSubject( new ArrayList<AssemblyArchiverPhase>() );
 
         subject.createTarArchiver( "tar", TarLongFileMode.fail );
 
@@ -364,10 +359,9 @@ public class DefaultAssemblyArchiverTest
     {
         final TestTarArchiver archiver = new TestTarArchiver();
         
-        final ArchiverManager archiverManager = mock( ArchiverManager.class );
         when( archiverManager.getArchiver( "tar" ) ).thenReturn( archiver );
         
-        final DefaultAssemblyArchiver subject = createSubject( archiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
+        final DefaultAssemblyArchiver subject = createSubject( new ArrayList<AssemblyArchiverPhase>() );
 
         subject.createTarArchiver( "tar.gz", TarLongFileMode.fail );
 
@@ -384,10 +378,9 @@ public class DefaultAssemblyArchiverTest
     {
         final TestTarArchiver archiver = new TestTarArchiver();
         
-        final ArchiverManager archiverManager = mock( ArchiverManager.class );
         when( archiverManager.getArchiver( "tar" ) ).thenReturn( archiver );
         
-        final DefaultAssemblyArchiver subject = createSubject( archiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
+        final DefaultAssemblyArchiver subject = createSubject( new ArrayList<AssemblyArchiverPhase>() );
 
         subject.createTarArchiver( "tgz", TarLongFileMode.fail );
 
@@ -404,10 +397,9 @@ public class DefaultAssemblyArchiverTest
     {
         final TestTarArchiver archiver = new TestTarArchiver();
         
-        final ArchiverManager archiverManager = mock( ArchiverManager.class );
         when( archiverManager.getArchiver( "tar" ) ).thenReturn( archiver );
 
-        final DefaultAssemblyArchiver subject = createSubject( archiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
+        final DefaultAssemblyArchiver subject = createSubject( new ArrayList<AssemblyArchiverPhase>() );
 
         subject.createTarArchiver( "tar.bz2", TarLongFileMode.fail );
 
@@ -424,10 +416,9 @@ public class DefaultAssemblyArchiverTest
     {
         final TestTarArchiver archiver = new TestTarArchiver();
         
-        final ArchiverManager archiverManager = mock( ArchiverManager.class );
         when( archiverManager.getArchiver( "tar" ) ).thenReturn( archiver );
 
-        final DefaultAssemblyArchiver subject = createSubject( archiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
+        final DefaultAssemblyArchiver subject = createSubject( new ArrayList<AssemblyArchiverPhase>() );
 
         subject.createTarArchiver( "tbz2", TarLongFileMode.fail );
 
@@ -444,10 +435,9 @@ public class DefaultAssemblyArchiverTest
     {
         final TestTarArchiver archiver = new TestTarArchiver();
 
-        final ArchiverManager archiverManager = mock( ArchiverManager.class );
         when( archiverManager.getArchiver( "tar" ) ).thenReturn( archiver );
         
-        final DefaultAssemblyArchiver subject = createSubject( archiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
+        final DefaultAssemblyArchiver subject = createSubject( new ArrayList<AssemblyArchiverPhase>() );
 
         subject.createTarArchiver( "tar.xz", TarLongFileMode.fail );
 
@@ -464,10 +454,9 @@ public class DefaultAssemblyArchiverTest
     {
         final TestTarArchiver archiver = new TestTarArchiver();
         
-        final ArchiverManager archiverManager = mock( ArchiverManager.class );
         when( archiverManager.getArchiver( "tar" ) ).thenReturn( archiver );
 
-        final DefaultAssemblyArchiver subject = createSubject( archiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
+        final DefaultAssemblyArchiver subject = createSubject( new ArrayList<AssemblyArchiverPhase>() );
 
         subject.createTarArchiver( "txz", TarLongFileMode.fail );
 
@@ -484,10 +473,9 @@ public class DefaultAssemblyArchiverTest
     {
         final TestTarArchiver ttArchiver = new TestTarArchiver();
         
-        final ArchiverManager archiverManager = mock( ArchiverManager.class );
         when( archiverManager.getArchiver( "tar" ) ).thenReturn( ttArchiver );
 
-        final DefaultAssemblyArchiver subject = createSubject( archiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
+        final DefaultAssemblyArchiver subject = createSubject( new ArrayList<AssemblyArchiverPhase>() );
 
         try
         {
@@ -504,21 +492,9 @@ public class DefaultAssemblyArchiverTest
         verify( archiverManager ).getArchiver( "tar" );
     }
 
-    private DefaultAssemblyArchiver createSubject( final ArchiverManager archiverManager,
-                                                   final List<AssemblyArchiverPhase> phases, Logger logger )
+    private DefaultAssemblyArchiver createSubject( final List<AssemblyArchiverPhase> phases )
     {
-        final DefaultAssemblyArchiver subject = new DefaultAssemblyArchiver( archiverManager, phases );
-
-        subject.setContainer( container );
-
-        if ( logger == null )
-        {
-            logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
-        }
-
-        subject.enableLogging( logger );
-
-        return subject;
+        return new DefaultAssemblyArchiver( archiverManager, phases, Collections.<String,ContainerDescriptorHandler>emptyMap(), container );
     }
 
     private static final class TestTarArchiver
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/archiver/AssemblyProxyArchiverTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/archiver/AssemblyProxyArchiverTest.java
index 7121297b..153561f9 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/archiver/AssemblyProxyArchiverTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/archiver/AssemblyProxyArchiverTest.java
@@ -36,8 +36,6 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-import javax.annotation.Nonnull;
-
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.archiver.FileSet;
@@ -47,8 +45,6 @@ import org.codehaus.plexus.archiver.util.DefaultFileSet;
 import org.codehaus.plexus.components.io.fileselectors.FileInfo;
 import org.codehaus.plexus.components.io.fileselectors.FileSelector;
 import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
@@ -62,8 +58,6 @@ public class AssemblyProxyArchiverTest
     @Rule
     public TemporaryFolder temporaryFolder = new TemporaryFolder();
     
-    private static final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
-
     @Test( timeout = 5000 )
     public void addFileSet_SkipWhenSourceIsAssemblyWorkDir()
         throws IOException, ArchiverException
@@ -74,7 +68,7 @@ public class AssemblyProxyArchiverTest
 
         final TrackingArchiver tracker = new TrackingArchiver();
         final AssemblyProxyArchiver archiver =
-            new AssemblyProxyArchiver( "", tracker, null, null, null, workdir, logger );
+            new AssemblyProxyArchiver( "", tracker, null, null, null, workdir );
 
         archiver.setForced( true );
 
@@ -102,7 +96,7 @@ public class AssemblyProxyArchiverTest
 
         final TrackingArchiver tracker = new TrackingArchiver();
         final AssemblyProxyArchiver archiver =
-            new AssemblyProxyArchiver( "", tracker, null, null, null, workdir, logger );
+            new AssemblyProxyArchiver( "", tracker, null, null, null, workdir );
 
         archiver.setForced( true );
 
@@ -130,8 +124,7 @@ public class AssemblyProxyArchiverTest
         selectors.add( counter );
 
         final AssemblyProxyArchiver archiver =
-            new AssemblyProxyArchiver( "", delegate, null, selectors, null, new File( "." ),
-                                       new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+            new AssemblyProxyArchiver( "", delegate, null, selectors, null, new File( "." ) );
         archiver.setForced( true );
 
         final File inputFile = temporaryFolder.newFile();
@@ -157,8 +150,7 @@ public class AssemblyProxyArchiverTest
         selectors.add( counter );
 
         final AssemblyProxyArchiver archiver =
-            new AssemblyProxyArchiver( "", delegate, null, selectors, null, new File( "." ),
-                                       new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+            new AssemblyProxyArchiver( "", delegate, null, selectors, null, new File( "." ) );
 
         archiver.setForced( true );
 
@@ -180,8 +172,7 @@ public class AssemblyProxyArchiverTest
 
         final AssemblyProxyArchiver archiver =
             new AssemblyProxyArchiver( "prefix", delegate, null, selectors, null,
-                                       new File( temporaryFolder.getRoot(), "module1" ),
-                                       new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+                                       new File( temporaryFolder.getRoot(), "module1" ) );
         
         FileSet fileSet = mock( FileSet.class );
         when( fileSet.getDirectory() ).thenReturn( temporaryFolder.getRoot() ); 
@@ -220,7 +211,7 @@ public class AssemblyProxyArchiverTest
             return count;
         }
 
-        public boolean isSelected( final @Nonnull FileInfo fileInfo )
+        public boolean isSelected( final FileInfo fileInfo )
             throws IOException
         {
             if ( fileInfo.isFile() )
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/phase/DependencySetAssemblyPhaseTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
index 24d755b0..71798aaf 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
@@ -42,6 +42,7 @@ import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
 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.ProjectBuilder;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -59,7 +60,7 @@ public class DependencySetAssemblyPhaseTest
     {
         this.dependencyResolver = mock( DependencyResolver.class );
         
-        this.phase = new DependencySetAssemblyPhase( null, dependencyResolver, null );
+        this.phase = new DependencySetAssemblyPhase( mock( ProjectBuilder.class ), dependencyResolver );
     }
 
     @Test
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhaseTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhaseTest.java
index 62d4ac56..c412d962 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhaseTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhaseTest.java
@@ -39,17 +39,19 @@ import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.components.io.resources.PlexusIoResource;
 import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 import org.junit.runner.RunWith;
 import org.mockito.junit.MockitoJUnitRunner;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @RunWith( MockitoJUnitRunner.class )
 public class FileItemAssemblyPhaseTest
 {
+    private final Logger logger = LoggerFactory.getLogger( getClass() );
+
     @Rule
     public TemporaryFolder temporaryFolder = new TemporaryFolder();
     
@@ -63,12 +65,10 @@ public class FileItemAssemblyPhaseTest
 
         when( macCS.getBasedir()).thenReturn( basedir );
 
-        final Logger macLogger = mock( Logger.class );
-
         final Assembly assembly = new Assembly();
         assembly.setId( "test" );
 
-        createPhase( macLogger ).execute( assembly, null, macCS );
+        new FileItemAssemblyPhase().execute( assembly, null, macCS );
 
         verify( macCS ).getBasedir();
     }
@@ -89,8 +89,6 @@ public class FileItemAssemblyPhaseTest
         when( macCS.getFinalName() ) .thenReturn( "final-name" );
         prepareInterpolators( macCS );
 
-        final Logger macLogger = mock( Logger.class );
-
         final Archiver macArchiver = mock( Archiver.class );
 
         final Assembly assembly = new Assembly();
@@ -104,13 +102,12 @@ public class FileItemAssemblyPhaseTest
 
         assembly.addFile( fi );
 
-        createPhase( macLogger ).execute( assembly, macArchiver, macCS );
+        new FileItemAssemblyPhase().execute( assembly, macArchiver, macCS );
 
         verify( macArchiver ).addResource( any( PlexusIoResource.class ),
                                            eq( "file.txt" ),
                                            eq( TypeConversionUtils.modeToInt( "777",
-                                                                              new ConsoleLogger( Logger.LEVEL_DEBUG,
-                                                                                                 "test" ) ) ) );
+                                                                              logger ) ) );
     }
 
     @Test
@@ -129,8 +126,6 @@ public class FileItemAssemblyPhaseTest
         when( macCS.getFinalName() ) .thenReturn( "final-name" );
         prepareInterpolators( macCS );
 
-        final Logger macLogger = mock( Logger.class );
-
         final Archiver macArchiver = mock( Archiver.class );
 
         final Assembly assembly = new Assembly();
@@ -144,13 +139,12 @@ public class FileItemAssemblyPhaseTest
 
         assembly.addFile( fi );
 
-        createPhase( macLogger ).execute( assembly, macArchiver, macCS );
+        new FileItemAssemblyPhase().execute( assembly, macArchiver, macCS );
 
         verify( macArchiver ).addResource( any( PlexusIoResource.class ),
                                            eq( "file.txt" ),
                                            eq( TypeConversionUtils.modeToInt( "777",
-                                                                              new ConsoleLogger( Logger.LEVEL_DEBUG,
-                                                                                                 "test" ) ) ) );
+                                                                              logger ) ) );
     }
 
     @Test
@@ -175,8 +169,6 @@ public class FileItemAssemblyPhaseTest
         when( macCS.getFinalName() ) .thenReturn( "final-name" );
         prepareInterpolators( macCS );
 
-        final Logger macLogger = mock( Logger.class );
-
         final Archiver macArchiver = mock( Archiver.class );
 
         final Assembly assembly = new Assembly();
@@ -208,23 +200,20 @@ public class FileItemAssemblyPhaseTest
         assembly.addFile( licenseFileItem );
         assembly.addFile( configFileItem );
 
-        createPhase( macLogger ).execute( assembly, macArchiver, macCS );
+        new FileItemAssemblyPhase().execute( assembly, macArchiver, macCS );
 
         verify( macArchiver ).addResource( any( PlexusIoResource.class ),
                                            eq( "README.txt" ),
                                            eq( TypeConversionUtils.modeToInt( "777",
-                                                                              new ConsoleLogger( Logger.LEVEL_DEBUG,
-                                                                                                 "test" ) ) ) );
+                                                                              logger ) ) );
         verify( macArchiver ).addResource( any( PlexusIoResource.class ),
                                            eq( "LICENSE.txt" ),
                                            eq( TypeConversionUtils.modeToInt( "777",
-                                                                              new ConsoleLogger( Logger.LEVEL_DEBUG,
-                                                                                                 "test" ) ) ) );
+                                                                              logger ) ) );
         verify( macArchiver ).addResource( any( PlexusIoResource.class ),
                                            eq( "config/config.txt" ),
                                            eq( TypeConversionUtils.modeToInt( "777",
-                                                                              new ConsoleLogger( Logger.LEVEL_DEBUG,
-                                                                                                 "test" ) ) ) );
+                                                                              logger ) ) );
     
     }
 
@@ -250,8 +239,6 @@ public class FileItemAssemblyPhaseTest
         when( macCS.getFinalName() ) .thenReturn( "final-name" );
         prepareInterpolators( macCS );
 
-        final Logger macLogger = mock( Logger.class );
-
         final Archiver macArchiver = mock( Archiver.class );
 
         final Assembly assembly = new Assembly();
@@ -286,23 +273,20 @@ public class FileItemAssemblyPhaseTest
         assembly.addFile( licenseFileItem );
         assembly.addFile( configFileItem );
 
-        createPhase( macLogger ).execute( assembly, macArchiver, macCS );
+        new FileItemAssemblyPhase().execute( assembly, macArchiver, macCS );
 
         verify( macArchiver ).addResource( any( PlexusIoResource.class ), 
                                            eq( "README_renamed.txt" ),
                                            eq( TypeConversionUtils.modeToInt( "777",
-                                                                              new ConsoleLogger( Logger.LEVEL_DEBUG,
-                                                                                                 "test" ) ) ) );
+                                                                              logger ) ) );
         verify( macArchiver ).addResource( any( PlexusIoResource.class ), 
                                            eq( "LICENSE_renamed.txt" ),
                                            eq( TypeConversionUtils.modeToInt( "777",
-                                                                              new ConsoleLogger( Logger.LEVEL_DEBUG,
-                                                                                                 "test" ) ) ) );
+                                                                              logger ) ) );
         verify( macArchiver ).addResource( any( PlexusIoResource.class ), 
                                            eq( "config/config_renamed.txt" ),
                                            eq( TypeConversionUtils.modeToInt( "777",
-                                                                              new ConsoleLogger( Logger.LEVEL_DEBUG,
-                                                                                                 "test" ) ) ) );
+                                                                              logger ) ) );
     }
 
     @Test
@@ -327,8 +311,6 @@ public class FileItemAssemblyPhaseTest
         when( macCS.getFinalName() ) .thenReturn( "final-name" );
         prepareInterpolators( macCS );
 
-        final Logger macLogger = mock( Logger.class );
-
         final Archiver macArchiver = mock( Archiver.class );
 
         final Assembly assembly = new Assembly();
@@ -361,31 +343,20 @@ public class FileItemAssemblyPhaseTest
         assembly.addFile( licenseFileItem );
         assembly.addFile( configFileItem );
 
-        createPhase( macLogger ).execute( assembly, macArchiver, macCS );
+        new FileItemAssemblyPhase().execute( assembly, macArchiver, macCS );
 
         verify( macArchiver ).addResource( any( PlexusIoResource.class ), 
                                            eq( "README_renamed.txt" ),
                                            eq( TypeConversionUtils.modeToInt( "777",
-                                                                              new ConsoleLogger( Logger.LEVEL_DEBUG,
-                                                                                                 "test" ) ) ) );
+                                                                              logger ) ) );
         verify( macArchiver ).addResource( any( PlexusIoResource.class ),
                                            eq( "LICENSE_renamed.txt" ),
                                            eq( TypeConversionUtils.modeToInt( "777",
-                                                                              new ConsoleLogger( Logger.LEVEL_DEBUG,
-                                                                                                 "test" ) ) ) );
+                                                                              logger ) ) );
         verify( macArchiver ).addResource( any( PlexusIoResource.class ), 
                                            eq( "config/config_renamed.txt" ),
                                            eq( TypeConversionUtils.modeToInt( "777",
-                                                                              new ConsoleLogger( Logger.LEVEL_DEBUG,
-                                                                                                 "test" ) ) ) );
-    }
-
-    private FileItemAssemblyPhase createPhase( final Logger logger )
-    {
-        final FileItemAssemblyPhase phase = new FileItemAssemblyPhase();
-        phase.enableLogging( logger );
-
-        return phase;
+                                                                              logger ) ) );
     }
 
     private void prepareInterpolators( AssemblerConfigurationSource configSource )
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/phase/FileSetAssemblyPhaseTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/phase/FileSetAssemblyPhaseTest.java
index d24ada72..5dbcb1b8 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/phase/FileSetAssemblyPhaseTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/phase/FileSetAssemblyPhaseTest.java
@@ -31,7 +31,6 @@ import org.apache.maven.plugins.assembly.model.Assembly;
 import org.apache.maven.plugins.assembly.model.FileSet;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.archiver.Archiver;
-import org.codehaus.plexus.logging.Logger;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -45,11 +44,7 @@ public class FileSetAssemblyPhaseTest
     @Before
     public void setUp() 
     {
-        Logger logger = mock( Logger.class );
-        when( logger.isDebugEnabled() ).thenReturn( true );
-
         this.phase = new FileSetAssemblyPhase();
-        phase.enableLogging( logger );
     }
 
     @Test
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
index 1484e7b0..c408edee 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
@@ -59,17 +59,20 @@ import org.apache.maven.plugins.assembly.model.ModuleSources;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuilder;
 import org.codehaus.plexus.archiver.Archiver;
-import org.codehaus.plexus.logging.Logger;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 import org.junit.runner.RunWith;
 import org.mockito.junit.MockitoJUnitRunner;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @RunWith( MockitoJUnitRunner.class )
 public class ModuleSetAssemblyPhaseTest
 {
+    private final Logger logger = LoggerFactory.getLogger( getClass() );
+
     @Rule
     public TemporaryFolder temporaryFolder = new TemporaryFolder();
     
@@ -79,16 +82,13 @@ public class ModuleSetAssemblyPhaseTest
     
     private ProjectBuilder projectBuilder;
 
-    private Logger logger;
-    
     @Before
     public void setUp()
     {
+        this.projectBuilder = mock( ProjectBuilder.class );
         this.dependencyResolver = mock( DependencyResolver.class );
         
-        this.logger = mock( Logger.class );
-        
-        this.phase = new ModuleSetAssemblyPhase( projectBuilder, dependencyResolver, logger );
+        this.phase = new ModuleSetAssemblyPhase( projectBuilder, dependencyResolver );
     }
 
     @Test
@@ -608,8 +608,6 @@ public class ModuleSetAssemblyPhaseTest
         
         DefaultAssemblyArchiverTest.setupInterpolators( configSource, project );
 
-        when( logger.isDebugEnabled() ).thenReturn( true );
-
         this.phase.addModuleSourceFileSets( sources, projects, archiver,
                                                              configSource );
 
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhaseTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhaseTest.java
index 74dd87fa..bd492a47 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhaseTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/phase/RepositoryAssemblyPhaseTest.java
@@ -40,18 +40,20 @@ import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.FileSet;
 import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 import org.junit.runner.RunWith;
 import org.mockito.junit.MockitoJUnitRunner;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @RunWith( MockitoJUnitRunner.class )
 public class RepositoryAssemblyPhaseTest
 {
+    private final Logger logger = LoggerFactory.getLogger( getClass() );
+
     @Rule
     public TemporaryFolder temporaryFolder = new TemporaryFolder();
     
@@ -64,7 +66,6 @@ public class RepositoryAssemblyPhaseTest
     {
         this.repositoryAssembler = mock( RepositoryAssembler.class );
         this.phase = new RepositoryAssemblyPhase( repositoryAssembler );
-        this.phase.enableLogging( mock( Logger.class ) );
     }
     
     @Test
@@ -108,7 +109,7 @@ public class RepositoryAssemblyPhaseTest
         repo.setFileMode( "777" );
         assembly.addRepository( repo );
 
-        final int mode = TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+        final int mode = TypeConversionUtils.modeToInt( "777", logger );
 
         final int defaultDirMode = -1;
         final int defaultFileMode = -1;
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddArtifactTaskTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddArtifactTaskTest.java
index db4133e4..c20979b3 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddArtifactTaskTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddArtifactTaskTest.java
@@ -41,8 +41,6 @@ import org.apache.maven.plugins.assembly.utils.TypeConversionUtils;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.archiver.ArchivedFileSet;
 import org.codehaus.plexus.archiver.Archiver;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -50,10 +48,14 @@ import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 import org.junit.runner.RunWith;
 import org.mockito.junit.MockitoJUnitRunner;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @RunWith( MockitoJUnitRunner.class )
 public class AddArtifactTaskTest
 {
+    private final Logger logger = LoggerFactory.getLogger( getClass() );
+
     @Rule
     public TemporaryFolder temporaryFolder = new TemporaryFolder();
 
@@ -142,7 +144,7 @@ public class AddArtifactTaskTest
 
         DefaultAssemblyArchiverTest.setupInterpolators( configSource, mainProject );
 
-        AddArtifactTask task = new AddArtifactTask( artifact, new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ), null );
+        AddArtifactTask task = new AddArtifactTask( artifact, null );
         task.setOutputDirectory( outputDir );
         task.setFileNameMapping( new DependencySet().getOutputFileNameMapping() );
 
@@ -167,7 +169,7 @@ public class AddArtifactTaskTest
 
     private AddArtifactTask createTask( Artifact artifact )
     {
-        AddArtifactTask task = new AddArtifactTask( artifact, new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ), null );
+        AddArtifactTask task = new AddArtifactTask( artifact, null );
 
         task.setFileNameMapping( "artifact" );
 
@@ -207,8 +209,8 @@ public class AddArtifactTaskTest
     public void testShouldAddArchiveFileWithUnpackAndModes()
         throws Exception
     {
-        final int directoryMode = TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
-        final int fileMode = TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+        final int directoryMode = TypeConversionUtils.modeToInt( "777", logger );
+        final int fileMode = TypeConversionUtils.modeToInt( "777", logger );
         final int originalDirMode = -1;
         final int originalFileMode = -1;
         
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddDependencySetsTaskTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddDependencySetsTaskTest.java
index 5867742e..1d316b1a 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddDependencySetsTaskTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddDependencySetsTaskTest.java
@@ -62,8 +62,6 @@ import org.codehaus.plexus.archiver.ArchivedFileSet;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.archiver.FileSet;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
@@ -145,11 +143,9 @@ public class AddDependencySetsTaskTest
 
         DefaultAssemblyArchiverTest.setupInterpolators( configSource, mainProject );
 
-        final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
-
         final AddDependencySetsTask task =
             new AddDependencySetsTask( Collections.singletonList( ds ), Collections.singleton( depArtifact ),
-                                       depProject, projectBuilder, logger );
+                                       depProject, projectBuilder );
 
         task.addDependencySet( ds, archiver, configSource );
         
@@ -182,10 +178,8 @@ public class AddDependencySetsTaskTest
         final DependencySet ds = new DependencySet();
         ds.setOutputDirectory( "/out" );
 
-        final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
-
         final AddDependencySetsTask task =
-            new AddDependencySetsTask( Collections.singletonList( ds ), null, project, null, logger );
+            new AddDependencySetsTask( Collections.singletonList( ds ), null, project, null );
 
         task.addDependencySet( ds, null, null );
     }
@@ -238,11 +232,9 @@ public class AddDependencySetsTaskTest
         ds.setOutputDirectory( "/out" );
         DefaultAssemblyArchiverTest.setupInterpolators( configSource, project );
 
-        final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
-
         final AddDependencySetsTask task =
             new AddDependencySetsTask( Collections.singletonList( ds ), Collections.singleton( depArtifact ),
-                                       project, projectBuilder, logger );
+                                       project, projectBuilder );
 
         task.addDependencySet( ds, archiver, configSource );
 
@@ -324,12 +316,10 @@ public class AddDependencySetsTaskTest
         final ProjectBuilder projectBuilder = mock( ProjectBuilder.class );
         when( projectBuilder.build( any( Artifact.class ), any( ProjectBuildingRequest.class ) ) ).thenReturn( pbr );
 
-        final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
-
         final AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( ds ),
                                                                       Collections.singleton(
                                                                           artifact ), project,
-                                                                      projectBuilder, logger );
+                                                                      projectBuilder );
         DefaultAssemblyArchiverTest.setupInterpolators( configSource, project );
 
         task.addDependencySet( ds, archiver, configSource );
@@ -373,12 +363,10 @@ public class AddDependencySetsTaskTest
 
         final DependencySet dependencySet = new DependencySet();
 
-        final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
-
         final AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( dependencySet ),
                                                                       Collections.singleton(
                                                                       artifact ), project,
-                                                                      null, logger );
+                                                                      null );
 
         final Set<Artifact> result = task.resolveDependencyArtifacts( dependencySet );
 
@@ -413,10 +401,8 @@ public class AddDependencySetsTaskTest
         dependencySet.addInclude( "group:artifact" );
         dependencySet.setUseTransitiveFiltering( true );
 
-        final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
-
         final AddDependencySetsTask task =
-            new AddDependencySetsTask( Collections.singletonList( dependencySet ), artifacts, project, null, logger );
+            new AddDependencySetsTask( Collections.singletonList( dependencySet ), artifacts, project, null );
 
         final Set<Artifact> result = task.resolveDependencyArtifacts( dependencySet );
 
@@ -451,10 +437,8 @@ public class AddDependencySetsTaskTest
         dependencySet.addInclude( "group:artifact" );
         dependencySet.setUseTransitiveFiltering( false );
 
-        final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
-
         final AddDependencySetsTask task =
-            new AddDependencySetsTask( Collections.singletonList( dependencySet ), artifacts, project, null, logger );
+            new AddDependencySetsTask( Collections.singletonList( dependencySet ), artifacts, project, null );
 
         final Set<Artifact> result = task.resolveDependencyArtifacts( dependencySet );
 
@@ -501,7 +485,7 @@ public class AddDependencySetsTaskTest
         when( projectBuilder.build( any( Artifact.class ), eq( pbReq ) ) ).thenReturn( pbRes );
 
         final AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( dependencySet ),
-                                                                      artifacts, project, projectBuilder, mock( Logger.class ) );
+                                                                      artifacts, project, projectBuilder );
 
         final MavenSession session = mock( MavenSession.class );
         when( session.getProjectBuildingRequest() ).thenReturn( pbReq );
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTaskTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTaskTest.java
index 53998cd8..1080d299 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTaskTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTaskTest.java
@@ -38,8 +38,6 @@ import org.apache.maven.plugins.assembly.archive.DefaultAssemblyArchiverTest;
 import org.apache.maven.plugins.assembly.model.FileSet;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.archiver.Archiver;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
@@ -143,7 +141,6 @@ public class AddFileSetsTaskTest
 
         final AddFileSetsTask task = new AddFileSetsTask( new ArrayList<FileSet>() );
 
-        task.setLogger( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
         task.setProject( project );
 
         task.addFileSet( fs, archiver, configSource, null );
@@ -183,7 +180,6 @@ public class AddFileSetsTaskTest
         DefaultAssemblyArchiverTest.setupInterpolators( configSource, project );
 
         final AddFileSetsTask task = new AddFileSetsTask( new ArrayList<FileSet>() );
-        task.setLogger( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
         task.setProject( project );
 
         task.addFileSet( fs, archiver, configSource, archiveBaseDir );
@@ -219,8 +215,6 @@ public class AddFileSetsTaskTest
         DefaultAssemblyArchiverTest.setupInterpolators( configSource, project );
 
         final AddFileSetsTask task = new AddFileSetsTask( new ArrayList<FileSet>() );
-
-        task.setLogger( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
         task.setProject( project );
 
         task.addFileSet( fs, archiver, configSource, archiveBaseDir );
diff --git a/src/test/java/org/apache/maven/plugins/assembly/artifact/DefaultDependencyResolverTest.java b/src/test/java/org/apache/maven/plugins/assembly/artifact/DefaultDependencyResolverTest.java
index 66e8ecb8..0bcae8bf 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/artifact/DefaultDependencyResolverTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/artifact/DefaultDependencyResolverTest.java
@@ -19,6 +19,8 @@ package org.apache.maven.plugins.assembly.artifact;
  * under the License.
  */
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -32,29 +34,28 @@ import java.util.Set;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.DefaultArtifact;
 import org.apache.maven.artifact.handler.DefaultArtifactHandler;
-import org.apache.maven.artifact.repository.LegacyLocalRepositoryManager;
 import org.apache.maven.artifact.versioning.VersionRange;
-import org.apache.maven.execution.DefaultMavenExecutionRequest;
-import org.apache.maven.execution.DefaultMavenExecutionResult;
-import org.apache.maven.execution.MavenExecutionRequest;
-import org.apache.maven.execution.MavenExecutionResult;
-import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Model;
-import org.apache.maven.plugin.testing.stubs.StubArtifactRepository;
 import org.apache.maven.plugins.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugins.assembly.model.DependencySet;
 import org.apache.maven.plugins.assembly.model.ModuleBinaries;
 import org.apache.maven.plugins.assembly.model.ModuleSet;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.repository.internal.MavenRepositorySystemSession;
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusTestCase;
+import org.junit.Test;
 
 public class DefaultDependencyResolverTest
-    extends PlexusTestCase
+        extends PlexusTestCase
 {
 
     private DefaultDependencyResolver resolver;
 
+    protected void customizeContainerConfiguration( ContainerConfiguration configuration) {
+        configuration.setClassPathScanning( PlexusConstants.SCANNING_CACHE ).setAutoWiring( true );
+    }
+
     @Override
     public void setUp()
         throws Exception
@@ -63,23 +64,8 @@ public class DefaultDependencyResolverTest
 
         resolver = (DefaultDependencyResolver) lookup( DependencyResolver.class );
     }
-    
-    protected MavenSession newMavenSession( MavenProject project )
-    {
-        MavenExecutionRequest request = new DefaultMavenExecutionRequest();
-        MavenExecutionResult result = new DefaultMavenExecutionResult();
-
-        MavenRepositorySystemSession repoSession = new MavenRepositorySystemSession();
-        
-        repoSession.setLocalRepositoryManager( LegacyLocalRepositoryManager.wrap( new StubArtifactRepository( "target/local-repo" ),
-                                                                                  null ) );
-        MavenSession session = new MavenSession( getContainer(), repoSession, request, result );
-        session.setCurrentProject( project );
-        session.setProjects( Arrays.asList( project ) );
-        return session;
-    }
-
 
+    @Test
     public void test_getDependencySetResolutionRequirements_transitive()
         throws DependencyResolutionException
     {
@@ -101,6 +87,7 @@ public class DefaultDependencyResolverTest
         assertEquals( artifacts, info.getArtifacts() );
     }
 
+    @Test
     public void test_getDependencySetResolutionRequirements_nonTransitive()
         throws DependencyResolutionException
     {
@@ -122,6 +109,7 @@ public class DefaultDependencyResolverTest
         assertEquals( dependencyArtifacts, info.getArtifacts() );
     }
 
+    @Test
     public void test_getModuleSetResolutionRequirements_withoutBinaries()
         throws DependencyResolutionException
     {
@@ -144,6 +132,7 @@ public class DefaultDependencyResolverTest
         assertTrue( info.getArtifacts().isEmpty() );
     }
 
+    @Test
     public void test_getModuleSetResolutionRequirements_includeDeps()
         throws DependencyResolutionException
     {
diff --git a/src/test/java/org/apache/maven/plugins/assembly/artifact/ResolutionManagementInfoTest.java b/src/test/java/org/apache/maven/plugins/assembly/artifact/ResolutionManagementInfoTest.java
index 9f682113..c2c0bc31 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/artifact/ResolutionManagementInfoTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/artifact/ResolutionManagementInfoTest.java
@@ -19,26 +19,22 @@ package org.apache.maven.plugins.assembly.artifact;
  * under the License.
  */
 
-import junit.framework.TestCase;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.DefaultArtifact;
 import org.apache.maven.artifact.handler.DefaultArtifactHandler;
 import org.apache.maven.artifact.versioning.VersionRange;
+import org.junit.Test;
 
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 
+import static org.junit.Assert.assertEquals;
+
 public class ResolutionManagementInfoTest
-    extends TestCase
 {
 
-    public void testName()
-        throws Exception
-    {
-
-    }
-
+    @Test
     public void testAddSingleArtifactWithReplacemen()
         throws Exception
     {
@@ -55,6 +51,7 @@ public class ResolutionManagementInfoTest
         assertEquals( "compile", next.getScope() );
     }
 
+    @Test
     public void testAddMultiArtifactWithReplacemen()
         throws Exception
     {
diff --git a/src/test/java/org/apache/maven/plugins/assembly/filter/ComponentsXmlArchiverFileFilterTest.java b/src/test/java/org/apache/maven/plugins/assembly/filter/ComponentsXmlArchiverFileFilterTest.java
index ea8ea078..f96dea57 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/filter/ComponentsXmlArchiverFileFilterTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/filter/ComponentsXmlArchiverFileFilterTest.java
@@ -32,17 +32,15 @@ import org.codehaus.plexus.components.io.resources.PlexusIoResource;
 import org.codehaus.plexus.components.io.resources.PlexusIoResourceCollection;
 import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.jdom.Document;
-import org.jdom.Text;
-import org.jdom.input.SAXBuilder;
-import org.jdom.xpath.XPath;
+import org.jdom2.Document;
+import org.jdom2.Text;
+import org.jdom2.input.SAXBuilder;
+import org.jdom2.xpath.XPath;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 
-import javax.annotation.Nonnull;
-
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -383,32 +381,32 @@ public class ComponentsXmlArchiverFileFilterTest
 
         private String destFileName;
 
-        public void addDirectory( final @Nonnull File directory )
+        public void addDirectory( final File directory )
             throws ArchiverException
         {
             throw new UnsupportedOperationException( "not supported" );
         }
 
-        public void addDirectory( final @Nonnull File directory, final String prefix )
+        public void addDirectory( final File directory, final String prefix )
             throws ArchiverException
         {
             throw new UnsupportedOperationException( "not supported" );
         }
 
-        public void addDirectory( final @Nonnull File directory, final String[] includes, final String[] excludes )
+        public void addDirectory( final File directory, final String[] includes, final String[] excludes )
             throws ArchiverException
         {
             throw new UnsupportedOperationException( "not supported" );
         }
 
-        public void addDirectory( final @Nonnull File directory, final String prefix, final String[] includes,
+        public void addDirectory( final File directory, final String prefix, final String[] includes,
                                   final String[] excludes )
             throws ArchiverException
         {
             throw new UnsupportedOperationException( "not supported" );
         }
 
-        public void addFile( final @Nonnull File inputFile, final @Nonnull String destFileName )
+        public void addFile( final File inputFile, final String destFileName )
             throws ArchiverException
         {
             this.inputFile = inputFile;
@@ -425,7 +423,7 @@ public class ComponentsXmlArchiverFileFilterTest
             return destFileName;
         }
 
-        public void addFile( final @Nonnull File inputFile, final @Nonnull String destFileName, final int permissions )
+        public void addFile( final File inputFile, final String destFileName, final int permissions )
             throws ArchiverException
         {
             throw new UnsupportedOperationException( "not supported" );
@@ -494,13 +492,13 @@ public class ComponentsXmlArchiverFileFilterTest
             throw new UnsupportedOperationException( "not supported" );
         }
 
-        public void addArchivedFileSet( final @Nonnull File archiveFile )
+        public void addArchivedFileSet( final File archiveFile )
             throws ArchiverException
         {
             throw new UnsupportedOperationException( "not supported" );
         }
 
-        public void addArchivedFileSet( final @Nonnull File archiveFile, final String prefix )
+        public void addArchivedFileSet( final File archiveFile, final String prefix )
             throws ArchiverException
         {
             throw new UnsupportedOperationException( "not supported" );
@@ -512,7 +510,7 @@ public class ComponentsXmlArchiverFileFilterTest
             throw new UnsupportedOperationException( "not supported" );
         }
 
-        public void addArchivedFileSet( final @Nonnull File archiveFile, final String prefix, final String[] includes,
+        public void addArchivedFileSet( final File archiveFile, final String prefix, final String[] includes,
                                         final String[] excludes )
             throws ArchiverException
         {
@@ -544,7 +542,7 @@ public class ComponentsXmlArchiverFileFilterTest
             throw new UnsupportedOperationException( "not supported" );
         }
 
-        public void addFileSet( final @Nonnull FileSet fileSet )
+        public void addFileSet( final FileSet fileSet )
             throws ArchiverException
         {
             throw new UnsupportedOperationException( "not supported" );
@@ -562,9 +560,7 @@ public class ComponentsXmlArchiverFileFilterTest
             throw new UnsupportedOperationException( "not supported" );
         }
 
-        public
-        @Nonnull
-        ResourceIterator getResources()
+        public ResourceIterator getResources()
             throws ArchiverException
         {
             return new ResourceIterator()
diff --git a/src/test/java/org/apache/maven/plugins/assembly/format/ReaderFormatterTest.java b/src/test/java/org/apache/maven/plugins/assembly/format/ReaderFormatterTest.java
index c21a1e8e..bc3f7fc9 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/format/ReaderFormatterTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/format/ReaderFormatterTest.java
@@ -39,6 +39,7 @@ import java.util.Set;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.maven.model.Model;
+import org.apache.maven.plugins.assembly.internal.PlexusLoggingHelper;
 import org.apache.maven.plugins.assembly.testutils.PojoConfigSource;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.filtering.DefaultMavenReaderFilter;
@@ -47,9 +48,9 @@ import org.apache.maven.shared.filtering.MavenReaderFilterRequest;
 import org.codehaus.plexus.archiver.resources.PlexusIoVirtualFileResource;
 import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
 import org.codehaus.plexus.components.io.resources.PlexusIoResource;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
+import org.slf4j.LoggerFactory;
 
 
 public class ReaderFormatterTest
@@ -157,7 +158,7 @@ public class ReaderFormatterTest
         final PojoConfigSource cfg = new PojoConfigSource();
         cfg.setEncoding( "UTF-8" );
         DefaultMavenReaderFilter mavenReaderFilter = new DefaultMavenReaderFilter();
-        mavenReaderFilter.enableLogging( new ConsoleLogger( 2, "fud" ) );
+        mavenReaderFilter.enableLogging( PlexusLoggingHelper.wrap( LoggerFactory.getLogger( getClass() ) ) );
         cfg.setMavenReaderFilter( mavenReaderFilter );
         cfg.setEscapeString( null );
         cfg.setMavenProject( createBasicMavenProject() );
diff --git a/src/test/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReaderTest.java b/src/test/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReaderTest.java
index 137c6f1c..ccc1a771 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReaderTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReaderTest.java
@@ -59,14 +59,13 @@ import org.apache.maven.plugins.assembly.model.io.xpp3.ComponentXpp3Writer;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
 import org.codehaus.plexus.interpolation.fixed.InterpolationState;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 import org.junit.runner.RunWith;
 import org.mockito.junit.MockitoJUnitRunner;
+import org.slf4j.LoggerFactory;
 
 @RunWith( MockitoJUnitRunner.class )
 public class DefaultAssemblyReaderTest
@@ -355,7 +354,7 @@ public class DefaultAssemblyReaderTest
         InterpolationState is = new InterpolationState();
         ComponentXpp3Reader.ContentTransformer componentIp =
             AssemblyInterpolator.componentInterpolator( FixedStringSearchInterpolator.create(), is,
-                                                        new ConsoleLogger( Logger.LEVEL_DEBUG, "console" ) );
+                    LoggerFactory.getLogger( getClass() ) );
 
         new DefaultAssemblyReader().mergeComponentsWithMainAssembly( assembly, null, configSource, componentIp );
 
diff --git a/src/test/java/org/apache/maven/plugins/assembly/io/PrefixedClasspathLocatorStrategyTest.java b/src/test/java/org/apache/maven/plugins/assembly/io/PrefixedClasspathLocatorStrategyTest.java
index 22507b7e..a446471c 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/io/PrefixedClasspathLocatorStrategyTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/io/PrefixedClasspathLocatorStrategyTest.java
@@ -19,17 +19,20 @@ package org.apache.maven.plugins.assembly.io;
  * under the License.
  */
 
-import junit.framework.TestCase;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 
 /**
  * @author Benjamin Bentmann
  */
 public class PrefixedClasspathLocatorStrategyTest
-    extends TestCase
 {
     
     private MessageHolder mh = new DefaultMessageHolder();
 
+    @Test
     public void testResolvePrefixWithLeadingSlashAndWithTrailingSlash()
     {
         LocatorStrategy ls = new PrefixedClasspathLocatorStrategy( "/assemblies/" );
@@ -39,6 +42,7 @@ public class PrefixedClasspathLocatorStrategyTest
         assertEquals( 0, mh.size() );
     }
 
+    @Test
     public void testResolvePrefixWithLeadingSlashAndWithoutTrailingSlash()
     {
         LocatorStrategy ls = new PrefixedClasspathLocatorStrategy( "/assemblies" );
@@ -48,6 +52,7 @@ public class PrefixedClasspathLocatorStrategyTest
         assertEquals( 0, mh.size() );
     }
 
+    @Test
     public void testResolvePrefixWithoutLeadingSlashAndWithTrailingSlash()
     {
         LocatorStrategy ls = new PrefixedClasspathLocatorStrategy( "assemblies/" );
@@ -57,6 +62,7 @@ public class PrefixedClasspathLocatorStrategyTest
         assertEquals( 0, mh.size() );
     }
 
+    @Test
     public void testResolvePrefixWithoutLeadingSlashAndWithoutTrailingSlash()
     {
         LocatorStrategy ls = new PrefixedClasspathLocatorStrategy( "assemblies" );
diff --git a/src/test/java/org/apache/maven/plugins/assembly/testutils/PojoConfigSource.java b/src/test/java/org/apache/maven/plugins/assembly/testutils/PojoConfigSource.java
index 93259558..6c67d4eb 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/testutils/PojoConfigSource.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/testutils/PojoConfigSource.java
@@ -22,8 +22,6 @@ import java.io.File;
 import java.util.List;
 import java.util.Properties;
 
-import javax.annotation.Nonnull;
-
 import org.apache.maven.archiver.MavenArchiveConfiguration;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.execution.MavenSession;
@@ -476,24 +474,21 @@ public class PojoConfigSource
         this.remoteRepository = remoteRepository;
     }
 
-    @Nonnull
     public FixedStringSearchInterpolator getRepositoryInterpolator()
     {
         return rootInterpolator;
     }
 
-    @Nonnull
     public FixedStringSearchInterpolator getCommandLinePropsInterpolator()
     {
         return environmentInterpolator;
     }
 
-    public void setRootInterpolator( @Nonnull FixedStringSearchInterpolator rootInterpolator )
+    public void setRootInterpolator( FixedStringSearchInterpolator rootInterpolator )
     {
         this.rootInterpolator = rootInterpolator;
     }
 
-    @Nonnull
     public FixedStringSearchInterpolator getEnvInterpolator()
     {
         return envInterpolator;
@@ -504,7 +499,6 @@ public class PojoConfigSource
         this.envInterpolator = envInterpolator;
     }
 
-    @Nonnull
     public FixedStringSearchInterpolator getMainProjectInterpolator()
     {
         return mainProjectInterpolator;
@@ -516,7 +510,7 @@ public class PojoConfigSource
         this.mainProjectInterpolator = mainProjectInterpolator;
     }
 
-    public void setEnvironmentInterpolator( @Nonnull FixedStringSearchInterpolator environmentInterpolator )
+    public void setEnvironmentInterpolator( FixedStringSearchInterpolator environmentInterpolator )
     {
         this.environmentInterpolator = environmentInterpolator;
     }
diff --git a/src/test/java/org/apache/maven/plugins/assembly/utils/FilterUtilsTest.java b/src/test/java/org/apache/maven/plugins/assembly/utils/FilterUtilsTest.java
index 986e0929..281d580b 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/utils/FilterUtilsTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/utils/FilterUtilsTest.java
@@ -37,24 +37,15 @@ import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.plugins.assembly.InvalidAssemblerConfigurationException;
 import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.hamcrest.Matchers;
-import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.junit.MockitoJUnitRunner;
+import org.slf4j.LoggerFactory;
 
 @RunWith( MockitoJUnitRunner.class )
 public class FilterUtilsTest
 {
-    private Logger logger;
-
-    @Before
-    public void setUp()
-    {
-        logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
-    }
 
     @Test
     public void testFilterArtifacts_ShouldThrowExceptionUsingStrictModeWithUnmatchedInclude()
@@ -62,8 +53,8 @@ public class FilterUtilsTest
         final Artifact artifact = mock( Artifact.class );
         when( artifact.getGroupId() ).thenReturn( "group" );
         when( artifact.getArtifactId() ).thenReturn( "artifact" );
-        when( artifact.getId() ).thenReturn( "group:artifact:type:version" );
-        when( artifact.getDependencyConflictId() ).thenReturn( "group:artifact:type" );
+        when( artifact.getBaseVersion() ).thenReturn( "version" );
+        when( artifact.getType() ).thenReturn( "jar" );
 
         final List<String> includes = new ArrayList<>();
 
@@ -76,7 +67,7 @@ public class FilterUtilsTest
 
         try
         {
-            FilterUtils.filterArtifacts( artifacts, includes, excludes, true, false, logger );
+            FilterUtils.filterArtifacts( artifacts, includes, excludes, true, false, LoggerFactory.getLogger( getClass() ) );
 
             fail( "Should fail because of unmatched include." );
         }
@@ -226,7 +217,8 @@ public class FilterUtilsTest
         when( artifact.getDependencyConflictId() ).thenReturn( groupId + ":" + artifactId + ":jar" );
         when( artifact.getGroupId() ).thenReturn( groupId );
         when( artifact.getArtifactId() ).thenReturn( artifactId );
-        when( artifact.getId() ).thenReturn( groupId + ":" + artifactId + ":version:null:jar" );
+        when( artifact.getBaseVersion() ).thenReturn( "version" );
+        when( artifact.getType() ).thenReturn( "jar" );
 
         if ( depTrail != null )
         {
@@ -255,7 +247,7 @@ public class FilterUtilsTest
 
         final Set<Artifact> artifacts = new HashSet<>( Collections.singleton( artifact ) );
 
-        FilterUtils.filterArtifacts( artifacts, inclusions, exclusions, false, depTrail != null, logger,
+        FilterUtils.filterArtifacts( artifacts, inclusions, exclusions, false, depTrail != null, LoggerFactory.getLogger( getClass() ),
                                      additionalFilter );
 
         if ( verifyInclusion )
@@ -292,10 +284,10 @@ public class FilterUtilsTest
         final Artifact artifact = mock( Artifact.class );
 
         // this is always enabled, for verification purposes.
-        when( artifact.getDependencyConflictId() ).thenReturn( groupId + ":" + artifactId + ":jar" );
         when( artifact.getGroupId() ).thenReturn( groupId );
         when( artifact.getArtifactId() ).thenReturn( artifactId );
-        when( artifact.getId() ).thenReturn( groupId + ":" + artifactId + ":version:null:jar" );
+        when( artifact.getBaseVersion() ).thenReturn( "version" );
+        when( artifact.getType() ).thenReturn( "jar" );
 
         if ( depTrail != null )
         {
@@ -329,10 +321,8 @@ public class FilterUtilsTest
             exclusions = Collections.emptyList();
         }
 
-        final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
-
         Set<MavenProject> result =
-            FilterUtils.filterProjects( projects, inclusions, exclusions, depTrail != null, logger );
+            FilterUtils.filterProjects( projects, inclusions, exclusions, depTrail != null, LoggerFactory.getLogger( getClass() ) );
         
         if ( verifyInclusion )
         {
diff --git a/src/test/java/org/apache/maven/plugins/assembly/utils/LinuxLineFeedInputStreamTest.java b/src/test/java/org/apache/maven/plugins/assembly/utils/LinuxLineFeedInputStreamTest.java
index 02a90d2e..1bc7239f 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/utils/LinuxLineFeedInputStreamTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/utils/LinuxLineFeedInputStreamTest.java
@@ -19,35 +19,39 @@ package org.apache.maven.plugins.assembly.utils;
  * under the License.
  */
 
-import junit.framework.TestCase;
-
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 
 import org.codehaus.plexus.util.IOUtil;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
 
 public class LinuxLineFeedInputStreamTest
-    extends TestCase
 {
 
+    @Test
     public void testSimpleString()
         throws Exception
     {
         assertEquals( "abc\n", roundtrip( "abc" ) );
     }
 
+    @Test
     public void testInTheMiddleOfTheLine()
         throws Exception
     {
         assertEquals( "a\nbc\n", roundtrip( "a\r\nbc" ) );
     }
 
+    @Test
     public void testCrOnly()
         throws Exception
     {
         assertEquals( "a\nb\n", roundtrip( "a\rb" ) );
     }
 
+    @Test
     public void testCrAtEnd()
         throws Exception
     {
@@ -55,18 +59,21 @@ public class LinuxLineFeedInputStreamTest
     }
 
 
+    @Test
     public void testMultipleBlankLines()
         throws Exception
     {
         assertEquals( "a\n\nbc\n", roundtrip( "a\r\n\r\nbc" ) );
     }
 
+    @Test
     public void testTwoLinesAtEnd()
         throws Exception
     {
         assertEquals( "a\n\n", roundtrip( "a\r\n\r\n" ) );
     }
 
+    @Test
     public void testRetainLineFeed()
         throws Exception
     {
diff --git a/src/test/java/org/apache/maven/plugins/assembly/utils/ProjectUtilsTest.java b/src/test/java/org/apache/maven/plugins/assembly/utils/ProjectUtilsTest.java
index bd8aa33a..bf2bff64 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/utils/ProjectUtilsTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/utils/ProjectUtilsTest.java
@@ -22,8 +22,9 @@ package org.apache.maven.plugins.assembly.utils;
 import junit.framework.TestCase;
 import org.apache.maven.model.Model;
 import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
@@ -33,9 +34,14 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
 public class ProjectUtilsTest
-    extends TestCase
 {
+    private final Logger logger = LoggerFactory.getLogger( getClass() );
 
     private MavenProject createTestProject( final String artifactId, final String groupId, final String version )
     {
@@ -47,6 +53,7 @@ public class ProjectUtilsTest
         return new MavenProject( model );
     }
 
+    @Test
     public void testGetProjectModules_ShouldIncludeDirectModuleOfMasterProject()
         throws IOException
     {
@@ -66,26 +73,27 @@ public class ProjectUtilsTest
         projects.add( module );
 
         final Set<MavenProject> result =
-            ProjectUtils.getProjectModules( master, projects, true, new ConsoleLogger( Logger.LEVEL_INFO, "test" ) );
+            ProjectUtils.getProjectModules( master, projects, true, logger );
 
         assertNotNull( result );
         assertEquals( 1, result.size() );
         assertEquals( module.getId(), result.iterator().next().getId() );
     }
 
+    @Test
     public void testGetProjectModules_ShouldNotIncludeMasterProject()
         throws IOException
     {
         final MavenProject master = createTestProject( "test", "testGroup", "1.0" );
 
         final Set<MavenProject> result =
-            ProjectUtils.getProjectModules( master, Collections.singletonList( master ), true,
-                                            new ConsoleLogger( Logger.LEVEL_INFO, "test" ) );
+            ProjectUtils.getProjectModules( master, Collections.singletonList( master ), true, logger );
 
         assertNotNull( result );
         assertTrue( result.isEmpty() );
     }
 
+    @Test
     public void testGetProjectModules_ShouldIncludeInDirectModuleOfMasterWhenIncludeSubModulesIsTrue()
         throws IOException
     {
@@ -112,7 +120,7 @@ public class ProjectUtilsTest
         projects.add( subModule );
 
         final Set<MavenProject> result =
-            ProjectUtils.getProjectModules( master, projects, true, new ConsoleLogger( Logger.LEVEL_INFO, "test" ) );
+            ProjectUtils.getProjectModules( master, projects, true, logger );
 
         assertNotNull( result );
         assertEquals( 2, result.size() );
@@ -123,6 +131,7 @@ public class ProjectUtilsTest
         verifyProjectsPresent( verify, result );
     }
 
+    @Test
     public void testGetProjectModules_ShouldExcludeInDirectModuleOfMasterWhenIncludeSubModulesIsFalse()
         throws IOException
     {
@@ -149,7 +158,7 @@ public class ProjectUtilsTest
         projects.add( subModule );
 
         final Set<MavenProject> result =
-            ProjectUtils.getProjectModules( master, projects, false, new ConsoleLogger( Logger.LEVEL_INFO, "test" ) );
+            ProjectUtils.getProjectModules( master, projects, false, logger );
 
         assertNotNull( result );
         assertEquals( 1, result.size() );
@@ -161,6 +170,7 @@ public class ProjectUtilsTest
         verifyProjectsPresent( verify, result );
     }
 
+    @Test
     public void testGetProjectModules_ShouldExcludeNonModuleOfMasterProject()
         throws IOException
     {
@@ -178,7 +188,7 @@ public class ProjectUtilsTest
         projects.add( other );
 
         final Set<MavenProject> result =
-            ProjectUtils.getProjectModules( master, projects, true, new ConsoleLogger( Logger.LEVEL_INFO, "test" ) );
+            ProjectUtils.getProjectModules( master, projects, true, logger );
 
         assertNotNull( result );
         assertTrue( result.isEmpty() );
diff --git a/src/test/java/org/apache/maven/plugins/assembly/utils/TypeConversionUtilsTest.java b/src/test/java/org/apache/maven/plugins/assembly/utils/TypeConversionUtilsTest.java
index 8b4976d2..78ea9013 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/utils/TypeConversionUtilsTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/utils/TypeConversionUtilsTest.java
@@ -19,43 +19,51 @@ package org.apache.maven.plugins.assembly.utils;
  * under the License.
  */
 
-import junit.framework.TestCase;
-import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
-import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
-
-import java.io.ByteArrayOutputStream;
-import java.io.PrintStream;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
+import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
 public class TypeConversionUtilsTest
-    extends TestCase
 {
+    private final Logger logger = LoggerFactory.getLogger( getClass() );
 
+    @Test
     public void testModeToInt_InterpretAsOctalWithoutLeadingZero()
-        throws AssemblyFormattingException
+            throws AssemblyFormattingException
     {
         final int check = Integer.decode( "0777" );
-        final int test = TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+        final int test = TypeConversionUtils.modeToInt( "777", logger );
 
         assertEquals( check, test );
     }
 
+    @Test
     public void testModeToInt_InterpretValuesWithLeadingZeroAsOctal()
-        throws AssemblyFormattingException
+            throws AssemblyFormattingException
     {
         final int check = Integer.decode( "0777" );
-        final int test = TypeConversionUtils.modeToInt( "0777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+        final int test = TypeConversionUtils.modeToInt( "0777", logger );
 
         assertEquals( check, test );
     }
 
+    @Test
     public void testModeToInt_FailOnInvalidOctalValue()
     {
         try
         {
-            TypeConversionUtils.modeToInt( "493", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+            TypeConversionUtils.modeToInt( "493", logger );
 
             fail( "'493' is an invalid mode and should trigger an exception." );
         }
@@ -65,6 +73,7 @@ public class TypeConversionUtilsTest
         }
     }
 
+    @Test
     public void testVerifyModeSanity_WarnOnNonsensicalOctalValue_002()
     {
         final List<String> messages = new ArrayList<>( 2 );
@@ -74,6 +83,7 @@ public class TypeConversionUtilsTest
         checkFileModeSanity( "002", false, messages );
     }
 
+    @Test
     public void testVerifyModeSanity_WarnOnNonsensicalOctalValue_020()
     {
         final List<String> messages = new ArrayList<>( 1 );
@@ -82,6 +92,7 @@ public class TypeConversionUtilsTest
         checkFileModeSanity( "020", false, messages );
     }
 
+    @Test
     public void testVerifyModeSanity_ReturnTrueForValidOctalValue_775()
     {
         checkFileModeSanity( "775", true, null );
@@ -90,30 +101,17 @@ public class TypeConversionUtilsTest
     private void checkFileModeSanity( final String mode, final boolean isSane,
                                       final List<String> messagesToCheckIfInsane )
     {
-        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        final PrintStream ps = new PrintStream( baos );
-
-        final PrintStream oldOut = System.out;
-        final PrintStream oldErr = System.err;
-
-        try
-        {
-            System.setOut( ps );
-            System.setErr( ps );
-
-            assertEquals( "Mode sanity should be: " + isSane, isSane,
-                          TypeConversionUtils.verifyModeSanity( Integer.parseInt( mode, 8 ),
-                                                                new ConsoleLogger( Logger.LEVEL_WARN, "test" ) ) );
-        }
-        finally
-        {
-            System.setOut( oldOut );
-            System.setErr( oldErr );
-        }
+        Logger logger = mock( Logger.class );
+        assertEquals( "Mode sanity should be: " + isSane, isSane,
+                TypeConversionUtils.verifyModeSanity( Integer.parseInt( mode, 8 ),
+                        logger ) );
 
         if ( !isSane && messagesToCheckIfInsane != null && !messagesToCheckIfInsane.isEmpty() )
         {
-            final String message = new String( baos.toByteArray() );
+            ArgumentCaptor<String> warnings = ArgumentCaptor.forClass( String.class );
+            verify( logger ).warn( warnings.capture() );
+            System.out.println( warnings.getAllValues() );
+            final String message = warnings.getAllValues().toString();
 
             for ( final String checkMessage : messagesToCheckIfInsane )
             {
diff --git a/src/test/java/org/apache/maven/plugins/assembly/utils/WindowsLineFeedInputStreamTest.java b/src/test/java/org/apache/maven/plugins/assembly/utils/WindowsLineFeedInputStreamTest.java
index a1f15c6c..8eed572d 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/utils/WindowsLineFeedInputStreamTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/utils/WindowsLineFeedInputStreamTest.java
@@ -19,41 +19,46 @@ package org.apache.maven.plugins.assembly.utils;
  * under the License.
  */
 
-import junit.framework.TestCase;
-
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 
 import org.codehaus.plexus.util.IOUtil;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
 
 public class WindowsLineFeedInputStreamTest
-    extends TestCase
 {
 
+    @Test
     public void testSimpleString()
         throws Exception
     {
         assertEquals( "abc\r\n", roundtrip( "abc" ) );
     }
 
+    @Test
     public void testInTheMiddleOfTheLine()
         throws Exception
     {
         assertEquals( "a\r\nbc\r\n", roundtrip( "a\r\nbc" ) );
     }
 
+    @Test
     public void testMultipleBlankLines()
         throws Exception
     {
         assertEquals( "a\r\n\r\nbc\r\n", roundtrip( "a\r\n\r\nbc" ) );
     }
 
+    @Test
     public void testTwoLinesAtEnd()
         throws Exception
     {
         assertEquals( "a\r\n\r\n", roundtrip( "a\r\n\r\n" ) );
     }
 
+    @Test
     public void testLinuxLinefeeds()
         throws Exception
     {
@@ -62,12 +67,14 @@ public class WindowsLineFeedInputStreamTest
     }
 
 
+    @Test
     public void testMalformed()
         throws Exception
     {
         assertEquals( "a\rbc", roundtrip( "a\rbc", false ) );
     }
 
+    @Test
     public void testRetainLineFeed()
         throws Exception
     {
diff --git a/src/test/resources/simplelogger.properties b/src/test/resources/simplelogger.properties
new file mode 100644
index 00000000..30da08c3
--- /dev/null
+++ b/src/test/resources/simplelogger.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+org.slf4j.simpleLogger.defaultLogLevel=DEBUG