diff --git a/src/it/reactor/resolve-extension/src/main/java/org/apache/maven/its/deptree/ResolveDependenciesLifecycleParticipant.java b/src/it/reactor/resolve-extension/src/main/java/org/apache/maven/its/deptree/ResolveDependenciesLifecycleParticipant.java
index dbd536a..52c131c 100644
--- a/src/it/reactor/resolve-extension/src/main/java/org/apache/maven/its/deptree/ResolveDependenciesLifecycleParticipant.java
+++ b/src/it/reactor/resolve-extension/src/main/java/org/apache/maven/its/deptree/ResolveDependenciesLifecycleParticipant.java
@@ -28,6 +28,7 @@
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.util.FileUtils;
 
 import java.io.File;
 import java.io.IOException;
@@ -70,19 +71,33 @@
             File resolved = new File( basedir, "resolved-" + project.getArtifactId() + ".txt" );
             try
             {
+                log.info( "building with reactor projects" );
                 // No need to filter our search. We want to resolve all artifacts.
                 dependencyGraphBuilder.buildDependencyGraph( project, null, projects );
-
-                // proof that resolution has happened
-                resolved.createNewFile();
             }
             catch ( DependencyGraphBuilderException e )
             {
                 throw new MavenExecutionException( "Could not resolve dependencies for project: " + project, e );
             }
-            catch ( IOException e )
+
+            try
             {
-                throw new MavenExecutionException( "Could not create " + resolved, e );
+                log.info( "building without reactor projects" );
+                // resolution without reactor projects, to check that it is not possible at this point
+                dependencyGraphBuilder.buildDependencyGraph( project, null );
+            }
+            catch ( DependencyGraphBuilderException e )
+            {
+                log.info( "expected resolution failure: " + e.getMessage() );
+
+                try
+                {
+                    FileUtils.fileWrite( resolved.getAbsolutePath(), e.getMessage() );
+                }
+                catch ( IOException ioe )
+                {
+                    throw new MavenExecutionException( "Could not write " + resolved, ioe );
+                }
             }
         }
 
diff --git a/src/it/reactor/setup.bsh b/src/it/reactor/setup.bsh
index fe4ec74..b69ce1d 100644
--- a/src/it/reactor/setup.bsh
+++ b/src/it/reactor/setup.bsh
@@ -25,7 +25,19 @@
 
 while ( files.hasNext() )
 {
-  files.next().delete();
+  file = files.next();
+  System.out.println( "deleting file " + file );
+  file.delete();
+}
+
+// delete modules from local repository
+files = FileUtils.getDirectoryNames( new File( basedir, "../.." ), "local-repo/org/apache/maven/its/dependency-tree/module*", "", true ).iterator();
+
+while ( files.hasNext() )
+{
+  file = new File( files.next() );
+  System.out.println( "deleting directory " + file );
+  FileUtils.deleteDirectory( file );
 }
 
 return true;
diff --git a/src/it/reactor/verify.bsh b/src/it/reactor/verify.bsh
index 6d1ae09..17c1e47 100644
--- a/src/it/reactor/verify.bsh
+++ b/src/it/reactor/verify.bsh
@@ -34,9 +34,11 @@
     throw new Exception( "Unexpected dependency tree" );
 }
 
-if ( !new File( basedir, "resolved-module-z-deps-y.txt" ).exists() )
+String resolved = FileUtils.fileRead( new File( basedir, "resolved-module-z-deps-y.txt" ) );
+
+if ( !"Could not resolve the following dependencies: [org.apache.maven.its.dependency-tree:module-y-deps-x:jar:1.0-SNAPSHOT (compile), org.apache.maven.its.dependency-tree:module-x:jar:1.0-SNAPSHOT (compile)]".equals( resolved ) )
 {
-    throw new Exception( "resolved-module-z-deps-y.txt was not written by ResolveDependenciesLifecycleParticipant" );
+    throw new Exception( "unexpected content in resolved-module-z-deps-y.txt written by ResolveDependenciesLifecycleParticipant" );
 }
 
 return true;
