Index: archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/DefaultArchivaTaskScheduler.java
===================================================================
--- archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/DefaultArchivaTaskScheduler.java	(revision 683451)
+++ archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/DefaultArchivaTaskScheduler.java	(working copy)
@@ -19,12 +19,19 @@
  * under the License.
  */
 
+import java.io.File;
+import java.text.ParseException;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.maven.archiva.common.ArchivaException;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.ConfigurationEvent;
 import org.apache.maven.archiva.configuration.ConfigurationListener;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.maven.archiva.repository.scanner.RepositoryScanner;
 import org.apache.maven.archiva.scheduled.tasks.ArchivaTask;
 import org.apache.maven.archiva.scheduled.tasks.DatabaseTask;
 import org.apache.maven.archiva.scheduled.tasks.RepositoryTask;
@@ -45,11 +52,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.text.ParseException;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
 /**
  * Default implementation of a scheduling component for archiva.
  *
@@ -112,7 +114,7 @@
             throw new ArchivaException( e.getMessage(), e );
         }
     }
-    
+
     public void start()
         throws StartingException
     {
@@ -125,10 +127,16 @@
             {
                 if ( repoConfig.isScanned() )
                 {
+                	
                     scheduleRepositoryJobs( repoConfig );
+                    
+                    // if the repository doesn't have a .index folder it will scan the repository
+                    if ( !hasIndex( repoConfig ) )
+                    {
+                        initialScan( repoConfig );
+                    }
                 }
             }
-
             scheduleDatabaseJobs();
         }
         catch ( SchedulerException e )
@@ -137,6 +145,66 @@
         }
     }
 
+    // checks if there's a .index folder in the repository 
+    private boolean hasIndex( ManagedRepositoryConfiguration repoConfig )
+    {
+        boolean hasIndex = false;
+        File file = new File( repoConfig.getLocation() + "/.index");
+        
+        if ( file.exists() )
+        {
+            hasIndex = true;
+        }
+        return hasIndex;
+    }
+    
+    public synchronized void initialScan( ManagedRepositoryConfiguration repoConfig )
+    {
+    	String repoid = repoConfig.getId();
+
+        RepositoryTask task = new RepositoryTask();
+        task.setRepositoryId( repoid );
+        task.setName( REPOSITORY_JOB + ":" + repoid + ":initial-scan");
+        task.setQueuePolicy( ArchivaTask.QUEUE_POLICY_WAIT);
+        
+        boolean scheduleTask = false;
+        
+        try
+        {
+            if ( this.isProcessingAnyRepositoryTask() )
+            {
+                if ( this.isProcessingRepositoryTask( repoid ))
+                {
+                    log.error( "Repository [" + repoid + "] task was already queued.");
+                }
+                else
+                {
+                    scheduleTask = true;
+                }
+            }
+            else
+            {
+                scheduleTask = true;
+            }
+        }
+        catch ( ArchivaException e )
+        {
+            log.error( "Error occured in scheduling repository [" + repoid + "] task : " + e.getMessage() );
+        }
+        
+        if ( scheduleTask )
+        {
+            try
+            {
+                this.queueRepositoryTask( task );
+            }
+            catch ( TaskQueueException e )
+            {
+                log.error( " Error occurred while queueing repository [" + repoid + "] task : " + e.getMessage() );
+            }
+        }
+    }
+
     private synchronized void scheduleRepositoryJobs( ManagedRepositoryConfiguration repoConfig )
         throws SchedulerException
     {

