diff --git a/src/it/local-repo-default/verify.bsh b/src/it/local-repo-default/verify.bsh
index 49913c4..249c645 100644
--- a/src/it/local-repo-default/verify.bsh
+++ b/src/it/local-repo-default/verify.bsh
@@ -37,7 +37,7 @@
     File localRepoPathOfThisBuild = new File( basedir.getParentFile().getParentFile(), "local-repo" );
     System.out.println("Local repository of this build: " + localRepoPathOfThisBuild);
 
-    File textFile = new File( basedir, "src/it/project/target/local-repo-path.txt" );
+    File textFile = new File( basedir, "target/its/project/target/local-repo-path.txt" );
     BufferedReader reader = new BufferedReader( new InputStreamReader( new FileInputStream( textFile ), "UTF-8" ) );
     File localRepoPathOfSubBuild = new File( reader.readLine() );
     reader.close();
diff --git a/src/it/script-context/verify.bsh b/src/it/script-context/verify.bsh
index 721c10e..c4c5149 100644
--- a/src/it/script-context/verify.bsh
+++ b/src/it/script-context/verify.bsh
@@ -23,14 +23,14 @@
 
 File touchFile;
 
-touchFile = new File( basedir, "src/it/beanshell/touch.txt" );
+touchFile = new File( basedir, "target/its/beanshell/touch.txt" );
 System.out.println( "Checking for existence of touch file: " + touchFile );
 if ( !touchFile.exists() )
 {
     throw new FileNotFoundException( "Did not find marker file: " + touchFile );
 }
 
-touchFile = new File( basedir, "src/it/groovy/touch.txt" );
+touchFile = new File( basedir, "target/its/groovy/touch.txt" );
 System.out.println( "Checking for existence of touch file: " + touchFile );
 if ( !touchFile.exists() )
 {
diff --git a/src/it/script-errors/verify.bsh b/src/it/script-errors/verify.bsh
index c5f3046..81ac2c8 100644
--- a/src/it/script-errors/verify.bsh
+++ b/src/it/script-errors/verify.bsh
@@ -24,14 +24,14 @@
 // make sure the Invoker Plugin was indeed run and the build didn't fail somewhere else
 File touchFile;
 
-touchFile = new File( basedir, "src/it/beanshell/touch.txt" );
+touchFile = new File( basedir, "target/its/beanshell/touch.txt" );
 System.out.println( "Checking for existence of touch file: " + touchFile );
 if ( !touchFile.exists() )
 {
     throw new FileNotFoundException( "Did not find marker file: " + touchFile );
 }
 
-touchFile = new File( basedir, "src/it/groovy/touch.txt" );
+touchFile = new File( basedir, "target/its/groovy/touch.txt" );
 System.out.println( "Checking for existence of touch file: " + touchFile );
 if ( !touchFile.exists() )
 {
diff --git a/src/it/script-interpreter-detection/verify.bsh b/src/it/script-interpreter-detection/verify.bsh
index 3c392bf..8baef9f 100644
--- a/src/it/script-interpreter-detection/verify.bsh
+++ b/src/it/script-interpreter-detection/verify.bsh
@@ -24,10 +24,10 @@
 try
 {
     String[] files = {
-            "src/it/beanshell/target/prebuild.bsh",
-            "src/it/beanshell/target/postbuild.bsh",
-            "src/it/groovy/target/prebuild.groovy",
-            "src/it/groovy/target/postbuild.groovy",
+            "target/its/beanshell/target/prebuild.bsh",
+            "target/its/beanshell/target/postbuild.bsh",
+            "target/its/groovy/target/prebuild.groovy",
+            "target/its/groovy/target/postbuild.groovy",
       };
     for ( String file : files )
     {
diff --git a/src/it/selector-conditions/verify.bsh b/src/it/selector-conditions/verify.bsh
index 7b6bcf5..2618914 100644
--- a/src/it/selector-conditions/verify.bsh
+++ b/src/it/selector-conditions/verify.bsh
@@ -24,8 +24,8 @@
 try
 {
     String[] expected = {
-            "src/it/jre-version-match/target/touch.txt",
-            "src/it/os-family-match/target/touch.txt",
+            "target/its/jre-version-match/target/touch.txt",
+            "target/its/os-family-match/target/touch.txt",
       };
     for ( String file : expected )
     {
@@ -39,8 +39,8 @@
     }
 
     String[] unexpected = {
-            "src/it/jre-version-mismatch/target/touch.txt",
-            "src/it/os-family-mismatch/target/touch.txt",
+            "target/its/jre-version-mismatch/target/touch.txt",
+            "target/its/os-family-mismatch/target/touch.txt",
       };
     for ( String file : unexpected )
     {
diff --git a/src/it/selector-scripts/verify.bsh b/src/it/selector-scripts/verify.bsh
index 2b4fff5..9612c29 100644
--- a/src/it/selector-scripts/verify.bsh
+++ b/src/it/selector-scripts/verify.bsh
@@ -26,8 +26,8 @@
 try
 {
     String[] expected = {
-            "src/it/script-ret-true/target/touch.txt",
-            "src/it/script-ret-quiet/target/touch.txt",
+            "target/its/script-ret-true/target/touch.txt",
+            "target/its/script-ret-quiet/target/touch.txt",
       };
     for ( String file : expected )
     {
@@ -41,9 +41,9 @@
     }
 
     String[] unexpected = {
-            "src/it/script-ret-false/target/touch.txt",
-            "src/it/script-ret-other/target/touch.txt",
-            "src/it/script-throws/target/touch.txt",
+            "target/its/script-ret-false/target/touch.txt",
+            "target/its/script-ret-other/target/touch.txt",
+            "target/its/script-throws/target/touch.txt",
       };
     for ( String file : unexpected )
     {
diff --git a/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java b/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java
index bdd1416..382266f 100644
--- a/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java
+++ b/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java
@@ -169,13 +169,13 @@
     private boolean disableReports;
 
     /**
-     * Directory to which projects should be cloned prior to execution. If not specified, each integration test will be
-     * run in the directory in which the corresponding IT POM was found. In this case, you most likely want to configure
-     * your SCM to ignore <code>target</code> and <code>build.log</code> in the test's base directory.
+     * Directory to which projects should be cloned prior to execution. If set to {@code null}, each integration test 
+     * will be run in the directory in which the corresponding IT POM was found. In this case, you most likely want to
+     * configure your SCM to ignore <code>target</code> and <code>build.log</code> in the test's base directory.
      *
      * @since 1.1
      */
-    @Parameter
+    @Parameter( defaultValue = "${project.build.directory}/its" )
     private File cloneProjectsTo;
 
     // CHECKSTYLE_OFF: LineLength
@@ -198,7 +198,7 @@
      *
      * @since 1.6
      */
-    @Parameter( defaultValue = "false" )
+    @Parameter( defaultValue = "true" )
     private boolean cloneClean;
 
     /**
