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..1b2160e 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
@@ -57,7 +57,7 @@
 
         File assembly = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.zip");
 
-        Set<String> required = new HashSet<String>();
+        Set<String> required = new HashSet<>();
 
         required.add(archivePathFromProject(BASENAME, VERSION, "/pom.xml"));
         required.add(archivePathFromChild(BASENAME, VERSION, "child1", "pom.xml"));
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..a73299b 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
@@ -51,7 +51,7 @@
 
         File assembly = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.zip");
 
-        Set<String> required = new HashSet<String>();
+        Set<String> required = new HashSet<>();
 
         required.add(archivePathFromProject(BASENAME, VERSION, "/pom.xml"));
         required.add(archivePathFromChild(BASENAME, VERSION, "child1", "pom.xml"));
@@ -62,7 +62,7 @@
         required.add(
                 archivePathFromChild(BASENAME, VERSION, "child2", "/src/main/java/org/apache/assembly/it/App.java"));
 
-        Set<String> banned = new HashSet<String>();
+        Set<String> banned = new HashSet<>();
 
         banned.add(archivePathFromProject(BASENAME, VERSION, "/target/"));
         banned.add(archivePathFromChild(BASENAME, VERSION, "child1", "/target/"));
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..8505112 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
@@ -51,7 +51,7 @@
 
         File assembly = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.zip");
 
-        Set<String> required = new HashSet<String>();
+        Set<String> required = new HashSet<>();
 
         required.add(archivePathFromProject(BASENAME, VERSION, "/pom.xml"));
         required.add(archivePathFromChild(BASENAME, VERSION, "child1", "/pom.xml"));
@@ -61,7 +61,7 @@
         required.add(archivePathFromChild(BASENAME, VERSION, "child1", "/src/main/java/target/App.java"));
         required.add(archivePathFromChild(BASENAME, VERSION, "child2", "/src/main/java/target/App.java"));
 
-        Set<String> banned = new HashSet<String>();
+        Set<String> banned = new HashSet<>();
 
         banned.add(archivePathFromProject(BASENAME, VERSION, "/target/"));
         banned.add(archivePathFromChild(BASENAME, VERSION, "child1", "/target/"));
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..e7d905e 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
@@ -51,14 +51,14 @@
 
         File assembly = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.zip");
 
-        Set<String> required = new HashSet<String>();
+        Set<String> required = new HashSet<>();
 
         required.add(archivePathFromProject(BASENAME, VERSION, "/pom.xml"));
         required.add(archivePathFromProject(BASENAME, VERSION, "/LICENSE"));
         required.add(archivePathFromProject(BASENAME, VERSION, "/DEPENDENCIES"));
         required.add(archivePathFromProject(BASENAME, VERSION, "/NOTICE"));
 
-        Set<String> banned = new HashSet<String>();
+        Set<String> banned = new HashSet<>();
 
         banned.add(archivePathFromChild(BASENAME, VERSION, "child1", "/LICENSE"));
         banned.add(archivePathFromChild(BASENAME, VERSION, "child1", "/DEPENDENCIES"));
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..472f5f5 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
@@ -54,7 +54,7 @@
 
         Set<String> required = Collections.emptySet();
 
-        Set<String> banned = new HashSet<String>();
+        Set<String> banned = new HashSet<>();
 
         banned.add(archivePathFromProject(BASENAME, VERSION, "/.classpath"));
         banned.add(archivePathFromProject(BASENAME, VERSION, "/.project"));
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..d986d60 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
@@ -54,7 +54,7 @@
 
         Set<String> required = Collections.emptySet();
 
-        Set<String> banned = new HashSet<String>();
+        Set<String> banned = new HashSet<>();
 
         banned.add(archivePathFromProject(BASENAME, VERSION, "/cobertura.ser"));
         banned.add(archivePathFromProject(BASENAME, VERSION, "/release.properties"));
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..9623003 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
@@ -53,7 +53,7 @@
 
         Set<String> required = Collections.emptySet();
 
-        Set<String> banned = new HashSet<String>();
+        Set<String> banned = new HashSet<>();
 
         banned.add(archivePathFromProject(BASENAME, VERSION, "/.github"));
         banned.add(archivePathFromProject(BASENAME, VERSION, "/Jenkinsfile"));
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..af84dd8 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
@@ -51,7 +51,7 @@
 
         File assembly = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.zip");
 
-        Set<String> required = new HashSet<String>();
+        Set<String> required = new HashSet<>();
 
         required.add(archivePathFromProject(BASENAME, VERSION, "/pom.xml"));
         required.add(archivePathFromChild(BASENAME, VERSION, "child1", "/pom.xml"));
@@ -64,7 +64,7 @@
         required.add(archivePathFromChild(
                 BASENAME, VERSION, "child2", "/src/test/resources/project/src/main/resources/test.properties"));
 
-        Set<String> banned = new HashSet<String>();
+        Set<String> banned = new HashSet<>();
 
         banned.add(archivePathFromProject(BASENAME, VERSION, "/target/"));
         banned.add(archivePathFromProject(
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..714059a 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
@@ -51,7 +51,7 @@
 
         File assembly = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.zip");
 
-        Set<String> required = new HashSet<String>();
+        Set<String> required = new HashSet<>();
 
         required.add(archivePathFromProject(BASENAME, VERSION, "/pom.xml"));
         required.add(archivePathFromChild(BASENAME, VERSION, "child1", "/pom.xml"));
@@ -84,7 +84,7 @@
         required.add(archivePathFromChild(BASENAME, VERSION, "child1", "/src/test/resources/release.properties"));
         required.add(archivePathFromChild(BASENAME, VERSION, "child1", "/src/test/resources/pom.xml.releaseBackup"));
 
-        Set<String> banned = new HashSet<String>();
+        Set<String> banned = new HashSet<>();
 
         assertZipContents(required, banned, assembly);
     }
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..223b287 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
@@ -59,7 +59,7 @@
         File zipAssemblyFile = new File(testDir, "target/" + BASENAME + "-" + VERSION + "-source-release.zip");
         Assert.assertTrue("zip assembly should  have been created", zipAssemblyFile.exists());
 
-        Set<String> required = new HashSet<String>();
+        Set<String> required = new HashSet<>();
 
         required.add(archivePathFromProject(BASENAME, VERSION, "/pom.xml"));
         required.add(archivePathFromChild(BASENAME, VERSION, "child1", "pom.xml"));
diff --git a/source-release/src/test/java/org/apache/its/util/TestUtils.java b/source-release/src/test/java/org/apache/its/util/TestUtils.java
index 714370f..09f4c5e 100644
--- a/source-release/src/test/java/org/apache/its/util/TestUtils.java
+++ b/source-release/src/test/java/org/apache/its/util/TestUtils.java
@@ -62,7 +62,7 @@
         try {
             tarFile = new GZipTarFile(assembly);
 
-            LinkedHashSet<String> pathSet = new LinkedHashSet<String>();
+            LinkedHashSet<String> pathSet = new LinkedHashSet<>();
 
             for (@SuppressWarnings("unchecked") Enumeration<ArchiveEntry> enumeration = tarFile.getEntries();
                     enumeration.hasMoreElements(); ) {
@@ -84,7 +84,7 @@
         try {
             zf = new ZipFile(assembly);
 
-            LinkedHashSet<String> pathSet = new LinkedHashSet<String>();
+            LinkedHashSet<String> pathSet = new LinkedHashSet<>();
 
             for (Enumeration<? extends ZipEntry> enumeration = zf.entries(); enumeration.hasMoreElements(); ) {
                 pathSet.add(enumeration.nextElement().getName());
@@ -100,14 +100,14 @@
     private static void assertArchiveContents(
             Set<String> required, Set<String> banned, String assemblyName, Set<String> contents) {
 
-        Set<String> missing = new HashSet<String>();
+        Set<String> missing = new HashSet<>();
         for (String name : required) {
             if (!contents.contains(name)) {
                 missing.add(name);
             }
         }
 
-        Set<String> banViolations = new HashSet<String>();
+        Set<String> banViolations = new HashSet<>();
         for (String name : banned) {
             if (contents.contains(name)) {
                 banViolations.add(name);
