diff --git a/lightning-maven-eclipse-helper/META-INF/MANIFEST.MF b/lightning-maven-eclipse-helper/META-INF/MANIFEST.MF
index 3353eb8..94c8655 100644
--- a/lightning-maven-eclipse-helper/META-INF/MANIFEST.MF
+++ b/lightning-maven-eclipse-helper/META-INF/MANIFEST.MF
@@ -6,5 +6,8 @@
 Bundle-Vendor: Noctarius
 Bundle-RequiredExecutionEnvironment: J2SE-1.5,
  JavaSE-1.6
-Require-Bundle: org.eclipse.m2e.jdt;bundle-version="[1.1.0,1.2.0)",
- org.eclipse.m2e.core;bundle-version="[1.1.0,1.2.0)"
+Require-Bundle: org.eclipse.core.resources;bundle-version="3.4.0",
+ org.eclipse.core.runtime;bundle-version="3.4.0",
+ org.eclipse.m2e.jdt;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.m2e.core;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.m2e.maven.runtime;bundle-version="[1.0.0,2.0.0)"
diff --git a/lightning-maven-eclipse-helper/plugin.xml b/lightning-maven-eclipse-helper/plugin.xml
index 5550f5c..75603b6 100644
--- a/lightning-maven-eclipse-helper/plugin.xml
+++ b/lightning-maven-eclipse-helper/plugin.xml
@@ -19,7 +19,13 @@
 under the License.
 -->
 <plugin>
-  <extension
-    point="org.eclipse.m2e.core.lifecycleMappingMetadataSource">
+  <extension point="org.eclipse.m2e.core.projectConfigurators">
+    <configurator
+        class="org.apache.directmemory.lightning.m2e.LightningProjectConfigurator"
+        id="org.apache.directmemory.lightning.lightningConfigurator"
+        name="DM-Lightning Project Configurator">
+    </configurator>
+  </extension>
+  <extension point="org.eclipse.m2e.core.lifecycleMappingMetadataSource">
   </extension>
 </plugin>
\ No newline at end of file
diff --git a/lightning-maven-eclipse-helper/src/main/java/org/apache/directmemory/lightning/m2e/LightningBuildParticipant.java b/lightning-maven-eclipse-helper/src/main/java/org/apache/directmemory/lightning/m2e/LightningBuildParticipant.java
new file mode 100644
index 0000000..f10e921
--- /dev/null
+++ b/lightning-maven-eclipse-helper/src/main/java/org/apache/directmemory/lightning/m2e/LightningBuildParticipant.java
@@ -0,0 +1,62 @@
+package org.apache.directmemory.lightning.m2e;
+
+import java.io.File;
+import java.util.Set;
+
+import org.apache.maven.plugin.MojoExecution;
+import org.codehaus.plexus.util.Scanner;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.m2e.core.MavenPlugin;
+import org.eclipse.m2e.core.embedder.IMaven;
+import org.eclipse.m2e.core.project.configurator.MojoExecutionBuildParticipant;
+import org.sonatype.plexus.build.incremental.BuildContext;
+
+public class LightningBuildParticipant
+    extends MojoExecutionBuildParticipant
+{
+
+    public LightningBuildParticipant( MojoExecution execution )
+    {
+        super( execution, true );
+    }
+
+    @Override
+    public Set<IProject> build( int kind, IProgressMonitor monitor )
+        throws Exception
+    {
+        IMaven maven = MavenPlugin.getMaven();
+        BuildContext buildContext = getBuildContext();
+
+        File classesDirectory =
+            maven.getMojoParameterValue( getSession(), getMojoExecution(), "targetBuildDirectory", File.class );
+
+        if ( classesDirectory == null )
+        {
+            return null;
+        }
+
+        Scanner scanner = buildContext.newScanner( classesDirectory );
+        scanner.scan();
+
+        String[] includedFiles = scanner.getIncludedFiles();
+        if ( includedFiles == null || includedFiles.length == 0 )
+        {
+            return null;
+        }
+
+        Set<IProject> result = super.build( kind, monitor );
+
+        File generatedDirectory =
+            maven.getMojoParameterValue( getSession(), getMojoExecution(), "generatedSourceDirectory", File.class );
+        if ( generatedDirectory != null )
+        {
+            buildContext.refresh( generatedDirectory );
+        }
+
+        buildContext.refresh( classesDirectory );
+
+        return result;
+    }
+
+}
diff --git a/lightning-maven-eclipse-helper/src/main/java/org/apache/directmemory/lightning/m2e/LightningProjectConfigurator.java b/lightning-maven-eclipse-helper/src/main/java/org/apache/directmemory/lightning/m2e/LightningProjectConfigurator.java
new file mode 100644
index 0000000..dfeac43
--- /dev/null
+++ b/lightning-maven-eclipse-helper/src/main/java/org/apache/directmemory/lightning/m2e/LightningProjectConfigurator.java
@@ -0,0 +1,20 @@
+package org.apache.directmemory.lightning.m2e;
+
+import org.apache.maven.plugin.MojoExecution;
+import org.eclipse.m2e.core.lifecyclemapping.model.IPluginExecutionMetadata;
+import org.eclipse.m2e.core.project.IMavenProjectFacade;
+import org.eclipse.m2e.core.project.configurator.AbstractBuildParticipant;
+import org.eclipse.m2e.jdt.AbstractJavaProjectConfigurator;
+
+public class LightningProjectConfigurator
+    extends AbstractJavaProjectConfigurator
+{
+
+    @Override
+    public AbstractBuildParticipant getBuildParticipant( IMavenProjectFacade projectFacade, MojoExecution execution,
+                                                         IPluginExecutionMetadata executionMetadata )
+    {
+        return new LightningBuildParticipant( execution );
+    }
+
+}
