diff --git a/source-release/pom.xml b/source-release/pom.xml
index e10ac16..146cd55 100644
--- a/source-release/pom.xml
+++ b/source-release/pom.xml
@@ -41,14 +41,15 @@
     <!-- The (possibly instrumented copy of the) Maven distribution we actually use for the tests. -->
     <preparedMavenHome>${mavenHome}</preparedMavenHome>
     <!-- the version of maven-assembly-plugin to use in ITs -->
-    <assemblyPluginVersion>2.6</assemblyPluginVersion>
+    <assemblyPluginVersion>3.5.0</assemblyPluginVersion>
+    <surefire.version>3.0.0</surefire.version>
   </properties>
 
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
-      <version>4.5</version>
+      <version>4.13.2</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -59,13 +60,25 @@
     <dependency>
       <groupId>org.apache.maven.shared</groupId>
       <artifactId>maven-verifier</artifactId>
-      <version>1.8.0</version>
+      <version>2.0.0-M1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>2.7</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-archiver</artifactId>
-      <version>3.6.0</version>
+      <version>4.6.0</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-compress</artifactId>
+      <version>1.21</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/source-release/src/test/java/org/apache/its/IT_000_BasicArchiveCreation.java b/source-release/src/test/java/org/apache/its/IT_000_BasicArchiveCreation.java
index effd007..25552bb 100644
--- a/source-release/src/test/java/org/apache/its/IT_000_BasicArchiveCreation.java
+++ b/source-release/src/test/java/org/apache/its/IT_000_BasicArchiveCreation.java
@@ -25,15 +25,15 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import junit.framework.Assert;
-import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
+import org.apache.maven.shared.verifier.VerificationException;
+import org.apache.maven.shared.verifier.Verifier;
 import org.junit.Test;
 
 import static org.apache.its.util.TestUtils.archivePathFromChild;
 import static org.apache.its.util.TestUtils.archivePathFromProject;
 import static org.apache.its.util.TestUtils.assertZipContents;
 import static org.apache.its.util.TestUtils.getTestDir;
+import static org.junit.Assert.assertFalse;
 
 public class IT_000_BasicArchiveCreation {
 
@@ -45,15 +45,13 @@
         File testDir = getTestDir(BASENAME);
 
         Verifier verifier = new Verifier(testDir.getAbsolutePath());
-
-        verifier.executeGoal("package");
-
+        verifier.addCliArgument("package");
+        verifier.execute();
         verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
 
         // make sure the tar did NOT get created by default
         File tarAssemblyFile = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.tar.gz");
-        Assert.assertFalse("tar assembly should not have been created", tarAssemblyFile.exists());
+        assertFalse("tar assembly should not have been created", tarAssemblyFile.exists());
 
         File assembly = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.zip");
 
diff --git a/source-release/src/test/java/org/apache/its/IT_001_ExcludeBuildOutputDirectory.java b/source-release/src/test/java/org/apache/its/IT_001_ExcludeBuildOutputDirectory.java
index 966a8bc..341cb11 100644
--- a/source-release/src/test/java/org/apache/its/IT_001_ExcludeBuildOutputDirectory.java
+++ b/source-release/src/test/java/org/apache/its/IT_001_ExcludeBuildOutputDirectory.java
@@ -24,8 +24,8 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
+import org.apache.maven.shared.verifier.VerificationException;
+import org.apache.maven.shared.verifier.Verifier;
 import org.junit.Test;
 
 import static org.apache.its.util.TestUtils.archivePathFromChild;
@@ -43,11 +43,9 @@
         File testDir = getTestDir(BASENAME);
 
         Verifier verifier = new Verifier(testDir.getAbsolutePath());
-
-        verifier.executeGoal("package");
-
+        verifier.addCliArgument("package");
+        verifier.execute();
         verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
 
         File assembly = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.zip");
 
diff --git a/source-release/src/test/java/org/apache/its/IT_002_IncludeSrcDirWithBuildOutputDirName.java b/source-release/src/test/java/org/apache/its/IT_002_IncludeSrcDirWithBuildOutputDirName.java
index 3adbdab..86adefb 100644
--- a/source-release/src/test/java/org/apache/its/IT_002_IncludeSrcDirWithBuildOutputDirName.java
+++ b/source-release/src/test/java/org/apache/its/IT_002_IncludeSrcDirWithBuildOutputDirName.java
@@ -24,8 +24,8 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
+import org.apache.maven.shared.verifier.VerificationException;
+import org.apache.maven.shared.verifier.Verifier;
 import org.junit.Test;
 
 import static org.apache.its.util.TestUtils.archivePathFromChild;
@@ -43,11 +43,9 @@
         File testDir = getTestDir(BASENAME);
 
         Verifier verifier = new Verifier(testDir.getAbsolutePath());
-
-        verifier.executeGoal("package");
-
+        verifier.addCliArgument("package");
+        verifier.execute();
         verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
 
         File assembly = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.zip");
 
diff --git a/source-release/src/test/java/org/apache/its/IT_003_SharedResourceInclusion.java b/source-release/src/test/java/org/apache/its/IT_003_SharedResourceInclusion.java
index 3e90d5b..8f52860 100644
--- a/source-release/src/test/java/org/apache/its/IT_003_SharedResourceInclusion.java
+++ b/source-release/src/test/java/org/apache/its/IT_003_SharedResourceInclusion.java
@@ -24,8 +24,8 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
+import org.apache.maven.shared.verifier.VerificationException;
+import org.apache.maven.shared.verifier.Verifier;
 import org.junit.Test;
 
 import static org.apache.its.util.TestUtils.archivePathFromChild;
@@ -43,11 +43,9 @@
         File testDir = getTestDir(BASENAME);
 
         Verifier verifier = new Verifier(testDir.getAbsolutePath());
-
-        verifier.executeGoal("package");
-
+        verifier.addCliArgument("package");
+        verifier.execute();
         verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
 
         File assembly = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.zip");
 
diff --git a/source-release/src/test/java/org/apache/its/IT_004_IdeExcludes.java b/source-release/src/test/java/org/apache/its/IT_004_IdeExcludes.java
index 760899a..7a82e19 100644
--- a/source-release/src/test/java/org/apache/its/IT_004_IdeExcludes.java
+++ b/source-release/src/test/java/org/apache/its/IT_004_IdeExcludes.java
@@ -25,8 +25,8 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
+import org.apache.maven.shared.verifier.VerificationException;
+import org.apache.maven.shared.verifier.Verifier;
 import org.junit.Test;
 
 import static org.apache.its.util.TestUtils.archivePathFromChild;
@@ -44,11 +44,9 @@
         File testDir = getTestDir(BASENAME);
 
         Verifier verifier = new Verifier(testDir.getAbsolutePath());
-
-        verifier.executeGoal("package");
-
+        verifier.addCliArgument("package");
+        verifier.execute();
         verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
 
         File assembly = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.zip");
 
diff --git a/source-release/src/test/java/org/apache/its/IT_005_MiscellaneousExcludes.java b/source-release/src/test/java/org/apache/its/IT_005_MiscellaneousExcludes.java
index cb584c1..411639a 100644
--- a/source-release/src/test/java/org/apache/its/IT_005_MiscellaneousExcludes.java
+++ b/source-release/src/test/java/org/apache/its/IT_005_MiscellaneousExcludes.java
@@ -25,8 +25,8 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
+import org.apache.maven.shared.verifier.VerificationException;
+import org.apache.maven.shared.verifier.Verifier;
 import org.junit.Test;
 
 import static org.apache.its.util.TestUtils.archivePathFromChild;
@@ -44,11 +44,9 @@
         File testDir = getTestDir(BASENAME);
 
         Verifier verifier = new Verifier(testDir.getAbsolutePath());
-
-        verifier.executeGoal("package");
-
+        verifier.addCliArgument("package");
+        verifier.execute();
         verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
 
         File assembly = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.zip");
 
diff --git a/source-release/src/test/java/org/apache/its/IT_006_CiExcludes.java b/source-release/src/test/java/org/apache/its/IT_006_CiExcludes.java
index 5a5d0bd..64821b8 100644
--- a/source-release/src/test/java/org/apache/its/IT_006_CiExcludes.java
+++ b/source-release/src/test/java/org/apache/its/IT_006_CiExcludes.java
@@ -25,8 +25,8 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
+import org.apache.maven.shared.verifier.VerificationException;
+import org.apache.maven.shared.verifier.Verifier;
 import org.junit.Test;
 
 import static org.apache.its.util.TestUtils.archivePathFromProject;
@@ -43,11 +43,9 @@
         File testDir = getTestDir(BASENAME);
 
         Verifier verifier = new Verifier(testDir.getAbsolutePath());
-
-        verifier.executeGoal("package");
-
+        verifier.addCliArgument("package");
+        verifier.execute();
         verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
 
         File assembly = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.zip");
 
diff --git a/source-release/src/test/java/org/apache/its/IT_ExcludeSrcDirWithinBuildOutputDir.java b/source-release/src/test/java/org/apache/its/IT_ExcludeSrcDirWithinBuildOutputDir.java
index 3e0f7c5..59e0445 100644
--- a/source-release/src/test/java/org/apache/its/IT_ExcludeSrcDirWithinBuildOutputDir.java
+++ b/source-release/src/test/java/org/apache/its/IT_ExcludeSrcDirWithinBuildOutputDir.java
@@ -24,8 +24,8 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
+import org.apache.maven.shared.verifier.VerificationException;
+import org.apache.maven.shared.verifier.Verifier;
 import org.junit.Test;
 
 import static org.apache.its.util.TestUtils.archivePathFromChild;
@@ -43,11 +43,9 @@
         File testDir = getTestDir(BASENAME);
 
         Verifier verifier = new Verifier(testDir.getAbsolutePath());
-
-        verifier.executeGoal("package");
-
+        verifier.addCliArgument("package");
+        verifier.execute();
         verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
 
         File assembly = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.zip");
 
diff --git a/source-release/src/test/java/org/apache/its/IT_IncludeIdeFilesWithinSrcDir.java b/source-release/src/test/java/org/apache/its/IT_IncludeIdeFilesWithinSrcDir.java
index bc86d6f..4fca4b7 100644
--- a/source-release/src/test/java/org/apache/its/IT_IncludeIdeFilesWithinSrcDir.java
+++ b/source-release/src/test/java/org/apache/its/IT_IncludeIdeFilesWithinSrcDir.java
@@ -24,8 +24,8 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
+import org.apache.maven.shared.verifier.VerificationException;
+import org.apache.maven.shared.verifier.Verifier;
 import org.junit.Test;
 
 import static org.apache.its.util.TestUtils.archivePathFromChild;
@@ -43,11 +43,9 @@
         File testDir = getTestDir(BASENAME);
 
         Verifier verifier = new Verifier(testDir.getAbsolutePath());
-
-        verifier.executeGoal("package");
-
+        verifier.addCliArgument("package");
+        verifier.execute();
         verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
 
         File assembly = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.zip");
 
diff --git a/source-release/src/test/java/org/apache/its/IT_ZipAndTarCreation.java b/source-release/src/test/java/org/apache/its/IT_ZipAndTarCreation.java
index 040beee..8afd9e7 100644
--- a/source-release/src/test/java/org/apache/its/IT_ZipAndTarCreation.java
+++ b/source-release/src/test/java/org/apache/its/IT_ZipAndTarCreation.java
@@ -25,9 +25,8 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import junit.framework.Assert;
-import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
+import org.apache.maven.shared.verifier.VerificationException;
+import org.apache.maven.shared.verifier.Verifier;
 import org.junit.Test;
 
 import static org.apache.its.util.TestUtils.archivePathFromChild;
@@ -35,6 +34,7 @@
 import static org.apache.its.util.TestUtils.assertTarContents;
 import static org.apache.its.util.TestUtils.assertZipContents;
 import static org.apache.its.util.TestUtils.getTestDir;
+import static org.junit.Assert.assertTrue;
 
 public class IT_ZipAndTarCreation {
 
@@ -46,18 +46,16 @@
         File testDir = getTestDir(BASENAME);
 
         Verifier verifier = new Verifier(testDir.getAbsolutePath());
-
-        verifier.executeGoal("package");
-
+        verifier.addCliArgument("package");
+        verifier.execute();
         verifier.verifyErrorFreeLog();
-        verifier.resetStreams();
 
         // make sure the tar did NOT get created by default
         File tarAssemblyFile = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.tar.gz");
-        Assert.assertTrue("tar assembly should  have been created", tarAssemblyFile.exists());
+        assertTrue("tar assembly should  have been created", tarAssemblyFile.exists());
 
         File zipAssemblyFile = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.zip");
-        Assert.assertTrue("zip assembly should  have been created", zipAssemblyFile.exists());
+        assertTrue("zip assembly should  have been created", zipAssemblyFile.exists());
 
         Set<String> required = new HashSet<String>();
 
