diff --git a/indexer-cli/pom.xml b/indexer-cli/pom.xml
index 5b3890c..262e5c6 100644
--- a/indexer-cli/pom.xml
+++ b/indexer-cli/pom.xml
@@ -96,6 +96,13 @@
       <artifactId>truezip-driver-zip</artifactId>
     </dependency>
 
+    <!-- Logging (simple backend for CLI) -->
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>compile</scope>
+    </dependency>
+
     <!-- Test -->
     <dependency>
       <groupId>junit</groupId>
@@ -138,6 +145,9 @@
               <transformers>
                 <transformer implementation="org.apache.maven.plugins.shade.resource.ComponentsXmlResourceTransformer" />
                 <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
+                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+                  <resource>META-INF/sisu/javax.inject.Named</resource>
+                </transformer>
                 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                   <mainClass>org.apache.maven.index.cli.NexusIndexerCli</mainClass>
                 </transformer>
diff --git a/indexer-cli/src/main/java/org/apache/maven/index/cli/NexusIndexerCli.java b/indexer-cli/src/main/java/org/apache/maven/index/cli/NexusIndexerCli.java
index 4e15375..6f6854c 100644
--- a/indexer-cli/src/main/java/org/apache/maven/index/cli/NexusIndexerCli.java
+++ b/indexer-cli/src/main/java/org/apache/maven/index/cli/NexusIndexerCli.java
@@ -46,6 +46,10 @@
 import org.apache.maven.index.packer.IndexPackingRequest;
 import org.apache.maven.index.packer.IndexPackingRequest.IndexFormat;
 import org.apache.maven.index.updater.DefaultIndexUpdater;
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.DefaultContainerConfiguration;
+import org.codehaus.plexus.DefaultPlexusContainer;
+import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.classworlds.ClassWorld;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
@@ -240,6 +244,14 @@
     public void invokePlexusComponent( final CommandLine cli, PlexusContainer plexus )
         throws Exception
     {
+        final DefaultContainerConfiguration configuration = new DefaultContainerConfiguration();
+        configuration.setClassWorld( ( (DefaultPlexusContainer) plexus ).getClassWorld() );
+        configuration.setClassPathScanning( PlexusConstants.SCANNING_INDEX );
+
+        // replace plexus, as PlexusCli is blunt, does not allow to modify configuration
+        // TODO: get rid of PlexusCli use!
+        plexus = new DefaultPlexusContainer( configuration );
+
         if ( cli.hasOption( QUIET ) )
         {
             setLogLevel( plexus, Logger.LEVEL_DISABLED );
diff --git a/indexer-cli/src/test/java/org/apache/maven/index/cli/AbstractNexusIndexerCliTest.java b/indexer-cli/src/test/java/org/apache/maven/index/cli/AbstractNexusIndexerCliTest.java
index 8f89365..885061a 100644
--- a/indexer-cli/src/test/java/org/apache/maven/index/cli/AbstractNexusIndexerCliTest.java
+++ b/indexer-cli/src/test/java/org/apache/maven/index/cli/AbstractNexusIndexerCliTest.java
@@ -27,6 +27,8 @@
 import org.apache.maven.index.SearchType;
 import org.apache.maven.index.context.IndexCreator;
 import org.apache.maven.index.context.IndexingContext;
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.util.FileUtils;
 
@@ -63,6 +65,13 @@
     protected OutputStream out;
 
     @Override
+    protected void customizeContainerConfiguration( final ContainerConfiguration containerConfiguration )
+    {
+        super.customizeContainerConfiguration( containerConfiguration );
+        containerConfiguration.setClassPathScanning( PlexusConstants.SCANNING_INDEX );
+    }
+
+    @Override
     protected void setUp()
         throws Exception
     {
diff --git a/indexer-core/src/main/java/org/apache/maven/index/ComponentSupport.java b/indexer-core/src/main/java/org/apache/maven/index/ComponentSupport.java
index 9a3927c..39f585d 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/ComponentSupport.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/ComponentSupport.java
@@ -1,5 +1,24 @@
 package org.apache.maven.index;
 
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/indexer-core/src/test/java/org/apache/maven/index/AbstractIndexCreatorHelper.java b/indexer-core/src/test/java/org/apache/maven/index/AbstractIndexCreatorHelper.java
index 1b14e6f..d7e1046 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/AbstractIndexCreatorHelper.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/AbstractIndexCreatorHelper.java
@@ -37,7 +37,7 @@
 import org.codehaus.plexus.util.FileUtils;
 
 public class AbstractIndexCreatorHelper
-    extends PlexusTestCase
+    extends AbstractTestSupport
 {
     public List<IndexCreator> DEFAULT_CREATORS;
 
diff --git a/indexer-core/src/test/java/org/apache/maven/index/AbstractTestSupport.java b/indexer-core/src/test/java/org/apache/maven/index/AbstractTestSupport.java
new file mode 100644
index 0000000..5f42ea1
--- /dev/null
+++ b/indexer-core/src/test/java/org/apache/maven/index/AbstractTestSupport.java
@@ -0,0 +1,35 @@
+package org.apache.maven.index;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0    
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.PlexusConstants;
+import org.codehaus.plexus.PlexusTestCase;
+
+public class AbstractTestSupport
+    extends PlexusTestCase
+{
+    @Override
+    protected void customizeContainerConfiguration( final ContainerConfiguration containerConfiguration )
+    {
+        super.customizeContainerConfiguration( containerConfiguration );
+        containerConfiguration.setClassPathScanning( PlexusConstants.SCANNING_INDEX );
+    }
+}
diff --git a/indexer-core/src/test/java/org/apache/maven/index/SearchWithAnEmptyIndexTest.java b/indexer-core/src/test/java/org/apache/maven/index/SearchWithAnEmptyIndexTest.java
index 12642eb..53d5e9d 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/SearchWithAnEmptyIndexTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/SearchWithAnEmptyIndexTest.java
@@ -38,7 +38,7 @@
  * @author Olivier Lamy
  */
 public class SearchWithAnEmptyIndexTest
-    extends PlexusTestCase
+    extends AbstractTestSupport
 {
     protected List<IndexCreator> indexCreators;
 
diff --git a/indexer-core/src/test/java/org/apache/maven/index/context/NexusAnalyzerTest.java b/indexer-core/src/test/java/org/apache/maven/index/context/NexusAnalyzerTest.java
index 8f4b027..5a8c0f0 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/context/NexusAnalyzerTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/context/NexusAnalyzerTest.java
@@ -28,11 +28,12 @@
 
 import org.apache.lucene.analysis.Tokenizer;
 import org.apache.lucene.analysis.tokenattributes.TermAttribute;
+import org.apache.maven.index.AbstractTestSupport;
 import org.apache.maven.index.IndexerField;
 import org.apache.maven.index.creator.MinimalArtifactInfoIndexCreator;
 
 public class NexusAnalyzerTest
-    extends TestCase
+    extends AbstractTestSupport
 {
     protected NexusAnalyzer nexusAnalyzer;
 
diff --git a/indexer-core/src/test/java/org/apache/maven/index/creator/JarFileContentsIndexCreatorTest.java b/indexer-core/src/test/java/org/apache/maven/index/creator/JarFileContentsIndexCreatorTest.java
index d84a5e8..ef27e34 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/creator/JarFileContentsIndexCreatorTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/creator/JarFileContentsIndexCreatorTest.java
@@ -21,6 +21,7 @@
 
 import java.io.File;
 
+import org.apache.maven.index.AbstractTestSupport;
 import org.apache.maven.index.ArtifactContext;
 import org.apache.maven.index.ArtifactInfo;
 import org.apache.maven.index.context.IndexCreator;
@@ -30,7 +31,7 @@
  * @author Alin Dreghiciu
  */
 public class JarFileContentsIndexCreatorTest
-    extends PlexusTestCase
+    extends AbstractTestSupport
 {
     protected IndexCreator indexCreator;
 
diff --git a/indexer-core/src/test/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreatorTest.java b/indexer-core/src/test/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreatorTest.java
index bb862f0..5ce3fb7 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreatorTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreatorTest.java
@@ -23,6 +23,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.maven.index.AbstractTestSupport;
 import org.apache.maven.index.ArtifactContext;
 import org.apache.maven.index.ArtifactInfo;
 import org.apache.maven.index.context.IndexCreator;
@@ -33,7 +34,7 @@
  * @author juven
  */
 public class MavenPluginArtifactInfoIndexCreatorTest
-    extends PlexusTestCase
+    extends AbstractTestSupport
 {
     protected IndexCreator indexCreator;
 
diff --git a/indexer-core/src/test/java/org/apache/maven/index/creator/OsgiArtifactIndexCreatorTest.java b/indexer-core/src/test/java/org/apache/maven/index/creator/OsgiArtifactIndexCreatorTest.java
index c12c0e1..666a3bc 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/creator/OsgiArtifactIndexCreatorTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/creator/OsgiArtifactIndexCreatorTest.java
@@ -21,6 +21,7 @@
 
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
+import org.apache.maven.index.AbstractTestSupport;
 import org.apache.maven.index.ArtifactContext;
 import org.apache.maven.index.ArtifactInfo;
 import org.apache.maven.index.FlatSearchRequest;
@@ -41,7 +42,7 @@
  * @author Olivier Lamy
  */
 public class OsgiArtifactIndexCreatorTest
-    extends PlexusTestCase
+    extends AbstractTestSupport
 {
     protected IndexCreator indexCreator;
 
diff --git a/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterEmbeddingIT.java b/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterEmbeddingIT.java
index cc54422..8bf8b3e 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterEmbeddingIT.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterEmbeddingIT.java
@@ -34,9 +34,14 @@
 import org.apache.maven.index.updater.fixtures.TransferListenerFixture;
 import org.apache.maven.wagon.authentication.AuthenticationInfo;
 import org.apache.maven.wagon.events.TransferEvent;
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.DefaultContainerConfiguration;
 import org.codehaus.plexus.DefaultPlexusContainer;
+import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.codehaus.plexus.configuration.DefaultPlexusConfiguration;
+import org.codehaus.plexus.configuration.PlexusConfiguration;
 import org.codehaus.plexus.util.FileUtils;
 
 public class DefaultIndexUpdaterEmbeddingIT
@@ -52,6 +57,45 @@
 
     private WagonHelper wagonHelper;
 
+    @Override
+    public void setUp()
+        throws Exception
+    {
+        // FIXME: Try to detect the port from the system environment.
+        int port = -1;
+        String portStr = System.getProperty( "index-server" );
+        if ( portStr != null )
+        {
+            port = Integer.parseInt( portStr );
+        }
+
+        if ( port < 1024 )
+        {
+            System.out.println( "Using default port: 8080" );
+            port = 8080;
+        }
+
+        baseUrl = "http://127.0.0.1:" + port + "/";
+
+        server = new ServerTestFixture( port );
+        final DefaultContainerConfiguration configuration = new DefaultContainerConfiguration();
+        configuration.setClassPathScanning( PlexusConstants.SCANNING_INDEX );
+        container = new DefaultPlexusContainer(configuration);
+
+        updater = container.lookup( IndexUpdater.class, "default" );
+
+        wagonHelper = new WagonHelper( container );
+    }
+
+    @Override
+    public void tearDown()
+        throws Exception
+    {
+        container.release( updater );
+        container.dispose();
+        server.stop();
+    }
+
     public void testBasicIndexRetrieval()
         throws IOException, UnsupportedExistingLuceneIndexException, ComponentLookupException
     {
@@ -425,41 +469,4 @@
         return new DefaultIndexingContext( repositoryId, repositoryId, basedir, basedir, baseUrl, baseUrl, creators,
             true );
     }
-
-    @Override
-    public void setUp()
-        throws Exception
-    {
-        // FIXME: Try to detect the port from the system environment.
-        int port = -1;
-        String portStr = System.getProperty( "index-server" );
-        if ( portStr != null )
-        {
-            port = Integer.parseInt( portStr );
-        }
-
-        if ( port < 1024 )
-        {
-            System.out.println( "Using default port: 8080" );
-            port = 8080;
-        }
-
-        baseUrl = "http://127.0.0.1:" + port + "/";
-
-        server = new ServerTestFixture( port );
-        container = new DefaultPlexusContainer();
-
-        updater = container.lookup( IndexUpdater.class, "default" );
-
-        wagonHelper = new WagonHelper( container );
-    }
-
-    @Override
-    public void tearDown()
-        throws Exception
-    {
-        container.release( updater );
-        container.dispose();
-        server.stop();
-    }
 }
\ No newline at end of file
diff --git a/indexer-core/src/test/java/org/apache/maven/index/updater/FullBootProofOfConcept.java b/indexer-core/src/test/java/org/apache/maven/index/updater/FullBootProofOfConcept.java
index aa32a26..6499027 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/updater/FullBootProofOfConcept.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/updater/FullBootProofOfConcept.java
@@ -32,7 +32,10 @@
 import org.apache.maven.index.updater.WagonHelper.WagonFetcher;
 import org.apache.maven.wagon.events.TransferEvent;
 import org.apache.maven.wagon.events.TransferListener;
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.DefaultContainerConfiguration;
 import org.codehaus.plexus.DefaultPlexusContainer;
+import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.PlexusContainerException;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
@@ -102,7 +105,9 @@
 
         basedir.mkdirs();
 
-        PlexusContainer container = new DefaultPlexusContainer();
+        final DefaultContainerConfiguration configuration = new DefaultContainerConfiguration();
+        configuration.setClassPathScanning( PlexusConstants.SCANNING_INDEX );
+        PlexusContainer container = new DefaultPlexusContainer(configuration);
 
         IndexCreator min = container.lookup( IndexCreator.class, "min" );
         IndexCreator jar = container.lookup( IndexCreator.class, "jarContent" );
diff --git a/indexer-core/src/test/java/org/apache/maven/index/util/IndexCreatorSorterTest.java b/indexer-core/src/test/java/org/apache/maven/index/util/IndexCreatorSorterTest.java
index 8dd1e9a..a0efb29 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/util/IndexCreatorSorterTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/util/IndexCreatorSorterTest.java
@@ -23,12 +23,13 @@
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.maven.index.AbstractTestSupport;
 import org.apache.maven.index.context.IndexCreator;
 import org.codehaus.plexus.PlexusTestCase;
 import org.junit.Assert;
 
 public class IndexCreatorSorterTest
-    extends PlexusTestCase
+    extends AbstractTestSupport
 {
     public void testLookupList()
         throws Exception
