diff --git a/plugins/org.eclipse.oomph.setup.maven/src/org/eclipse/oomph/setup/maven/impl/MavenImportTaskImpl.java b/plugins/org.eclipse.oomph.setup.maven/src/org/eclipse/oomph/setup/maven/impl/MavenImportTaskImpl.java
index f56ba7c..42367ba 100644
--- a/plugins/org.eclipse.oomph.setup.maven/src/org/eclipse/oomph/setup/maven/impl/MavenImportTaskImpl.java
+++ b/plugins/org.eclipse.oomph.setup.maven/src/org/eclipse/oomph/setup/maven/impl/MavenImportTaskImpl.java
@@ -20,6 +20,7 @@
 import org.eclipse.oomph.setup.maven.MavenImportTask;
 import org.eclipse.oomph.setup.maven.MavenPackage;
 import org.eclipse.oomph.util.MonitorUtil;
+import org.eclipse.oomph.util.ReflectUtil;
 import org.eclipse.oomph.util.StringUtil;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -45,6 +46,8 @@
 import org.eclipse.m2e.core.project.MavenProjectInfo;
 import org.eclipse.m2e.core.project.ProjectImportConfiguration;
 
+import java.io.File;
+import java.lang.reflect.Constructor;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedHashSet;
@@ -367,7 +370,7 @@
       Set<MavenProjectInfo> projectInfos = new LinkedHashSet<>();
       for (SourceLocator sourceLocator : sourceLocators)
       {
-        LocalProjectScanner projectScanner = new LocalProjectScanner(null, Collections.singletonList(sourceLocator.getRootFolder()), false, modelManager);
+        LocalProjectScanner projectScanner = createLocalProjectScanner(Collections.singletonList(sourceLocator.getRootFolder()), modelManager);
         processMavenProject(sourceLocator, projectInfos, projectScanner, MonitorUtil.create(monitor, 1));
       }
 
@@ -404,6 +407,20 @@
     }
   }
 
+  private LocalProjectScanner createLocalProjectScanner(List<String> folders, MavenModelManager modelManager)
+  {
+    try
+    {
+      Constructor<LocalProjectScanner> constructor = ReflectUtil.getConstructor(LocalProjectScanner.class, File.class, List.class, boolean.class,
+          MavenModelManager.class);
+      return constructor.newInstance(null, folders, false, modelManager);
+    }
+    catch (Exception ex)
+    {
+      return new LocalProjectScanner(folders, false, modelManager);
+    }
+  }
+
   private void processMavenProject(SourceLocator sourceLocator, Set<MavenProjectInfo> projectInfos, LocalProjectScanner projectScanner,
       IProgressMonitor monitor) throws InterruptedException
   {
