You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2014/04/23 07:50:01 UTC

[2/2] git commit: De-plexusize MI

De-plexusize MI

For now, only main codebase is done. Build will still fail,
as there are still UTs needed to be fixed.


Project: http://git-wip-us.apache.org/repos/asf/maven-indexer/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-indexer/commit/ea16d91e
Tree: http://git-wip-us.apache.org/repos/asf/maven-indexer/tree/ea16d91e
Diff: http://git-wip-us.apache.org/repos/asf/maven-indexer/diff/ea16d91e

Branch: refs/heads/javax-inject
Commit: ea16d91e71b2dba23e336c9e9f1836c1421e911a
Parents: dfc8159
Author: Tamás Cservenák <cs...@apache.org>
Authored: Fri Nov 16 14:31:45 2012 +0100
Committer: Tamás Cservenák <cs...@apache.org>
Committed: Fri Nov 16 15:43:01 2012 +0100

----------------------------------------------------------------------
 indexer-artifact/pom.xml                        | 13 +++--
 .../DefaultArtifactPackagingMapper.java         | 20 ++++---
 .../maven/index/artifact/M1GavCalculator.java   | 18 ++++---
 .../maven/index/artifact/M2GavCalculator.java   | 26 ++++-----
 indexer-cli/pom.xml                             | 12 ++++-
 indexer-core/pom.xml                            | 23 ++++++--
 .../apache/maven/index/ComponentSupport.java    | 31 +++++++++++
 .../index/DefaultArtifactContextProducer.java   | 18 +++++--
 .../org/apache/maven/index/DefaultIndexer.java  | 50 +++++++++++-------
 .../maven/index/DefaultIndexerEngine.java       |  9 ++--
 .../apache/maven/index/DefaultNexusIndexer.java | 34 +++++++-----
 .../apache/maven/index/DefaultQueryCreator.java | 32 +++++-------
 .../org/apache/maven/index/DefaultScanner.java  | 24 ++++++---
 .../maven/index/DefaultScannerListener.java     |  6 +--
 .../apache/maven/index/DefaultSearchEngine.java |  9 ++--
 .../archetype/AbstractArchetypeDataSource.java  | 17 +++---
 .../archetype/NexusArchetypeDataSource.java     | 23 +++++---
 .../index/creator/AbstractIndexCreator.java     |  4 +-
 .../creator/JarFileContentsIndexCreator.java    |  7 +--
 .../MavenArchetypeArtifactInfoIndexCreator.java |  7 +--
 .../MavenPluginArtifactInfoIndexCreator.java    | 32 +++++++-----
 .../MinimalArtifactInfoIndexCreator.java        |  7 +--
 .../index/creator/OsgiArtifactIndexCreator.java | 23 ++++----
 .../incremental/DefaultIncrementalHandler.java  | 13 +++--
 .../maven/index/packer/DefaultIndexPacker.java  | 43 +++++++++------
 .../index/treeview/DefaultIndexTreeView.java    | 25 +++++----
 .../index/updater/DefaultIndexUpdater.java      | 55 ++++++++++----------
 .../maven/index/AbstractIndexCreatorHelper.java |  9 ++++
 pom.xml                                         | 47 ++++++++++++++---
 29 files changed, 410 insertions(+), 227 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-artifact/pom.xml
----------------------------------------------------------------------
diff --git a/indexer-artifact/pom.xml b/indexer-artifact/pom.xml
index 499c344..07a271c 100644
--- a/indexer-artifact/pom.xml
+++ b/indexer-artifact/pom.xml
@@ -37,15 +37,20 @@ under the License.
   <dependencies>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-component-annotations</artifactId>
+      <artifactId>plexus-utils</artifactId>
     </dependency>
+
     <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-utils</artifactId>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
     </dependency>
     <dependency>
       <groupId>org.sonatype.sisu</groupId>
-      <artifactId>sisu-inject-plexus</artifactId>
+      <artifactId>sisu-inject-bean</artifactId>
     </dependency>
 
     <!-- Test -->

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-artifact/src/main/java/org/apache/maven/index/artifact/DefaultArtifactPackagingMapper.java
----------------------------------------------------------------------
diff --git a/indexer-artifact/src/main/java/org/apache/maven/index/artifact/DefaultArtifactPackagingMapper.java b/indexer-artifact/src/main/java/org/apache/maven/index/artifact/DefaultArtifactPackagingMapper.java
index 9f3caa5..604deb1 100644
--- a/indexer-artifact/src/main/java/org/apache/maven/index/artifact/DefaultArtifactPackagingMapper.java
+++ b/indexer-artifact/src/main/java/org/apache/maven/index/artifact/DefaultArtifactPackagingMapper.java
@@ -25,10 +25,12 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.IOUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * A very simple artifact packaging mapper, that has everything for quick-start wired in this class. Also, it takes into
@@ -37,14 +39,16 @@ import org.codehaus.plexus.util.IOUtil;
  *
  * @author cstamas
  */
-@Component( role = ArtifactPackagingMapper.class )
+@Singleton
+@Named
 public class DefaultArtifactPackagingMapper
-    extends AbstractLogEnabled
     implements ArtifactPackagingMapper
 {
 
     public static final String MAPPING_PROPERTIES_FILE = "packaging2extension-mapping.properties";
 
+    private final Logger logger = LoggerFactory.getLogger( getClass() );
+
     private File propertiesFile;
 
     private volatile Map<String, String> packaging2extensionMapping;
@@ -91,7 +95,7 @@ public class DefaultArtifactPackagingMapper
 
                     if ( propertiesFile != null && propertiesFile.exists() )
                     {
-                        getLogger().info( "Found user artifact packaging mapping file, applying it..." );
+                        logger.info( "Found user artifact packaging mapping file, applying it..." );
 
                         Properties userMappings = new Properties();
 
@@ -111,7 +115,7 @@ public class DefaultArtifactPackagingMapper
                                                                     userMappings.getProperty( key.toString() ) );
                                 }
 
-                                getLogger().info(
+                                logger.info(
                                     propertiesFile.getAbsolutePath()
                                         + " user artifact packaging mapping file contained "
                                         + userMappings.keySet().size() + " mappings, applied them all succesfully." );
@@ -119,7 +123,7 @@ public class DefaultArtifactPackagingMapper
                         }
                         catch ( IOException e )
                         {
-                            getLogger().warn(
+                            logger.warn(
                                 "Got IO exception during read of file: " + propertiesFile.getAbsolutePath() );
                         }
                         finally
@@ -131,7 +135,7 @@ public class DefaultArtifactPackagingMapper
                     else
                     {
                         // make it silent if using defaults
-                        getLogger().debug(
+                        logger.debug(
                             "User artifact packaging mappings file not found, will work with defaults..." );
                     }
                 }

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-artifact/src/main/java/org/apache/maven/index/artifact/M1GavCalculator.java
----------------------------------------------------------------------
diff --git a/indexer-artifact/src/main/java/org/apache/maven/index/artifact/M1GavCalculator.java b/indexer-artifact/src/main/java/org/apache/maven/index/artifact/M1GavCalculator.java
index be0615d..e7fc463 100644
--- a/indexer-artifact/src/main/java/org/apache/maven/index/artifact/M1GavCalculator.java
+++ b/indexer-artifact/src/main/java/org/apache/maven/index/artifact/M1GavCalculator.java
@@ -21,23 +21,25 @@ package org.apache.maven.index.artifact;
 
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-
-import org.codehaus.plexus.component.annotations.Component;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 /**
  * An M1 <code>GavCalculator</code>. Heavily under-maintained.
- * 
+ *
  * @author Jason van Zyl
  * @author Tamas Cservenak
  */
-@Component( role = GavCalculator.class, hint = "maven1" )
+@Singleton
+@Named( "maven1" )
 public class M1GavCalculator
     implements GavCalculator
 {
 
     private static final Pattern pat1 = Pattern.compile( "^([^0-9]+)-([0-9].+)\\.([^0-9]+)(\\.md5|\\.sha1){0,1}$" );
 
-    private static final Pattern pat2 = Pattern.compile( "^([a-z0-9-_]+)-([0-9-].+)\\.([^0-9]+)(\\.md5|\\.sha1){0,1}$" );
+    private static final Pattern pat2 =
+        Pattern.compile( "^([a-z0-9-_]+)-([0-9-].+)\\.([^0-9]+)(\\.md5|\\.sha1){0,1}$" );
 
     public Gav pathToGav( String str )
     {
@@ -111,7 +113,7 @@ public class M1GavCalculator
                 }
 
                 return new Gav( g, a, version, classifier, ext, null, null, n, checksum, checksumType, false,
-                    null );
+                                null );
             }
             else
             {
@@ -126,7 +128,7 @@ public class M1GavCalculator
                     }
 
                     return new Gav( g, a, version, classifier, ext, null, null, n, checksum, checksumType,
-                        false, null );
+                                    false, null );
                 }
                 else
                 {
@@ -146,7 +148,7 @@ public class M1GavCalculator
 
     /**
      * // XXX this is not accurate, m1 is using packaging as an artifact folder name.
-     * 
+     *
      * @see org.apache.maven.artifact.repository.layout.LegacyRepositoryLayout#pathOf(org.apache.maven.artifact.Artifact)
      * @see org.apache.maven.artifact.handler.DefaultArtifactHandler#getDirectory()
      */

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-artifact/src/main/java/org/apache/maven/index/artifact/M2GavCalculator.java
----------------------------------------------------------------------
diff --git a/indexer-artifact/src/main/java/org/apache/maven/index/artifact/M2GavCalculator.java b/indexer-artifact/src/main/java/org/apache/maven/index/artifact/M2GavCalculator.java
index 8ec1570..a5c6531 100644
--- a/indexer-artifact/src/main/java/org/apache/maven/index/artifact/M2GavCalculator.java
+++ b/indexer-artifact/src/main/java/org/apache/maven/index/artifact/M2GavCalculator.java
@@ -21,19 +21,21 @@ package org.apache.maven.index.artifact;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-
-import org.codehaus.plexus.component.annotations.Component;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 /**
  * An M2 <code>GavCalculator</code>.
- * 
+ *
  * @author Jason van Zyl
  * @author Tamas Cservenak
  */
-@Component( role = GavCalculator.class, hint = "maven2" )
+@Singleton
+@Named( "maven2" )
 public class M2GavCalculator
     implements GavCalculator
 {
+
     public Gav pathToGav( String str )
     {
         try
@@ -100,12 +102,12 @@ public class M2GavCalculator
             if ( snapshot )
             {
                 return getSnapshotGav( s, vEndPos, groupId, artifactId, version, fileName, checksum, signature,
-                    checksumType, signatureType );
+                                       checksumType, signatureType );
             }
             else
             {
                 return getReleaseGav( s, vEndPos, groupId, artifactId, version, fileName, checksum, signature,
-                    checksumType, signatureType );
+                                      checksumType, signatureType );
             }
         }
         catch ( NumberFormatException e )
@@ -119,8 +121,8 @@ public class M2GavCalculator
     }
 
     private Gav getReleaseGav( String s, int vEndPos, String groupId, String artifactId, String version,
-                               String fileName, boolean checksum, boolean signature, Gav.HashType checksumType,
-                               Gav.SignatureType signatureType )
+        String fileName, boolean checksum, boolean signature, Gav.HashType checksumType,
+        Gav.SignatureType signatureType )
     {
         if ( !fileName.startsWith( artifactId + "-" + version + "." )
             && !fileName.startsWith( artifactId + "-" + version + "-" ) )
@@ -146,12 +148,12 @@ public class M2GavCalculator
         String classifier = tail.charAt( 0 ) == '-' ? tail.substring( 1, nExtPos ) : null;
 
         return new Gav( groupId, artifactId, version, classifier, ext, null, null, fileName, checksum, checksumType,
-            signature, signatureType );
+                        signature, signatureType );
     }
 
     private Gav getSnapshotGav( String s, int vEndPos, String groupId, String artifactId, String version,
-                                String fileName, boolean checksum, boolean signature, Gav.HashType checksumType,
-                                Gav.SignatureType signatureType )
+        String fileName, boolean checksum, boolean signature, Gav.HashType checksumType,
+        Gav.SignatureType signatureType )
     {
 
         Integer snapshotBuildNo = null;
@@ -229,7 +231,7 @@ public class M2GavCalculator
         }
 
         return new Gav( groupId, artifactId, version, classifier, ext, snapshotBuildNo, snapshotTimestamp, fileName,
-            checksum, checksumType, signature, signatureType );
+                        checksum, checksumType, signature, signatureType );
     }
 
     public String gavToPath( Gav gav )

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-cli/pom.xml
----------------------------------------------------------------------
diff --git a/indexer-cli/pom.xml b/indexer-cli/pom.xml
index 941720e..5b3890c 100644
--- a/indexer-cli/pom.xml
+++ b/indexer-cli/pom.xml
@@ -49,7 +49,17 @@ under the License.
       <version>${project.version}</version>
     </dependency>
 
-    <!-- Plexus (as compile since it has to end up in CLI) -->
+    <!-- SISU + Plexus (as compile since it has to end up in CLI) -->
+    <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.sonatype.sisu</groupId>
+      <artifactId>sisu-inject-bean</artifactId>
+      <scope>compile</scope>
+    </dependency>
     <dependency>
       <groupId>org.sonatype.sisu</groupId>
       <artifactId>sisu-inject-plexus</artifactId>

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/pom.xml
----------------------------------------------------------------------
diff --git a/indexer-core/pom.xml b/indexer-core/pom.xml
index 02489c3..23c164d 100644
--- a/indexer-core/pom.xml
+++ b/indexer-core/pom.xml
@@ -42,11 +42,11 @@ under the License.
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-component-annotations</artifactId>
+      <artifactId>plexus-utils</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-utils</artifactId>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
     </dependency>
 
     <!-- Lucene -->
@@ -82,6 +82,14 @@ under the License.
 
     <!-- Plexus (as provided since you have to provide it when embedding MI) -->
     <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.sonatype.sisu</groupId>
+      <artifactId>sisu-inject-bean</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.sonatype.sisu</groupId>
       <artifactId>sisu-inject-plexus</artifactId>
     </dependency>
@@ -106,6 +114,10 @@ under the License.
           <artifactId>plexus-container-default</artifactId>
         </exclusion>
         <exclusion>
+          <groupId>org.codehaus.plexus</groupId>
+          <artifactId>plexus-component-annotations</artifactId>
+        </exclusion>
+        <exclusion>
           <groupId>org.apache.maven</groupId>
           <artifactId>maven-core</artifactId>
         </exclusion>
@@ -189,6 +201,11 @@ under the License.
       <artifactId>wagon-http-lightweight</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/ComponentSupport.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..9a3927c
--- /dev/null
+++ b/indexer-core/src/main/java/org/apache/maven/index/ComponentSupport.java
@@ -0,0 +1,31 @@
+package org.apache.maven.index;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Simple support for components.
+ *
+ * @author cstamas
+ * @since 5.1
+ */
+public abstract class ComponentSupport
+{
+
+    private final Logger logger;
+
+    protected ComponentSupport()
+    {
+        this.logger = createLogger();
+    }
+
+    protected Logger createLogger()
+    {
+        return LoggerFactory.getLogger( getClass() );
+    }
+
+    protected Logger getLogger()
+    {
+        return logger;
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/DefaultArtifactContextProducer.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultArtifactContextProducer.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultArtifactContextProducer.java
index f4d6b13..a6a3aa7 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultArtifactContextProducer.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultArtifactContextProducer.java
@@ -20,6 +20,9 @@ package org.apache.maven.index;
  */
 
 import java.io.File;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 import org.apache.maven.index.artifact.ArtifactPackagingMapper;
 import org.apache.maven.index.artifact.Gav;
@@ -29,8 +32,6 @@ import org.apache.maven.index.locator.GavHelpedLocator;
 import org.apache.maven.index.locator.Locator;
 import org.apache.maven.index.locator.MetadataLocator;
 import org.apache.maven.index.locator.PomLocator;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.util.StringUtils;
 
 /**
@@ -39,17 +40,24 @@ import org.codehaus.plexus.util.StringUtils;
  * @author Tamas Cservenak
  * @author Eugene Kuleshov
  */
-@Component( role = ArtifactContextProducer.class )
+@Singleton
+@Named
 public class DefaultArtifactContextProducer
+    extends ComponentSupport
     implements ArtifactContextProducer
 {
-    @Requirement
-    private ArtifactPackagingMapper mapper;
+    private final ArtifactPackagingMapper mapper;
 
     private GavHelpedLocator pl = new PomLocator();
 
     private Locator ml = new MetadataLocator();
 
+    @Inject
+    public DefaultArtifactContextProducer( final ArtifactPackagingMapper mapper )
+    {
+        this.mapper = mapper;
+    }
+
     /**
      * Get ArtifactContext for given pom or artifact (jar, war, etc). A file can be
      */

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexer.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexer.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexer.java
index ac7ec24..e92a41a 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexer.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexer.java
@@ -28,6 +28,9 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 import org.apache.lucene.queryParser.ParseException;
 import org.apache.lucene.search.Query;
@@ -40,49 +43,55 @@ import org.apache.maven.index.context.MergedIndexingContext;
 import org.apache.maven.index.expr.SearchExpression;
 import org.apache.maven.index.expr.SourcedSearchExpression;
 import org.apache.maven.index.util.IndexCreatorSorter;
-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.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 
 /**
  * A default {@link Indexer} implementation.
- * 
+ *
  * @author Tamas Cservenak
  */
-@Component( role = Indexer.class )
+@Singleton
+@Named
 public class DefaultIndexer
-    extends AbstractLogEnabled
+    extends ComponentSupport
     implements Indexer
 {
-    @Requirement
-    private SearchEngine searcher;
 
-    @Requirement
-    private IndexerEngine indexerEngine;
+    private final SearchEngine searcher;
 
-    @Requirement
-    private QueryCreator queryCreator;
+    private final IndexerEngine indexerEngine;
 
-    // ----------------------------------------------------------------------------
+    private final QueryCreator queryCreator;
+
+    @Inject
+    public DefaultIndexer( final SearchEngine searcher, final IndexerEngine indexerEngine,
+        final QueryCreator queryCreator )
+    {
+        this.searcher = searcher;
+        this.indexerEngine = indexerEngine;
+        this.queryCreator = queryCreator;
+    }
+
+// ----------------------------------------------------------------------------
     // Contexts
     // ----------------------------------------------------------------------------
 
     public IndexingContext createIndexingContext( String id, String repositoryId, File repository, File indexDirectory,
-                                                  String repositoryUrl, String indexUpdateUrl, boolean searchable,
-                                                  boolean reclaim, List<? extends IndexCreator> indexers )
+        String repositoryUrl, String indexUpdateUrl, boolean searchable,
+        boolean reclaim, List<? extends IndexCreator> indexers )
         throws IOException, ExistingLuceneIndexMismatchException, IllegalArgumentException
     {
         final IndexingContext context =
             new DefaultIndexingContext( id, repositoryId, repository, indexDirectory, repositoryUrl, indexUpdateUrl,
-                IndexCreatorSorter.sort( indexers ), reclaim );
+                                        IndexCreatorSorter.sort( indexers ), reclaim );
         context.setSearchable( searchable );
         return context;
     }
 
     public IndexingContext createMergedIndexingContext( String id, String repositoryId, File repository,
-                                                        File indexDirectory, boolean searchable,
-                                                        ContextMemberProvider membersProvider )
+        File indexDirectory, boolean searchable,
+        ContextMemberProvider membersProvider )
         throws IOException
     {
         IndexingContext context =
@@ -137,7 +146,7 @@ public class DefaultIndexer
     {
         if ( request.getContexts().isEmpty() )
         {
-            return new FlatSearchResponse( request.getQuery(), 0, Collections.<ArtifactInfo> emptySet() );
+            return new FlatSearchResponse( request.getQuery(), 0, Collections.<ArtifactInfo>emptySet() );
         }
         else
         {
@@ -163,7 +172,8 @@ public class DefaultIndexer
     {
         if ( request.getContexts().isEmpty() )
         {
-            return new GroupedSearchResponse( request.getQuery(), 0, Collections.<String, ArtifactInfoGroup> emptyMap() );
+            return new GroupedSearchResponse( request.getQuery(), 0,
+                                              Collections.<String, ArtifactInfoGroup>emptyMap() );
         }
         else
         {

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexerEngine.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexerEngine.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexerEngine.java
index 6efe8d9..8dd15d8 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexerEngine.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultIndexerEngine.java
@@ -23,6 +23,8 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
@@ -34,17 +36,16 @@ import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.TopDocs;
 import org.apache.maven.index.context.IndexingContext;
 import org.apache.maven.index.creator.MinimalArtifactInfoIndexCreator;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
 
 /**
  * A default {@link IndexerEngine} implementation.
  * 
  * @author Tamas Cservenak
  */
-@Component( role = IndexerEngine.class )
+@Singleton
+@Named
 public class DefaultIndexerEngine
-    extends AbstractLogEnabled
+    extends ComponentSupport
     implements IndexerEngine
 {
 

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
index e9603c5..aced0aa 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
@@ -26,6 +26,9 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 import org.apache.lucene.queryParser.ParseException;
 import org.apache.lucene.search.Query;
@@ -42,9 +45,6 @@ import org.apache.maven.index.context.StaticContextMemberProvider;
 import org.apache.maven.index.context.UnsupportedExistingLuceneIndexException;
 import org.apache.maven.index.expr.SearchExpression;
 import org.apache.maven.index.util.IndexCreatorSorter;
-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.FileUtils;
 
 /**
@@ -58,26 +58,33 @@ import org.codehaus.plexus.util.FileUtils;
  *             it's behavior less intuitive.
  */
 @Deprecated
-@Component( role = NexusIndexer.class )
+@Singleton
+@Named
 public class DefaultNexusIndexer
-    extends AbstractLogEnabled
+    extends ComponentSupport
     implements NexusIndexer
 {
 
-    @Requirement
-    private Indexer indexer;
+    private final Indexer indexer;
 
-    @Requirement
-    private Scanner scanner;
+    private final Scanner scanner;
 
-    @Requirement
-    private IndexerEngine indexerEngine;
+    private final IndexerEngine indexerEngine;
 
-    @Requirement
-    private QueryCreator queryCreator;
+    private final QueryCreator queryCreator;
 
     private final Map<String, IndexingContext> indexingContexts = new ConcurrentHashMap<String, IndexingContext>();
 
+    @Inject
+    public DefaultNexusIndexer( final Indexer indexer, final Scanner scanner, final IndexerEngine indexerEngine,
+        final QueryCreator queryCreator )
+    {
+        this.indexer = indexer;
+        this.scanner = scanner;
+        this.indexerEngine = indexerEngine;
+        this.queryCreator = queryCreator;
+    }
+
     // ----------------------------------------------------------------------------
     // Contexts
     // ----------------------------------------------------------------------------
@@ -87,6 +94,7 @@ public class DefaultNexusIndexer
         indexingContexts.put( context.getId(), context );
     }
 
+    ;
     public IndexingContext addIndexingContext( String id, String repositoryId, File repository, File indexDirectory,
         String repositoryUrl, String indexUpdateUrl,
         List<? extends IndexCreator> indexers )

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java
index aae6040..0539a8d 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultQueryCreator.java
@@ -21,6 +21,8 @@ package org.apache.maven.index;
 
 import java.io.IOException;
 import java.io.StringReader;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.index.Term;
@@ -39,13 +41,10 @@ import org.apache.maven.index.creator.JarFileContentsIndexCreator;
 import org.apache.maven.index.creator.MinimalArtifactInfoIndexCreator;
 import org.apache.maven.index.expr.SearchExpression;
 import org.apache.maven.index.expr.SearchTyped;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.Logger;
 
 /**
  * A default {@link QueryCreator} constructs Lucene query for provided query text.
- * <p>
+ * <p/>
  * By default wildcards are created such as query text matches beginning of the field value or beginning of the
  * class/package name segment for {@link ArtifactInfo#NAMES NAMES} field. But it can be controlled by using special
  * markers:
@@ -60,22 +59,15 @@ import org.codehaus.plexus.logging.Logger;
  * <li>*junit - matches junit, junit-foo and foo-junit</li>
  * <li>^junit$ - matches junit, but not junit-foo, nor foo-junit</li>
  * </ul>
- * 
+ *
  * @author Eugene Kuleshov
  */
-@Component( role = QueryCreator.class )
+@Singleton
+@Named
 public class DefaultQueryCreator
+    extends ComponentSupport
     implements QueryCreator
 {
-    @Requirement
-    private Logger logger;
-
-    protected Logger getLogger()
-    {
-        return logger;
-    }
-
-    // ==
 
     public IndexerField selectIndexerField( final Field field, final SearchType type )
     {
@@ -150,7 +142,8 @@ public class DefaultQueryCreator
                 if ( query.contains( "*" ) && query.matches( ".*(\\.|-|_).*" ) )
                 {
                     query =
-                        query.toLowerCase().replaceAll( "\\*", "X" ).replaceAll( "\\.|-|_", " " ).replaceAll( "X", "*" );
+                        query.toLowerCase().replaceAll( "\\*", "X" ).replaceAll( "\\.|-|_", " " ).replaceAll( "X",
+                                                                                                              "*" );
                 }
             }
 
@@ -178,7 +171,7 @@ public class DefaultQueryCreator
     // ==
 
     public Query constructQuery( final Field field, final IndexerField indexerField, final String query,
-                                 final SearchType type )
+        final SearchType type )
         throws ParseException
     {
         if ( indexerField == null )
@@ -233,7 +226,7 @@ public class DefaultQueryCreator
                     if ( query.startsWith( "/" ) )
                     {
                         return new TermQuery( new Term( indexerField.getKey(), query.toLowerCase().replaceAll( "\\.",
-                            "/" ) ) );
+                                                                                                               "/" ) ) );
                     }
                     else
                     {
@@ -318,7 +311,8 @@ public class DefaultQueryCreator
                 {
                     qpQuery =
                         qpQuery.toLowerCase().replaceAll( "\\*", "X" ).replaceAll( "\\.|-|_|/", " " ).replaceAll( "X",
-                            "*" ).replaceAll( " \\* ", "" ).replaceAll( "^\\* ", "" ).replaceAll( " \\*$", "" );
+                                                                                                                  "*" ).replaceAll(
+                            " \\* ", "" ).replaceAll( "^\\* ", "" ).replaceAll( " \\*$", "" );
                 }
 
                 // "fix" it with trailing "*" if not there, but only if it not ends with a space

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/DefaultScanner.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultScanner.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultScanner.java
index 5d7a9f1..5c82221 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultScanner.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultScanner.java
@@ -24,25 +24,32 @@ import java.util.Arrays;
 import java.util.Comparator;
 import java.util.Set;
 import java.util.TreeSet;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 import org.apache.maven.index.context.IndexingContext;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
 
 /**
  * A default repository scanner for Maven 2 repository.
- * 
+ *
  * @author Jason Van Zyl
  * @author Tamas Cservenak
  */
-@Component( role = Scanner.class )
+@Singleton
+@Named
 public class DefaultScanner
-    extends AbstractLogEnabled
+    extends ComponentSupport
     implements Scanner
 {
-    @Requirement
-    private ArtifactContextProducer artifactContextProducer;
+
+    private final ArtifactContextProducer artifactContextProducer;
+
+    @Inject
+    public DefaultScanner( final ArtifactContextProducer artifactContextProducer )
+    {
+        this.artifactContextProducer = artifactContextProducer;
+    }
 
     public ScanningResult scan( ScanningRequest request )
     {
@@ -119,6 +126,7 @@ public class DefaultScanner
     private static class ScannerFileComparator
         implements Comparator<File>
     {
+
         public int compare( File o1, File o2 )
         {
             if ( o1.getName().endsWith( ".pom" ) && !o2.getName().endsWith( ".pom" ) )

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java
index 5a277fc..6266dd6 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java
@@ -33,7 +33,6 @@ import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.TermQuery;
 import org.apache.lucene.search.TopScoreDocCollector;
 import org.apache.maven.index.context.IndexingContext;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
 
 /**
  * A default scanning listener
@@ -41,7 +40,6 @@ import org.codehaus.plexus.logging.AbstractLogEnabled;
  * @author Eugene Kuleshov
  */
 public class DefaultScannerListener
-    extends AbstractLogEnabled
     implements ArtifactScanningListener
 {
     private final IndexingContext context;
@@ -206,7 +204,7 @@ public class DefaultScannerListener
     }
 
     private void initialize( IndexingContext ctx )
-        throws IOException, CorruptIndexException
+        throws IOException
     {
         final IndexSearcher indexSearcher = ctx.acquireIndexSearcher();
         try
@@ -317,4 +315,4 @@ public class DefaultScannerListener
         result.setDeletedFiles( deleted );
     }
 
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java b/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java
index d7847bf..e93ed64 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultSearchEngine.java
@@ -29,6 +29,8 @@ import java.util.Map;
 import java.util.Set;
 import java.util.TreeMap;
 import java.util.TreeSet;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 import org.apache.lucene.document.Document;
 import org.apache.lucene.search.IndexSearcher;
@@ -39,8 +41,6 @@ import org.apache.maven.index.context.IndexUtils;
 import org.apache.maven.index.context.IndexingContext;
 import org.apache.maven.index.context.NexusIndexMultiReader;
 import org.apache.maven.index.context.NexusIndexMultiSearcher;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
 
 /**
  * A default search engine implementation
@@ -48,9 +48,10 @@ import org.codehaus.plexus.logging.AbstractLogEnabled;
  * @author Eugene Kuleshov
  * @author Tamas Cservenak
  */
-@Component( role = SearchEngine.class )
+@Singleton
+@Named
 public class DefaultSearchEngine
-    extends AbstractLogEnabled
+    extends ComponentSupport
     implements SearchEngine
 {
     @Deprecated

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/archetype/AbstractArchetypeDataSource.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/archetype/AbstractArchetypeDataSource.java b/indexer-core/src/main/java/org/apache/maven/index/archetype/AbstractArchetypeDataSource.java
index f6ec695..07fd618 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/archetype/AbstractArchetypeDataSource.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/archetype/AbstractArchetypeDataSource.java
@@ -30,21 +30,25 @@ import org.apache.maven.archetype.catalog.ArchetypeCatalog;
 import org.apache.maven.archetype.source.ArchetypeDataSource;
 import org.apache.maven.archetype.source.ArchetypeDataSourceException;
 import org.apache.maven.index.ArtifactInfo;
+import org.apache.maven.index.ComponentSupport;
 import org.apache.maven.index.FlatSearchRequest;
 import org.apache.maven.index.FlatSearchResponse;
 import org.apache.maven.index.Indexer;
 import org.apache.maven.index.MAVEN;
 import org.apache.maven.index.context.IndexingContext;
 import org.apache.maven.index.expr.SourcedSearchExpression;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
 
 public abstract class AbstractArchetypeDataSource
-    extends AbstractLogEnabled
+    extends ComponentSupport
     implements ArchetypeDataSource
 {
-    @Requirement
-    private Indexer indexer;
+
+    private final Indexer indexer;
+
+    protected AbstractArchetypeDataSource( final Indexer indexer )
+    {
+        this.indexer = indexer;
+    }
 
     public ArchetypeCatalog getArchetypeCatalog( final Properties properties )
         throws ArchetypeDataSourceException
@@ -53,7 +57,8 @@ public abstract class AbstractArchetypeDataSource
         try
         {
             final Map<String, String> repositories = getRepositoryMap();
-            final Query pq = indexer.constructQuery( MAVEN.PACKAGING, new SourcedSearchExpression( "maven-archetype" ) );
+            final Query pq =
+                indexer.constructQuery( MAVEN.PACKAGING, new SourcedSearchExpression( "maven-archetype" ) );
             final FlatSearchRequest searchRequest = new FlatSearchRequest( pq );
             searchRequest.setContexts( getIndexingContexts() );
             final FlatSearchResponse searchResponse = indexer.searchFlat( searchRequest );

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/archetype/NexusArchetypeDataSource.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/archetype/NexusArchetypeDataSource.java b/indexer-core/src/main/java/org/apache/maven/index/archetype/NexusArchetypeDataSource.java
index 005ef9c..6b3a2a0 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/archetype/NexusArchetypeDataSource.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/archetype/NexusArchetypeDataSource.java
@@ -21,26 +21,35 @@ package org.apache.maven.index.archetype;
 
 import java.util.ArrayList;
 import java.util.List;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
-import org.apache.maven.archetype.source.ArchetypeDataSource;
+import org.apache.maven.index.Indexer;
 import org.apache.maven.index.NexusIndexer;
 import org.apache.maven.index.context.IndexingContext;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
 
 /**
  * Nexus Archetype Data Source.
- * 
+ *
  * @author Eugene Kuleshov
  * @deprecated Extend {@link AbstractArchetypeDataSource} instead, and make it suit your case.
  */
 @Deprecated
-@Component( role = ArchetypeDataSource.class, hint = "nexus" )
+@Singleton
+@Named( "nexus" )
 public class NexusArchetypeDataSource
     extends AbstractArchetypeDataSource
 {
-    @Requirement
-    private NexusIndexer nexusIndexer;
+
+    private final NexusIndexer nexusIndexer;
+
+    @Inject
+    public NexusArchetypeDataSource( final Indexer indexer, final NexusIndexer nexusIndexer )
+    {
+        super( indexer );
+        this.nexusIndexer = nexusIndexer;
+    }
 
     @Override
     protected List<IndexingContext> getIndexingContexts()

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/creator/AbstractIndexCreator.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/AbstractIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/AbstractIndexCreator.java
index 39dbe47..4d420c9 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/creator/AbstractIndexCreator.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/creator/AbstractIndexCreator.java
@@ -23,8 +23,8 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.maven.index.ComponentSupport;
 import org.apache.maven.index.context.IndexCreator;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
 
 /**
  * An abstract base class for {@link IndexCreator} implementations.
@@ -32,7 +32,7 @@ import org.codehaus.plexus.logging.AbstractLogEnabled;
  * @author Jason van Zyl
  */
 public abstract class AbstractIndexCreator
-    extends AbstractLogEnabled
+    extends ComponentSupport
     implements IndexCreator
 {
     private final String id;

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/creator/JarFileContentsIndexCreator.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/JarFileContentsIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/JarFileContentsIndexCreator.java
index e43dbd4..dcad12d 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/creator/JarFileContentsIndexCreator.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/creator/JarFileContentsIndexCreator.java
@@ -24,6 +24,8 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field.Index;
@@ -33,17 +35,16 @@ import org.apache.maven.index.ArtifactInfo;
 import org.apache.maven.index.IndexerField;
 import org.apache.maven.index.IndexerFieldVersion;
 import org.apache.maven.index.MAVEN;
-import org.apache.maven.index.context.IndexCreator;
 import org.apache.maven.index.util.zip.ZipFacade;
 import org.apache.maven.index.util.zip.ZipHandle;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.StringUtils;
 
 /**
  * An index creator used to index Java class names from a Maven artifact (JAR or WAR for now). Will open up the file and
  * collect all the class names from it.
  */
-@Component( role = IndexCreator.class, hint = JarFileContentsIndexCreator.ID )
+@Singleton
+@Named( JarFileContentsIndexCreator.ID )
 public class JarFileContentsIndexCreator
     extends AbstractIndexCreator
     implements LegacyDocumentUpdater

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/creator/MavenArchetypeArtifactInfoIndexCreator.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/MavenArchetypeArtifactInfoIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/MavenArchetypeArtifactInfoIndexCreator.java
index 350d015..f1d6354 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/creator/MavenArchetypeArtifactInfoIndexCreator.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/creator/MavenArchetypeArtifactInfoIndexCreator.java
@@ -24,15 +24,15 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 import org.apache.lucene.document.Document;
 import org.apache.maven.index.ArtifactContext;
 import org.apache.maven.index.ArtifactInfo;
 import org.apache.maven.index.IndexerField;
-import org.apache.maven.index.context.IndexCreator;
 import org.apache.maven.index.util.zip.ZipFacade;
 import org.apache.maven.index.util.zip.ZipHandle;
-import org.codehaus.plexus.component.annotations.Component;
 
 /**
  * A Maven Archetype index creator used to detect and correct the artifact packaging to "maven-archetype" if the
@@ -42,7 +42,8 @@ import org.codehaus.plexus.component.annotations.Component;
  * 
  * @author cstamas
  */
-@Component( role = IndexCreator.class, hint = MavenArchetypeArtifactInfoIndexCreator.ID )
+@Singleton
+@Named( MavenArchetypeArtifactInfoIndexCreator.ID )
 public class MavenArchetypeArtifactInfoIndexCreator
     extends AbstractIndexCreator
 {

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java
index 48e1a59..57c9215 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/creator/MavenPluginArtifactInfoIndexCreator.java
@@ -27,6 +27,8 @@ import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field.Index;
@@ -36,34 +38,37 @@ import org.apache.maven.index.ArtifactInfo;
 import org.apache.maven.index.IndexerField;
 import org.apache.maven.index.IndexerFieldVersion;
 import org.apache.maven.index.MAVEN;
-import org.apache.maven.index.context.IndexCreator;
 import org.apache.maven.index.util.zip.ZipFacade;
 import org.apache.maven.index.util.zip.ZipHandle;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.configuration.PlexusConfiguration;
-import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
 import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
 
 /**
  * A Maven Plugin index creator used to provide information about Maven Plugins. It will collect the plugin prefix and
  * the goals the plugin provides. Also, the Lucene document and the returned ArtifactInfo will be correctly filled with
  * these information.
- * 
+ *
  * @author cstamas
  */
-@Component( role = IndexCreator.class, hint = MavenPluginArtifactInfoIndexCreator.ID )
+@Singleton
+@Named( MavenPluginArtifactInfoIndexCreator.ID )
 public class MavenPluginArtifactInfoIndexCreator
     extends AbstractIndexCreator
 {
+
     public static final String ID = "maven-plugin";
 
     private static final String MAVEN_PLUGIN_PACKAGING = "maven-plugin";
 
     public static final IndexerField FLD_PLUGIN_PREFIX = new IndexerField( MAVEN.PLUGIN_PREFIX, IndexerFieldVersion.V1,
-        "px", "MavenPlugin prefix (as keyword, stored)", Store.YES, Index.NOT_ANALYZED );
+                                                                           "px",
+                                                                           "MavenPlugin prefix (as keyword, stored)",
+                                                                           Store.YES, Index.NOT_ANALYZED );
 
     public static final IndexerField FLD_PLUGIN_GOALS = new IndexerField( MAVEN.PLUGIN_GOALS, IndexerFieldVersion.V1,
-        "gx", "MavenPlugin goals (as keyword, stored)", Store.YES, Index.ANALYZED );
+                                                                          "gx",
+                                                                          "MavenPlugin goals (as keyword, stored)",
+                                                                          Store.YES, Index.ANALYZED );
 
     public MavenPluginArtifactInfoIndexCreator()
     {
@@ -77,7 +82,8 @@ public class MavenPluginArtifactInfoIndexCreator
         ArtifactInfo ai = ac.getArtifactInfo();
 
         // we need the file to perform these checks, and those may be only JARs
-        if ( artifact != null && MAVEN_PLUGIN_PACKAGING.equals( ai.packaging ) && artifact.getName().endsWith( ".jar" ) )
+        if ( artifact != null && MAVEN_PLUGIN_PACKAGING.equals( ai.packaging ) && artifact.getName().endsWith(
+            ".jar" ) )
         {
             // TODO: recheck, is the following true? "Maven plugins and Maven Archetypes can be only JARs?"
 
@@ -103,16 +109,16 @@ public class MavenPluginArtifactInfoIndexCreator
                 try
                 {
                     // here the reader is closed
-                    PlexusConfiguration plexusConfig =
-                        new XmlPlexusConfiguration( Xpp3DomBuilder.build( new InputStreamReader( is ) ) );
+                    Xpp3Dom plexusConfig =
+                        Xpp3DomBuilder.build( new InputStreamReader( is ) );
 
                     ai.prefix = plexusConfig.getChild( "goalPrefix" ).getValue();
 
                     ai.goals = new ArrayList<String>();
 
-                    PlexusConfiguration[] mojoConfigs = plexusConfig.getChild( "mojos" ).getChildren( "mojo" );
+                    Xpp3Dom[] mojoConfigs = plexusConfig.getChild( "mojos" ).getChildren( "mojo" );
 
-                    for ( PlexusConfiguration mojoConfig : mojoConfigs )
+                    for ( Xpp3Dom mojoConfig : mojoConfigs )
                     {
                         ai.goals.add( mojoConfig.getChild( "goal" ).getValue() );
                     }

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/creator/MinimalArtifactInfoIndexCreator.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/MinimalArtifactInfoIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/MinimalArtifactInfoIndexCreator.java
index b9f4837..404d036 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/creator/MinimalArtifactInfoIndexCreator.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/creator/MinimalArtifactInfoIndexCreator.java
@@ -23,6 +23,8 @@ import java.io.File;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collection;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
@@ -36,14 +38,12 @@ import org.apache.maven.index.IndexerFieldVersion;
 import org.apache.maven.index.MAVEN;
 import org.apache.maven.index.NEXUS;
 import org.apache.maven.index.artifact.Gav;
-import org.apache.maven.index.context.IndexCreator;
 import org.apache.maven.index.locator.JavadocLocator;
 import org.apache.maven.index.locator.Locator;
 import org.apache.maven.index.locator.Sha1Locator;
 import org.apache.maven.index.locator.SignatureLocator;
 import org.apache.maven.index.locator.SourcesLocator;
 import org.apache.maven.model.Model;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.StringUtils;
 
@@ -55,7 +55,8 @@ import org.codehaus.plexus.util.StringUtils;
  * 
  * @author cstamas
  */
-@Component( role = IndexCreator.class, hint = MinimalArtifactInfoIndexCreator.ID )
+@Singleton
+@Named( MinimalArtifactInfoIndexCreator.ID )
 public class MinimalArtifactInfoIndexCreator
     extends AbstractIndexCreator
     implements LegacyDocumentUpdater

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java b/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java
index 41c1451..90b61e6 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/creator/OsgiArtifactIndexCreator.java
@@ -19,6 +19,16 @@ package org.apache.maven.index.creator;
  * under the License.
  */
 
+import java.io.File;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.jar.Attributes;
+import java.util.jar.Manifest;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.maven.index.ArtifactContext;
@@ -26,20 +36,10 @@ import org.apache.maven.index.ArtifactInfo;
 import org.apache.maven.index.IndexerField;
 import org.apache.maven.index.IndexerFieldVersion;
 import org.apache.maven.index.OSGI;
-import org.apache.maven.index.context.IndexCreator;
 import org.apache.maven.index.util.zip.ZipFacade;
 import org.apache.maven.index.util.zip.ZipHandle;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.StringUtils;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.jar.Attributes;
-import java.util.jar.Manifest;
-
 /**
  * This indexCreator will index some OSGI metadatas.
  * <br/>
@@ -58,7 +58,8 @@ import java.util.jar.Manifest;
  * @author Olivier Lamy
  * @since 4.1.2
  */
-@Component( role = IndexCreator.class, hint = OsgiArtifactIndexCreator.ID )
+@Singleton
+@Named( OsgiArtifactIndexCreator.ID )
 public class OsgiArtifactIndexCreator
     extends AbstractIndexCreator
 {

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/incremental/DefaultIncrementalHandler.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/incremental/DefaultIncrementalHandler.java b/indexer-core/src/main/java/org/apache/maven/index/incremental/DefaultIncrementalHandler.java
index 1e518ce..caea2dc 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/incremental/DefaultIncrementalHandler.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/incremental/DefaultIncrementalHandler.java
@@ -34,23 +34,26 @@ import java.util.Properties;
 import java.util.Set;
 import java.util.TimeZone;
 import java.util.TreeMap;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 import org.apache.lucene.document.Document;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.maven.index.ArtifactInfo;
+import org.apache.maven.index.ComponentSupport;
 import org.apache.maven.index.context.IndexingContext;
 import org.apache.maven.index.packer.IndexPackingRequest;
 import org.apache.maven.index.updater.IndexUpdateRequest;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.StringUtils;
 
-@Component( role = IncrementalHandler.class )
+@Singleton
+@Named
 public class DefaultIncrementalHandler
-    extends AbstractLogEnabled
+    extends ComponentSupport
     implements IncrementalHandler
 {
+
     public List<Integer> getIncrementalUpdates( IndexPackingRequest request, Properties properties )
         throws IOException
     {
@@ -81,7 +84,7 @@ public class DefaultIncrementalHandler
     }
 
     public List<String> loadRemoteIncrementalUpdates( IndexUpdateRequest request, Properties localProperties,
-                                                      Properties remoteProperties )
+        Properties remoteProperties )
         throws IOException
     {
         List<String> filenames = null;

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java b/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java
index dd67ad3..abe1884 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/packer/DefaultIndexPacker.java
@@ -32,6 +32,9 @@ import java.util.Properties;
 import java.util.TimeZone;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
@@ -44,6 +47,7 @@ import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.store.LockObtainFailedException;
 import org.apache.maven.index.ArtifactInfo;
+import org.apache.maven.index.ComponentSupport;
 import org.apache.maven.index.context.IndexCreator;
 import org.apache.maven.index.context.IndexUtils;
 import org.apache.maven.index.context.IndexingContext;
@@ -52,25 +56,29 @@ import org.apache.maven.index.context.NexusLegacyAnalyzer;
 import org.apache.maven.index.creator.LegacyDocumentUpdater;
 import org.apache.maven.index.incremental.IncrementalHandler;
 import org.apache.maven.index.updater.IndexDataWriter;
-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.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 
 /**
  * A default {@link IndexPacker} implementation. Creates the properties, legacy index zip and new gz files.
- * 
+ *
  * @author Tamas Cservenak
  * @author Eugene Kuleshov
  */
-@Component( role = IndexPacker.class )
+@Singleton
+@Named
 public class DefaultIndexPacker
-    extends AbstractLogEnabled
+    extends ComponentSupport
     implements IndexPacker
 {
-    @Requirement( role = IncrementalHandler.class )
-    IncrementalHandler incrementalHandler;
+
+    private final IncrementalHandler incrementalHandler;
+
+    @Inject
+    public DefaultIndexPacker( final IncrementalHandler incrementalHandler )
+    {
+        this.incrementalHandler = incrementalHandler;
+    }
 
     public void packIndex( IndexPackingRequest request )
         throws IOException, IllegalArgumentException
@@ -85,13 +93,13 @@ public class DefaultIndexPacker
             if ( !request.getTargetDir().isDirectory() )
             {
                 throw new IllegalArgumentException( //
-                    String.format( "Specified target path %s is not a directory",
-                        request.getTargetDir().getAbsolutePath() ) );
+                                                    String.format( "Specified target path %s is not a directory",
+                                                                   request.getTargetDir().getAbsolutePath() ) );
             }
             if ( !request.getTargetDir().canWrite() )
             {
                 throw new IllegalArgumentException( String.format( "Specified target path %s is not writtable",
-                    request.getTargetDir().getAbsolutePath() ) );
+                                                                   request.getTargetDir().getAbsolutePath() ) );
             }
         }
         else
@@ -131,11 +139,11 @@ public class DefaultIndexPacker
                 {
                     File file =
                         new File( request.getTargetDir(), //
-                            IndexingContext.INDEX_FILE_PREFIX + "."
-                                + info.getProperty( IndexingContext.INDEX_CHUNK_COUNTER ) + ".gz" );
+                                  IndexingContext.INDEX_FILE_PREFIX + "."
+                                      + info.getProperty( IndexingContext.INDEX_CHUNK_COUNTER ) + ".gz" );
 
                     writeIndexData( request.getContext(), //
-                        chunk, file );
+                                    chunk, file );
 
                     if ( request.isCreateChecksumFiles() )
                     {
@@ -191,10 +199,10 @@ public class DefaultIndexPacker
             if ( request.isCreateChecksumFiles() )
             {
                 FileUtils.fileWrite( new File( v1File.getParentFile(), v1File.getName() + ".sha1" ).getAbsolutePath(),
-                    DigesterUtils.getSha1Digest( v1File ) );
+                                     DigesterUtils.getSha1Digest( v1File ) );
 
                 FileUtils.fileWrite( new File( v1File.getParentFile(), v1File.getName() + ".md5" ).getAbsolutePath(),
-                    DigesterUtils.getMd5Digest( v1File ) );
+                                     DigesterUtils.getMd5Digest( v1File ) );
             }
         }
 
@@ -479,7 +487,8 @@ public class DefaultIndexPacker
         if ( request.isCreateChecksumFiles() )
         {
             FileUtils.fileWrite(
-                new File( targetPropertyFile.getParentFile(), targetPropertyFile.getName() + ".sha1" ).getAbsolutePath(),
+                new File( targetPropertyFile.getParentFile(),
+                          targetPropertyFile.getName() + ".sha1" ).getAbsolutePath(),
                 DigesterUtils.getSha1Digest( targetPropertyFile ) );
 
             FileUtils.fileWrite(

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/treeview/DefaultIndexTreeView.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/treeview/DefaultIndexTreeView.java b/indexer-core/src/main/java/org/apache/maven/index/treeview/DefaultIndexTreeView.java
index 87552c9..325d0c5 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/treeview/DefaultIndexTreeView.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/treeview/DefaultIndexTreeView.java
@@ -24,11 +24,15 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.Query;
 import org.apache.maven.index.ArtifactInfo;
+import org.apache.maven.index.ComponentSupport;
 import org.apache.maven.index.Field;
 import org.apache.maven.index.Indexer;
 import org.apache.maven.index.IteratorSearchRequest;
@@ -36,18 +40,21 @@ import org.apache.maven.index.IteratorSearchResponse;
 import org.apache.maven.index.MAVEN;
 import org.apache.maven.index.expr.SourcedSearchExpression;
 import org.apache.maven.index.treeview.TreeNode.Type;
-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;
 
-@Component( role = IndexTreeView.class )
+@Singleton
+@Named
 public class DefaultIndexTreeView
-    extends AbstractLogEnabled
+    extends ComponentSupport
     implements IndexTreeView
 {
-    @Requirement
-    private Indexer indexer;
+    private final Indexer indexer;
+
+    @Inject
+    public DefaultIndexTreeView( final Indexer indexer )
+    {
+        this.indexer = indexer;
+    }
 
     protected Indexer getIndexer()
     {
@@ -123,7 +130,7 @@ public class DefaultIndexTreeView
 
     /**
      * @param root
-     * @param factory
+     * @param request
      * @param allGroups
      * @throws IOException
      */
@@ -532,4 +539,4 @@ public class DefaultIndexTreeView
 
         return result;
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java
----------------------------------------------------------------------
diff --git a/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java b/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java
index cfd6b5b..477e2b3 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/updater/DefaultIndexUpdater.java
@@ -41,6 +41,9 @@ import java.util.Properties;
 import java.util.TimeZone;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
 
 import org.apache.lucene.document.Document;
 import org.apache.lucene.index.CorruptIndexException;
@@ -50,6 +53,7 @@ import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.store.IndexOutput;
 import org.apache.lucene.store.LockObtainFailedException;
+import org.apache.maven.index.ComponentSupport;
 import org.apache.maven.index.context.DocumentFilter;
 import org.apache.maven.index.context.IndexUtils;
 import org.apache.maven.index.context.IndexingContext;
@@ -59,42 +63,34 @@ import org.apache.maven.index.fs.Lock;
 import org.apache.maven.index.fs.Locker;
 import org.apache.maven.index.incremental.IncrementalHandler;
 import org.apache.maven.index.updater.IndexDataReader.IndexDataReadResult;
-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.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.io.RawInputStreamFacade;
 
 /**
  * A default index updater implementation
- * 
+ *
  * @author Jason van Zyl
  * @author Eugene Kuleshov
  */
-@Component( role = IndexUpdater.class )
+@Singleton
+@Named
 public class DefaultIndexUpdater
-    extends AbstractLogEnabled
+    extends ComponentSupport
     implements IndexUpdater
 {
 
-    @Requirement( role = IncrementalHandler.class )
-    IncrementalHandler incrementalHandler;
+    private final IncrementalHandler incrementalHandler;
 
-    @Requirement( role = IndexUpdateSideEffect.class )
-    private List<IndexUpdateSideEffect> sideEffects;
+    private final List<IndexUpdateSideEffect> sideEffects;
 
+    @Inject
     public DefaultIndexUpdater( final IncrementalHandler handler, final List<IndexUpdateSideEffect> mySideeffects )
     {
         incrementalHandler = handler;
         sideEffects = mySideeffects;
     }
 
-    public DefaultIndexUpdater()
-    {
-
-    }
-
     public IndexUpdateResult fetchAndUpdateIndex( final IndexUpdateRequest updateRequest )
         throws IOException
     {
@@ -175,7 +171,7 @@ public class DefaultIndexUpdater
     }
 
     private Date loadIndexDirectory( final IndexUpdateRequest updateRequest, final ResourceFetcher fetcher,
-                                     final boolean merge, final String remoteIndexFile )
+        final boolean merge, final String remoteIndexFile )
         throws IOException
     {
         File indexDir = File.createTempFile( remoteIndexFile, ".dir" );
@@ -195,13 +191,13 @@ public class DefaultIndexUpdater
             if ( remoteIndexFile.endsWith( ".gz" ) )
             {
                 timestamp = unpackIndexData( is, directory, //
-                    updateRequest.getIndexingContext() );
+                                             updateRequest.getIndexingContext() );
             }
             else
             {
                 // legacy transfer format
                 timestamp = unpackIndexArchive( is, directory, //
-                    updateRequest.getIndexingContext() );
+                                                updateRequest.getIndexingContext() );
             }
 
             if ( updateRequest.getDocumentFilter() != null )
@@ -250,13 +246,13 @@ public class DefaultIndexUpdater
 
     /**
      * Unpack legacy index archive into a specified Lucene <code>Directory</code>
-     * 
-     * @param is a <code>ZipInputStream</code> with index data
+     *
+     * @param is        a <code>ZipInputStream</code> with index data
      * @param directory Lucene <code>Directory</code> to unpack index data to
      * @return {@link Date} of the index update or null if it can't be read
      */
     public static Date unpackIndexArchive( final InputStream is, final Directory directory,
-                                           final IndexingContext context )
+        final IndexingContext context )
         throws IOException
     {
         File indexArchive = File.createTempFile( "nexus-index", "" );
@@ -327,7 +323,7 @@ public class DefaultIndexUpdater
     }
 
     private static void copyUpdatedDocuments( final Directory sourcedir, final Directory targetdir,
-                                              final IndexingContext context )
+        final IndexingContext context )
         throws CorruptIndexException, LockObtainFailedException, IOException
     {
         IndexWriter w = null;
@@ -493,9 +489,9 @@ public class DefaultIndexUpdater
 
     /**
      * Unpack index data using specified Lucene Index writer
-     * 
-     * @param is an input stream to unpack index data from
-     * @param w a writer to save index data
+     *
+     * @param is  an input stream to unpack index data from
+     * @param w   a writer to save index data
      * @param ics a collection of index creators for updating unpacked documents.
      */
     public static Date unpackIndexData( final InputStream is, final Directory d, final IndexingContext context )
@@ -522,6 +518,7 @@ public class DefaultIndexUpdater
     public static class FileFetcher
         implements ResourceFetcher
     {
+
         private final File basedir;
 
         public FileFetcher( File basedir )
@@ -563,6 +560,7 @@ public class DefaultIndexUpdater
 
     private abstract class IndexAdaptor
     {
+
         protected final File dir;
 
         protected Properties properties;
@@ -602,6 +600,7 @@ public class DefaultIndexUpdater
     private class LuceneIndexAdaptor
         extends IndexAdaptor
     {
+
         private final IndexUpdateRequest updateRequest;
 
         public LuceneIndexAdaptor( IndexUpdateRequest updateRequest )
@@ -655,6 +654,7 @@ public class DefaultIndexUpdater
     private class LocalCacheIndexAdaptor
         extends IndexAdaptor
     {
+
         private static final String CHUNKS_FILENAME = "chunks.lst";
 
         private static final String CHUNKS_FILE_ENCODING = "UTF-8";
@@ -786,6 +786,7 @@ public class DefaultIndexUpdater
     abstract static class LocalIndexCacheFetcher
         extends FileFetcher
     {
+
         public LocalIndexCacheFetcher( File basedir )
         {
             super( basedir );
@@ -796,7 +797,7 @@ public class DefaultIndexUpdater
     }
 
     private Date fetchAndUpdateIndex( final IndexUpdateRequest updateRequest, ResourceFetcher source,
-                                      IndexAdaptor target )
+        IndexAdaptor target )
         throws IOException
     {
         if ( !updateRequest.isForceFullUpdate() )
@@ -881,7 +882,7 @@ public class DefaultIndexUpdater
             catch ( IOException ex2 )
             {
                 getLogger().error( "Fallback to *.zip also failed: " + ex2 ); // do not bother with stack trace
-                
+
                 throw ex; // original exception more likely to be interesting
             }
         }

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/indexer-core/src/test/java/org/apache/maven/index/AbstractIndexCreatorHelper.java
----------------------------------------------------------------------
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 6d55134..1b14e6f 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
@@ -31,6 +31,8 @@ import org.apache.maven.index.creator.JarFileContentsIndexCreator;
 import org.apache.maven.index.creator.MavenArchetypeArtifactInfoIndexCreator;
 import org.apache.maven.index.creator.MavenPluginArtifactInfoIndexCreator;
 import org.apache.maven.index.creator.MinimalArtifactInfoIndexCreator;
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.util.FileUtils;
 
@@ -46,6 +48,13 @@ public class AbstractIndexCreatorHelper
     Random rand = new Random();
 
     @Override
+    protected void customizeContainerConfiguration( final ContainerConfiguration containerConfiguration )
+    {
+        super.customizeContainerConfiguration( containerConfiguration );
+        containerConfiguration.setClassPathScanning( PlexusConstants.SCANNING_INDEX );
+    }
+
+    @Override
     protected void setUp()
         throws Exception
     {

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/ea16d91e/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 8120419..5f2537f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -72,7 +72,9 @@ under the License.
     <distributionSiteUrl>scp://people.apache.org/www/maven.apache.org/maven-indexer</distributionSiteUrl>
     <siteUrl>http://maven.apache.org/maven-indexer/</siteUrl>
 
-    <sisu-inject-plexus.version>2.2.3</sisu-inject-plexus.version>
+    <sisu-inject.version>2.3.1</sisu-inject.version>
+    <sisu-guice.version>3.1.2</sisu-guice.version>
+
     <lucene.version>3.6.1</lucene.version>
     <maven.version>3.0.4</maven.version>
     <aether.version>1.13.1</aether.version>
@@ -103,6 +105,20 @@ under the License.
         <scope>compile</scope>
       </dependency>
 
+      <!-- Logging -->
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>slf4j-api</artifactId>
+        <version>1.7.2</version>
+        <scope>compile</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>slf4j-simple</artifactId>
+        <version>1.7.2</version>
+        <scope>test</scope>
+      </dependency>
+
       <!-- ZipFacade -->
       <dependency>
         <groupId>de.schlichtherle.truezip</groupId>
@@ -122,11 +138,25 @@ under the License.
       </dependency>
 
       <dependency>
+        <groupId>javax.inject</groupId>
+        <artifactId>javax.inject</artifactId>
+        <version>1</version>
+        <scope>compile</scope>
+      </dependency>
+      <!-- Is compile for only one class: WagonHelper -->
+      <!-- Consider moving it out, as these should be provided -->
+      <dependency>
         <groupId>org.sonatype.sisu</groupId>
-        <artifactId>sisu-inject-plexus</artifactId>
-        <version>${sisu-inject-plexus.version}</version>
-        <scope>provided</scope>
+        <artifactId>sisu-inject-bean</artifactId>
+        <version>${sisu-inject.version}</version>
+        <scope>compile</scope>
       </dependency>
+      <dependency>
+        <groupId>org.sonatype.sisu</groupId>
+        <artifactId>sisu-inject-plexus</artifactId>
+        <version>${sisu-inject.version}</version>
+        <scope>compile</scope>
+    </dependency>
 
       <!-- Test -->
       <dependency>
@@ -165,19 +195,20 @@ under the License.
   <build>
     <plugins>
       <plugin>
-        <groupId>org.codehaus.plexus</groupId>
-        <artifactId>plexus-component-metadata</artifactId>
+        <groupId>org.sonatype.plugins</groupId>
+        <artifactId>sisu-maven-plugin</artifactId>
+        <version>1.1</version>
         <executions>
           <execution>
             <id>process-classes</id>
             <goals>
-              <goal>generate-metadata</goal>
+              <goal>main-index</goal>
             </goals>
           </execution>
           <execution>
             <id>process-test-classes</id>
             <goals>
-              <goal>generate-test-metadata</goal>
+              <goal>test-index</goal>
             </goals>
           </execution>
         </executions>