diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java b/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java
index e54fc01..9cc75e1 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java
@@ -183,12 +183,7 @@
 
             archiver.createArchive();
         }
-        catch ( final ArchiverException e )
-        {
-            throw new ArchiveCreationException(
-                "Error creating assembly archive " + assembly.getId() + ": " + e.getMessage(), e );
-        }
-        catch ( final IOException e )
+        catch ( final ArchiverException | IOException e )
         {
             throw new ArchiveCreationException(
                 "Error creating assembly archive " + assembly.getId() + ": " + e.getMessage(), e );
@@ -385,12 +380,7 @@
         {
             config = Xpp3DomBuilder.build( new StringReader( configSource.getArchiverConfig() ) );
         }
-        catch ( final XmlPullParserException e )
-        {
-            throw new ArchiverException( "Failed to parse archiver configuration for: " + archiver.getClass().getName(),
-                                         e );
-        }
-        catch ( final IOException e )
+        catch ( final XmlPullParserException | IOException e )
         {
             throw new ArchiverException( "Failed to parse archiver configuration for: " + archiver.getClass().getName(),
                                          e );
@@ -443,11 +433,7 @@
             configureComponent.invoke( configurator, component, configuration, expressionEvaluator, containerRealm[0],
                                        listener );
         }
-        catch ( final NoSuchMethodException e )
-        {
-            throw new RuntimeException( e );
-        }
-        catch ( final IllegalAccessException e )
+        catch ( final NoSuchMethodException | IllegalAccessException e )
         {
             throw new RuntimeException( e );
         }
@@ -472,11 +458,7 @@
             final Method getContainerRealm = container.getClass().getMethod( "getContainerRealm" );
             return new Object[]{ getContainerRealm.invoke( container ), getContainerRealm.getReturnType() };
         }
-        catch ( final NoSuchMethodException e )
-        {
-            throw new RuntimeException( e );
-        }
-        catch ( final IllegalAccessException e )
+        catch ( final NoSuchMethodException | IllegalAccessException e )
         {
             throw new RuntimeException( e );
         }
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/ManifestCreationFinalizer.java b/src/main/java/org/apache/maven/plugins/assembly/archive/ManifestCreationFinalizer.java
index 4ed1d3e..3522981 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/ManifestCreationFinalizer.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/ManifestCreationFinalizer.java
@@ -136,11 +136,7 @@
                     return Collections.singletonList( "META-INF/MANIFEST.MF" );
                 }
             }
-            catch ( final ManifestException ignore )
-            {
-                // noop
-            }
-            catch ( final DependencyResolutionRequiredException ignore )
+            catch ( final ManifestException | DependencyResolutionRequiredException ignore )
             {
                 // noop
             }
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java
index 799f39f..67701a4 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java
@@ -122,11 +122,7 @@
                 int mode = TypeConversionUtils.modeToInt( fileItem.getFileMode(), getLogger() );
                 archiver.addResource( restoUse, target, mode );
             }
-            catch ( final ArchiverException e )
-            {
-                throw new ArchiveCreationException( "Error adding file to archive: " + e.getMessage(), e );
-            }
-            catch ( IOException e )
+            catch ( final ArchiverException | IOException e )
             {
                 throw new ArchiveCreationException( "Error adding file to archive: " + e.getMessage(), e );
             }
diff --git a/src/main/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReader.java b/src/main/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReader.java
index 2dfd47a..7ef826e 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReader.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReader.java
@@ -360,12 +360,7 @@
             reader.close();
             reader = null;
         }
-        catch ( final IOException e )
-        {
-            throw new AssemblyReadException( "Error reading descriptor: " + locationDescription + ": " + e.getMessage(),
-                                             e );
-        }
-        catch ( final XmlPullParserException e )
+        catch ( final IOException | XmlPullParserException e )
         {
             throw new AssemblyReadException( "Error reading descriptor: " + locationDescription + ": " + e.getMessage(),
                                              e );
@@ -454,12 +449,7 @@
                 reader = new InputStreamReader( resolvedLocation.getInputStream() );
                 component = new ComponentXpp3Reader( transformer ).read( reader );
             }
-            catch ( final IOException e )
-            {
-                throw new AssemblyReadException( "Error reading component descriptor: " + location + " (resolved to: "
-                    + resolvedLocation.getSpecification() + ")", e );
-            }
-            catch ( final XmlPullParserException e )
+            catch ( final IOException | XmlPullParserException e )
             {
                 throw new AssemblyReadException( "Error reading component descriptor: " + location + " (resolved to: "
                     + resolvedLocation.getSpecification() + ")", e );
diff --git a/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java b/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
index c6a00ff..d74da75 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
@@ -527,11 +527,7 @@
                     }
                 }
             }
-            catch ( final ArchiveCreationException e )
-            {
-                throw new MojoExecutionException( "Failed to create assembly: " + e.getMessage(), e );
-            }
-            catch ( final AssemblyFormattingException e )
+            catch ( final ArchiveCreationException | AssemblyFormattingException e )
             {
                 throw new MojoExecutionException( "Failed to create assembly: " + e.getMessage(), e );
             }
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java
index b404ab3..dbb6cf4 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java
@@ -166,11 +166,7 @@
         {
             macMgr.archiver.createArchive();
         }
-        catch ( final ArchiverException e )
-        {
-            fail( "Should never happen" );
-        }
-        catch ( final IOException e )
+        catch ( final ArchiverException | IOException e )
         {
             fail( "Should never happen" );
         }
