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/04/26 09:51:05 UTC

[maven-assembly-plugin] 01/01: [MASSEMBLY-954] Update plugin to Maven 3.2.5

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

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

commit ed77631b17160df6512218f484c0a9bef28b437e
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Tue Apr 26 11:49:47 2022 +0200

    [MASSEMBLY-954] Update plugin to Maven 3.2.5
    
    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.
---
 pom.xml                                            | 242 ++++++++++++---------
 .../assembly/AssemblerConfigurationSource.java     |   6 -
 .../plugins/assembly/archive/AssemblyArchiver.java |   2 -
 .../assembly/archive/DefaultAssemblyArchiver.java  |  73 +++----
 .../archive/archiver/AssemblyProxyArchiver.java    |  42 ++--
 .../archive/phase/AssemblyArchiverPhase.java       |   2 -
 .../archive/phase/DependencySetAssemblyPhase.java  |  55 ++---
 .../archive/phase/FileItemAssemblyPhase.java       |  14 +-
 .../archive/phase/FileSetAssemblyPhase.java        |  16 +-
 .../archive/phase/ModuleSetAssemblyPhase.java      |  66 +++---
 .../archive/phase/RepositoryAssemblyPhase.java     |  28 +--
 .../assembly/archive/task/AddArtifactTask.java     |  28 ++-
 .../archive/task/AddDependencySetsTask.java        |  49 ++---
 .../assembly/archive/task/AddFileSetsTask.java     |  37 +---
 .../artifact/DefaultDependencyResolver.java        |  28 ++-
 .../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 +-
 .../ComponentSupport.java}                         |  18 +-
 .../PlexusLoggingHelper.java}                      |  21 +-
 .../SarPlexusIoResourceCollection.java}            |  25 ++-
 .../SarUnArchiverProvider.java}                    |  23 +-
 .../interpolation/AssemblyInterpolator.java        |   5 +-
 .../plugins/assembly/io/DefaultAssemblyReader.java |  29 +--
 .../assembly/mojos/AbstractAssemblyMojo.java       |  13 +-
 .../plugins/assembly/mojos/SingleAssemblyMojo.java |   3 +-
 .../repository/DefaultRepositoryAssembler.java     |  41 ++--
 .../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 ++
 61 files changed, 692 insertions(+), 882 deletions(-)

diff --git a/pom.xml b/pom.xml
index 3a811111..68a94404 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,11 @@ 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>
+    <sisuVersion>0.3.5</sisuVersion>
+    <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 +90,67 @@ 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>org.sonatype.sisu</groupId>
-      <artifactId>sisu-inject-plexus</artifactId>
-      <version>1.4.2</version>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+      <version>1</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.eclipse.sisu</groupId>
+      <artifactId>org.eclipse.sisu.plexus</artifactId>
+      <version>${sisuVersion}</version>
+      <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 +158,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 +188,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 +198,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 +206,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 +263,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,58 +277,25 @@ 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.eclipse.sisu</groupId>
+          <artifactId>sisu-maven-plugin</artifactId>
+          <version>${sisuVersion}</version>
+          <executions>
+            <execution>
+              <id>index-project</id>
+              <goals>
+                <goal>main-index</goal>
+                <goal>test-index</goal>
+              </goals>
+            </execution>
+          </executions>
+        </plugin>
         <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>
@@ -342,6 +342,44 @@ 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>
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..01c91832 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,13 @@ 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.ComponentSupport;
+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 +52,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,10 +60,6 @@ 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;
@@ -78,6 +76,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 +87,31 @@ import java.util.Map;
  *
  *
  */
-@Component( role = AssemblyArchiver.class, instantiationStrategy = "per-lookup" )
+@Named
 public class DefaultAssemblyArchiver
-    extends AbstractLogEnabled
-    implements AssemblyArchiver, Contextualizable
+        extends ComponentSupport
+        implements AssemblyArchiver
 {
 
-    @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()
@@ -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( getLogger() ) );
         }
 
         archiver.setUseJvmChmod( configSource.isUpdateOnly() );
@@ -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( getLogger() ) );
 
         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..15a39ed4 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
@@ -20,6 +20,7 @@ package org.apache.maven.plugins.assembly.archive.archiver;
  */
 
 import org.apache.maven.plugins.assembly.filter.ContainerDescriptorHandler;
+import org.apache.maven.plugins.assembly.internal.ComponentSupport;
 import org.codehaus.plexus.archiver.ArchiveEntry;
 import org.codehaus.plexus.archiver.ArchiveFinalizer;
 import org.codehaus.plexus.archiver.ArchivedFileSet;
@@ -34,9 +35,7 @@ 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 javax.annotation.Nonnull;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -61,15 +60,14 @@ import java.util.Map;
  *
  */
 public class AssemblyProxyArchiver
-    implements Archiver
+        extends ComponentSupport
+        implements Archiver
 {
 
     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 ( getLogger().isDebugEnabled() )
         {
-            logger.debug( message );
+            getLogger().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 );
+            getLogger().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(
+            getLogger().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..473729ed 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;
@@ -27,59 +31,42 @@ import org.apache.maven.plugins.assembly.archive.task.AddDependencySetsTask;
 import org.apache.maven.plugins.assembly.artifact.DependencyResolutionException;
 import org.apache.maven.plugins.assembly.artifact.DependencyResolver;
 import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
+import org.apache.maven.plugins.assembly.internal.ComponentSupport;
 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" )
+@Singleton
+@Named( "dependency-sets" )
 public class DependencySetAssemblyPhase
-    extends AbstractLogEnabled
-    implements AssemblyArchiverPhase, PhaseOrder
+        extends ComponentSupport
+        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 +85,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..291b05af 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;
@@ -36,6 +39,7 @@ import org.apache.maven.plugins.assembly.InvalidAssemblerConfigurationException;
 import org.apache.maven.plugins.assembly.archive.ArchiveCreationException;
 import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
 import org.apache.maven.plugins.assembly.format.ReaderFormatter;
+import org.apache.maven.plugins.assembly.internal.ComponentSupport;
 import org.apache.maven.plugins.assembly.model.Assembly;
 import org.apache.maven.plugins.assembly.model.FileItem;
 import org.apache.maven.plugins.assembly.utils.AssemblyFileUtils;
@@ -43,24 +47,22 @@ 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;
 
 /**
  * Handles the top-level &lt;files/&gt; section of the assembly descriptor.
  *
  *
  */
-@Component( role = AssemblyArchiverPhase.class, hint = "file-items" )
+@Singleton
+@Named( "file-items" )
 public class FileItemAssemblyPhase
-    extends AbstractLogEnabled
-    implements AssemblyArchiverPhase, PhaseOrder
+        extends ComponentSupport
+        implements AssemblyArchiverPhase, PhaseOrder
 {
-
     /**
      * {@inheritDoc}
      */
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..5ad09cc1 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
@@ -31,6 +31,7 @@ import org.apache.maven.plugins.assembly.artifact.DependencyResolver;
 import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
 import org.apache.maven.plugins.assembly.functions.MavenProjects;
 import org.apache.maven.plugins.assembly.functions.ModuleSetConsumer;
+import org.apache.maven.plugins.assembly.internal.ComponentSupport;
 import org.apache.maven.plugins.assembly.model.Assemblies;
 import org.apache.maven.plugins.assembly.model.Assembly;
 import org.apache.maven.plugins.assembly.model.DependencySet;
@@ -46,14 +47,13 @@ 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 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,10 +73,11 @@ import static org.apache.maven.plugins.assembly.functions.MavenProjects.log;
  *
  *
  */
-@Component( role = AssemblyArchiverPhase.class, hint = "module-sets" )
+@Singleton
+@Named( "module-sets" )
 public class ModuleSetAssemblyPhase
-    extends AbstractLogEnabled
-    implements AssemblyArchiverPhase, PhaseOrder
+        extends ComponentSupport
+        implements AssemblyArchiverPhase, PhaseOrder
 {
 
     // TODO: Remove if using something like commons-lang instead.
@@ -85,33 +87,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,
+                                   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 +125,6 @@ public class ModuleSetAssemblyPhase
         return depSets;
     }
 
-    @Nonnull
     public static Set<MavenProject> getModuleProjects( final ModuleSet moduleSet,
                                                        final AssemblerConfigurationSource configSource,
                                                        final Logger logger )
@@ -331,8 +318,7 @@ public class ModuleSetAssemblyPhase
                 {
                     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 ) );
@@ -377,7 +363,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() );
@@ -457,7 +443,6 @@ public class ModuleSetAssemblyPhase
 
             task.setProject( moduleProject );
             task.setModuleProject( moduleProject );
-            task.setLogger( getLogger() );
 
             task.execute( archiver, configSource );
         }
@@ -466,7 +451,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 +471,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();
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..ff48eef2 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;
@@ -26,6 +30,7 @@ import org.apache.maven.plugins.assembly.archive.phase.wrappers.RepoBuilderConfi
 import org.apache.maven.plugins.assembly.archive.phase.wrappers.RepoInfoWrapper;
 import org.apache.maven.plugins.assembly.archive.task.AddDirectoryTask;
 import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
+import org.apache.maven.plugins.assembly.internal.ComponentSupport;
 import org.apache.maven.plugins.assembly.model.Assembly;
 import org.apache.maven.plugins.assembly.model.Repository;
 import org.apache.maven.plugins.assembly.repository.RepositoryAssembler;
@@ -35,34 +40,29 @@ 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 java.io.File;
 import java.util.List;
 
+import static java.util.Objects.requireNonNull;
+
 /**
  *
  */
-@Component( role = AssemblyArchiverPhase.class, hint = "repositories" )
+@Singleton
+@Named( "repositories" )
 public class RepositoryAssemblyPhase
-    extends AbstractLogEnabled
-    implements AssemblyArchiverPhase, PhaseOrder
+        extends ComponentSupport
+        implements AssemblyArchiverPhase, PhaseOrder
 {
 
-    @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 );
     }
 
     /**
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..6183a079 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
@@ -23,6 +23,7 @@ import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugins.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugins.assembly.archive.ArchiveCreationException;
 import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
+import org.apache.maven.plugins.assembly.internal.ComponentSupport;
 import org.apache.maven.plugins.assembly.utils.AssemblyFormatUtils;
 import org.apache.maven.plugins.assembly.utils.TypeConversionUtils;
 import org.apache.maven.project.MavenProject;
@@ -31,7 +32,6 @@ 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;
 
@@ -43,15 +43,13 @@ import java.util.List;
 /**
  *
  */
-public class AddArtifactTask
+public class AddArtifactTask extends ComponentSupport
 {
 
     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 +76,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 +161,7 @@ public class AddArtifactTask
         {
             final File artifactFile = artifact.getFile();
 
-            logger.debug(
+            getLogger().debug(
                 "Adding artifact: " + artifact.getId() + " with file: " + artifactFile + " to assembly location: "
                     + outputLocation + "." );
 
@@ -207,12 +204,12 @@ public class AddArtifactTask
             final File artifactFile = artifact.getFile();
             if ( artifactFile == null )
             {
-                logger.warn(
+                getLogger().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 );
+                getLogger().debug( "Adding artifact directory contents for: " + artifact + " to: " + outputLocation );
 
                 DefaultFileSet fs = DefaultFileSet.fileSet( artifactFile );
                 fs.setIncludes( includesArray );
@@ -224,9 +221,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(
+                getLogger().debug( "Unpacking artifact contents for: " + artifact + " to: " + outputLocation );
+                getLogger().debug( "includes:\n" + StringUtils.join( includesArray, "\n" ) + "\n" );
+                getLogger().debug(
                     "excludes:\n" + ( excludesArray == null ? "none" : StringUtils.join( excludesArray, "\n" ) )
                         + "\n" );
                 DefaultArchivedFileSet afs = DefaultArchivedFileSet.archivedFileSet( artifactFile );
@@ -251,7 +248,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. "
+        getLogger().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..70aec22f 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
@@ -37,6 +37,7 @@ import org.apache.maven.plugins.assembly.InvalidAssemblerConfigurationException;
 import org.apache.maven.plugins.assembly.archive.ArchiveCreationException;
 import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
 import org.apache.maven.plugins.assembly.format.ReaderFormatter;
+import org.apache.maven.plugins.assembly.internal.ComponentSupport;
 import org.apache.maven.plugins.assembly.model.DependencySet;
 import org.apache.maven.plugins.assembly.model.UnpackOptions;
 import org.apache.maven.plugins.assembly.utils.AssemblyFormatUtils;
@@ -53,12 +54,11 @@ 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;
 
 /**
  *
  */
-public class AddDependencySetsTask
+public class AddDependencySetsTask extends ComponentSupport
 {
 
     private static final List<String> NON_ARCHIVE_DEPENDENCY_TYPES;
@@ -74,8 +74,6 @@ public class AddDependencySetsTask
 
     private final List<DependencySet> dependencySets;
 
-    private final Logger logger;
-
     private final MavenProject project;
 
     private final ProjectBuilder projectBuilder1;
@@ -92,13 +90,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 +103,15 @@ public class AddDependencySetsTask
     {
         if ( ( dependencySets == null ) || dependencySets.isEmpty() )
         {
-            logger.debug( "No dependency sets specified." );
+            getLogger().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." );
+            getLogger().debug(
+                    "Project " + project.getId() + " has no dependencies. Skipping dependency set addition." );
         }
 
         for ( final DependencySet dependencySet : dependencySets )
@@ -126,11 +124,11 @@ public class AddDependencySetsTask
                            final AssemblerConfigurationSource configSource )
         throws AssemblyFormattingException, ArchiveCreationException, InvalidAssemblerConfigurationException
     {
-        logger.debug( "Processing DependencySet (output=" + dependencySet.getOutputDirectory() + ")" );
+        getLogger().debug( "Processing DependencySet (output=" + dependencySet.getOutputDirectory() + ")" );
 
         if ( !dependencySet.isUseTransitiveDependencies() && dependencySet.isUseTransitiveFiltering() )
         {
-            logger.warn( "DependencySet has nonsensical configuration: useTransitiveDependencies == false "
+            getLogger().warn( "DependencySet has nonsensical configuration: useTransitiveDependencies == false "
                              + "AND useTransitiveFiltering == true. Transitive filtering flag will be ignored." );
         }
 
@@ -141,7 +139,7 @@ public class AddDependencySetsTask
             checkMultiArtifactOutputConfig( dependencySet );
         }
 
-        logger.debug( "Adding " + dependencyArtifacts.size() + " dependency artifacts." );
+        getLogger().debug( "Adding " + dependencyArtifacts.size() + " dependency artifacts." );
 
         UnpackOptions unpackOptions = dependencySet.getUnpackOptions();
         InputStreamTransformer fileSetTransformers = isUnpackWithOptions( dependencySet )
@@ -162,7 +160,7 @@ public class AddDependencySetsTask
             }
             catch ( final ProjectBuildingException e )
             {
-                logger.debug(
+                getLogger().debug(
                     "Error retrieving POM of module-dependency: " + depArtifact.getId() + "; Reason: " + e.getMessage()
                         + "\n\nBuilding stub project instance." );
 
@@ -217,7 +215,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 "
+            getLogger().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 +228,11 @@ public class AddDependencySetsTask
                                     InputStreamTransformer fileSetTransformers )
         throws AssemblyFormattingException, ArchiveCreationException
     {
-        logger.debug( "Adding dependency artifact " + depArtifact.getId() + "." );
+        getLogger().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 +240,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(), getLogger() );
         if ( dirMode != -1 )
         {
             task.setDirectoryMode( dirMode );
         }
 
-        final int fileMode = TypeConversionUtils.modeToInt( dependencySet.getFileMode(), logger );
+        final int fileMode = TypeConversionUtils.modeToInt( dependencySet.getFileMode(), getLogger() );
         if ( fileMode != -1 )
         {
             task.setFileMode( fileMode );
@@ -302,7 +300,7 @@ public class AddDependencySetsTask
             }
             else
             {
-                logger.warn( "Cannot include project artifact: " + projectArtifact
+                getLogger().warn( "Cannot include project artifact: " + projectArtifact
                                  + "; it doesn't have an associated file or directory." );
             }
         }
@@ -320,7 +318,7 @@ public class AddDependencySetsTask
                     }
                     else
                     {
-                        logger.warn(
+                        getLogger().warn(
                             "Cannot include attached artifact: " + project.getId() + " for project: " + project.getId()
                                 + "; it doesn't have an associated file or directory." );
                     }
@@ -330,11 +328,11 @@ public class AddDependencySetsTask
 
         if ( dependencySet.isUseTransitiveFiltering() )
         {
-            logger.debug( "Filtering dependency artifacts USING transitive dependency path information." );
+            getLogger().debug( "Filtering dependency artifacts USING transitive dependency path information." );
         }
         else
         {
-            logger.debug( "Filtering dependency artifacts WITHOUT transitive dependency path information." );
+            getLogger().debug( "Filtering dependency artifacts WITHOUT transitive dependency path information." );
         }
 
         final ScopeFilter scopeFilter = FilterUtils.newScopeFilter( dependencySet.getScope() );
@@ -343,7 +341,7 @@ public class AddDependencySetsTask
         
         FilterUtils.filterArtifacts( dependencyArtifacts, dependencySet.getIncludes(), dependencySet.getExcludes(),
                                      dependencySet.isUseStrictFiltering(), dependencySet.isUseTransitiveFiltering(),
-                                     logger, filter );
+                                     getLogger(), filter );
 
         return dependencyArtifacts;
     }
@@ -384,7 +382,7 @@ public class AddDependencySetsTask
 
         try
         {
-            final int mode = TypeConversionUtils.modeToInt( dependencySet.getFileMode(), logger );
+            final int mode = TypeConversionUtils.modeToInt( dependencySet.getFileMode(), getLogger() );
             if ( mode > -1 )
             {
                 archiver.addFile( source, target, mode );
@@ -405,11 +403,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..f5a138b4 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
@@ -29,6 +29,7 @@ import org.apache.maven.plugins.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugins.assembly.archive.ArchiveCreationException;
 import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
 import org.apache.maven.plugins.assembly.format.ReaderFormatter;
+import org.apache.maven.plugins.assembly.internal.ComponentSupport;
 import org.apache.maven.plugins.assembly.model.FileSet;
 import org.apache.maven.plugins.assembly.utils.AssemblyFileUtils;
 import org.apache.maven.plugins.assembly.utils.AssemblyFormatUtils;
@@ -36,19 +37,15 @@ 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;
 
 /**
  *
  */
-public class AddFileSetsTask
+public class AddFileSetsTask extends ComponentSupport
 {
 
     private final List<FileSet> fileSets;
 
-    private Logger logger;
-
     private MavenProject project;
 
     private MavenProject moduleProject;
@@ -97,9 +94,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 +107,7 @@ public class AddFileSetsTask
         {
             destDirectory = fileSet.getDirectory();
 
-            AssemblyFormatUtils.warnForPlatformSpecifics( logger, destDirectory );
+            AssemblyFormatUtils.warnForPlatformSpecifics( getLogger(), destDirectory );
         }
 
 
@@ -122,16 +116,16 @@ public class AddFileSetsTask
                                                     AssemblyFormatUtils.moduleProjectInterpolator( moduleProject ),
                                                     AssemblyFormatUtils.artifactProjectInterpolator( project ) );
 
-        if ( logger.isDebugEnabled() )
+        if ( getLogger().isDebugEnabled() )
         {
-            logger.debug( "FileSet[" + destDirectory + "]" + " dir perms: " + Integer.toString(
+            getLogger().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 + "'" );
+        getLogger().debug( "The archive base directory is '" + archiveBaseDir + "'" );
 
         File fileSetDir = getFileSetDirectory( fileSet, basedir, archiveBaseDir );
 
@@ -144,7 +138,7 @@ public class AddFileSetsTask
                                                         fileSet.getLineEnding() );
             if ( fileSetTransformers == null )
             {
-                logger.debug( "NOT reformatting any files in " + fileSetDir );
+                getLogger().debug( "NOT reformatting any files in " + fileSetDir );
             }
 
             if ( fileSetDir.getPath().equals( File.separator ) )
@@ -155,13 +149,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(), getLogger() );
             if ( dirMode != -1 )
             {
                 task.setDirectoryMode( dirMode );
             }
 
-            final int fileMode = TypeConversionUtils.modeToInt( fileSet.getFileMode(), logger );
+            final int fileMode = TypeConversionUtils.modeToInt( fileSet.getFileMode(), getLogger() );
             if ( fileMode != -1 )
             {
                 task.setFileMode( fileMode );
@@ -210,19 +204,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..16c7be99 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;
@@ -28,29 +32,35 @@ import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugins.assembly.AssemblerConfigurationSource;
 import org.apache.maven.plugins.assembly.archive.ArchiveCreationException;
 import org.apache.maven.plugins.assembly.archive.phase.ModuleSetAssemblyPhase;
+import org.apache.maven.plugins.assembly.internal.ComponentSupport;
 import org.apache.maven.plugins.assembly.model.Assembly;
 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.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 static java.util.Objects.requireNonNull;
+
 /**
  * @author jdcasey
  *
  */
-@Component( role = DependencyResolver.class )
+@Singleton
+@Named
 public class DefaultDependencyResolver
-    extends AbstractLogEnabled
-    implements DependencyResolver
+        extends ComponentSupport
+        implements DependencyResolver
 {
-    @Requirement
-    private RepositorySystem resolver;
-    
+    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,
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..c44652b9 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
@@ -19,18 +19,16 @@ package org.apache.maven.plugins.assembly.filter;
  * under the License.
  */
 
+import org.apache.maven.plugins.assembly.internal.ComponentSupport;
 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,9 +47,10 @@ import java.util.List;
 /**
  *
  */
-@Component( role = ContainerDescriptorHandler.class, hint = "file-aggregator", instantiationStrategy = "per-lookup" )
+@Named( "file-aggregator" )
 public class SimpleAggregatingDescriptorHandler
-    implements ContainerDescriptorHandler, LogEnabled
+        extends ComponentSupport
+        implements ContainerDescriptorHandler
 {
 
     // component configuration.
@@ -71,10 +70,6 @@ public class SimpleAggregatingDescriptorHandler
 
     private boolean overrideFilterAction;
 
-    // injected by the container.
-
-    private Logger logger;
-
     @Override
     public void finalizeArchiveCreation( final Archiver archiver )
     {
@@ -155,7 +150,7 @@ public class SimpleAggregatingDescriptorHandler
     }
 
     @Override
-    public boolean isSelected( @Nonnull final FileInfo fileInfo )
+    public boolean isSelected( final FileInfo fileInfo )
         throws IOException
     {
         checkConfig();
@@ -202,22 +197,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/ComponentSupport.java
similarity index 72%
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/ComponentSupport.java
index 343843cd..a103d0a8 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/archiver/SarUnArchiver.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/internal/ComponentSupport.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,18 @@ package org.apache.maven.plugins.assembly.archive.archiver;
  * under the License.
  */
 
-import org.codehaus.plexus.archiver.zip.ZipUnArchiver;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
- * @author jdcasey
- *
- *          //todo delete this class once the plexus maven plugin can merge a generated components.xml with an
- *          existing one.
+ * Support for components.
  */
-class SarUnArchiver
-    extends ZipUnArchiver
+public abstract class ComponentSupport
 {
+    private final Logger logger = LoggerFactory.getLogger( getClass() );
 
+    protected Logger getLogger()
+    {
+        return logger;
+    }
 }
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..08dcf5fa 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,8 +19,12 @@ 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.internal.ComponentSupport;
 import org.apache.maven.plugins.assembly.interpolation.AssemblyExpressionEvaluator;
 import org.apache.maven.plugins.assembly.interpolation.AssemblyInterpolator;
 import org.apache.maven.plugins.assembly.model.Assembly;
@@ -44,9 +48,6 @@ 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;
@@ -66,10 +67,11 @@ import java.util.Set;
 /**
  *
  */
-@org.codehaus.plexus.component.annotations.Component( role = AssemblyReader.class )
+@Singleton
+@Named
 public class DefaultAssemblyReader
-    extends AbstractLogEnabled
-    implements AssemblyReader
+        extends ComponentSupport
+        implements AssemblyReader
 {
 
     public static FixedStringSearchInterpolator createProjectInterpolator( MavenProject project )
@@ -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..657b4364 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;
@@ -32,6 +36,7 @@ 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.model.Dependency;
+import org.apache.maven.plugins.assembly.internal.ComponentSupport;
 import org.apache.maven.plugins.assembly.repository.model.GroupVersionAlignment;
 import org.apache.maven.plugins.assembly.repository.model.RepositoryInfo;
 import org.apache.maven.project.MavenProject;
@@ -47,29 +52,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 static java.util.Objects.requireNonNull;
 
 /**
  * @author Jason van Zyl
  */
 
 // todo will need to pop the processed project cache using reflection
-@Component( role = RepositoryAssembler.class )
+@Singleton
+@Named
 public class DefaultRepositoryAssembler
-    extends AbstractLogEnabled
-    implements RepositoryAssembler
+        extends ComponentSupport
+        implements RepositoryAssembler
 {
-    @Requirement
-    protected ArtifactResolver artifactResolver;
 
-    @Requirement
-    private DependencyResolver dependencyResolver;
+    private final ArtifactResolver artifactResolver;
+
+    private final RepositoryManager repositoryManager;
 
-    @Requirement
-    private 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,7 +91,7 @@ public class DefaultRepositoryAssembler
         MavenProject project = configSource.getProject();
         ProjectBuildingRequest buildingRequest = configSource.getProjectBuildingRequest();
 
-        Iterable<ArtifactResult> result = null;
+        Iterable<ArtifactResult> result;
 
         Collection<Dependency> dependencies = project.getDependencies();
 
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