diff --git a/pom.xml b/pom.xml
index 74609ce..26065c8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,7 +71,7 @@
   <properties>
     <mavenFilteringVersion>3.2.0</mavenFilteringVersion>
     <mavenVersion>3.1.0</mavenVersion>
-    <javaVersion>7</javaVersion>
+    <javaVersion>8</javaVersion>
     <project.build.outputTimestamp>2020-08-05T15:25:21Z</project.build.outputTimestamp>
   </properties>
 
@@ -126,13 +126,13 @@
     <dependency>
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
-      <version>2.6</version>
+      <version>2.11.0</version>
       <scope>compile</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
-      <version>3.8.1</version>
+      <version>3.12.0</version>
       <scope>compile</scope>
     </dependency>
 
@@ -157,7 +157,7 @@
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
-      <version>3.3.0</version>
+      <version>3.4.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/src/main/java/org/apache/maven/plugins/resources/ResourcesMojo.java b/src/main/java/org/apache/maven/plugins/resources/ResourcesMojo.java
index a350a44..387c119 100644
--- a/src/main/java/org/apache/maven/plugins/resources/ResourcesMojo.java
+++ b/src/main/java/org/apache/maven/plugins/resources/ResourcesMojo.java
@@ -266,7 +266,7 @@
     /**
      * @since 2.4
      */
-    private List<MavenResourcesFiltering> mavenFilteringComponents = new ArrayList<MavenResourcesFiltering>();
+    private List<MavenResourcesFiltering> mavenFilteringComponents = new ArrayList<>();
 
     /**
      * stop searching endToken at the end of line
@@ -324,7 +324,7 @@
 
             MavenResourcesExecution mavenResourcesExecution =
                 new MavenResourcesExecution( getResources(), getOutputDirectory(), project, encoding, combinedFilters,
-                                             Collections.<String>emptyList(), session );
+                                             Collections.emptyList(), session );
 
             mavenResourcesExecution.setEscapeWindowsPaths( escapeWindowsPaths );
 
@@ -443,7 +443,7 @@
         }
         else
         {
-            List<String> result = new ArrayList<String>();
+            List<String> result = new ArrayList<>();
 
             if ( useBuildFilters && buildFilters != null && !buildFilters.isEmpty() )
             {
diff --git a/src/test/java/org/apache/maven/plugins/resources/AbstractPropertyUtilsTest.java b/src/test/java/org/apache/maven/plugins/resources/AbstractPropertyUtilsTest.java
index 366aa39..4fd8c56 100644
--- a/src/test/java/org/apache/maven/plugins/resources/AbstractPropertyUtilsTest.java
+++ b/src/test/java/org/apache/maven/plugins/resources/AbstractPropertyUtilsTest.java
@@ -23,6 +23,7 @@
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.nio.file.Files;
 import java.util.Enumeration;
 import java.util.Properties;
 
@@ -93,7 +94,7 @@
 
         try
         {
-            in = new FileInputStream( validationPropFile );
+            in = Files.newInputStream( validationPropFile.toPath() );
             validationProp.load( in );
             in.close();
             in = null;
diff --git a/src/test/java/org/apache/maven/plugins/resources/ResourcesMojoTest.java b/src/test/java/org/apache/maven/plugins/resources/ResourcesMojoTest.java
index 31ad57c..6820aed 100644
--- a/src/test/java/org/apache/maven/plugins/resources/ResourcesMojoTest.java
+++ b/src/test/java/org/apache/maven/plugins/resources/ResourcesMojoTest.java
@@ -346,8 +346,7 @@
         MavenExecutionRequest request = new DefaultMavenExecutionRequest();
         request.setSystemProperties( System.getProperties() );
 
-        MavenSession mavenSession =
-            new MavenSession( (PlexusContainer) null, (RepositorySystemSession) null, request, null );
+        MavenSession mavenSession = new MavenSession( null, null, request, null );
         setVariableValueToObject( mojo, "session", mavenSession );
         mojo.execute();
 
@@ -357,15 +356,10 @@
         assertTrue( userDir.exists() );
 
         Properties props = new Properties();
-        final FileInputStream inStream = new FileInputStream( new File( resourcesDir, "file4.txt" ) );
-        try
+        try ( FileInputStream inStream = new FileInputStream( new File( resourcesDir, "file4.txt" ) ) )
         {
             props.load( inStream );
         }
-        finally
-        {
-            inStream.close();
-        }
         File fileFromFiltering = new File( props.getProperty( "current-working-directory" ) );
 
         assertTrue( fileFromFiltering.getAbsolutePath() + " does not exist.", fileFromFiltering.exists() );
@@ -455,7 +449,7 @@
         MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourcePropertyFiles_Filtering" );
         List<Resource> resources = project.getBuild()
                                 .getResources();
-        LinkedList<String> filterList = new LinkedList<String>();
+        LinkedList<String> filterList = new LinkedList<>();
 
         assertNotNull( mojo );
 
@@ -491,7 +485,7 @@
         MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourcePropertyFiles_Extra" );
         List<Resource> resources = project.getBuild()
                                 .getResources();
-        LinkedList<String> filterList = new LinkedList<String>();
+        LinkedList<String> filterList = new LinkedList<>();
 
         assertNotNull( mojo );
 
@@ -527,8 +521,8 @@
         MavenProjectResourcesStub project = new MavenProjectResourcesStub( "resourcePropertyFiles_MainAndExtra" );
         List<Resource> resources = project.getBuild()
                                 .getResources();
-        LinkedList<String> filterList = new LinkedList<String>();
-        LinkedList<String> extraFilterList = new LinkedList<String>();
+        LinkedList<String> filterList = new LinkedList<>();
+        LinkedList<String> extraFilterList = new LinkedList<>();
 
         assertNotNull( mojo );
 
@@ -575,7 +569,7 @@
             new MavenProjectResourcesStub( "resourcePropertyFiles_Filtering_TokensInFilters" );
         final List<Resource> resources = project.getBuild()
                                       .getResources();
-        final LinkedList<String> filterList = new LinkedList<String>();
+        final LinkedList<String> filterList = new LinkedList<>();
 
         assertNotNull( mojo );
 
diff --git a/src/test/java/org/apache/maven/plugins/resources/filters/ItFilter.java b/src/test/java/org/apache/maven/plugins/resources/filters/ItFilter.java
index 9fb95ae..adaf44c 100644
--- a/src/test/java/org/apache/maven/plugins/resources/filters/ItFilter.java
+++ b/src/test/java/org/apache/maven/plugins/resources/filters/ItFilter.java
@@ -47,7 +47,7 @@
     public List<String> getDefaultNonFilteredFileExtensions()
     {
         //  no op
-        return Collections.<String>emptyList();
+        return Collections.emptyList();
     }
 
     /** 
@@ -68,7 +68,7 @@
         try
         {
             File f = new File( mavenResourcesExecution.getOutputDirectory(), "foo.txt" );
-            List<String> lines = new ArrayList<String>();
+            List<String> lines = new ArrayList<>();
             
             lines.add( "foo" );
             lines.add( "version="+mavenResourcesExecution.getMavenProject().getVersion() );
diff --git a/src/test/java/org/apache/maven/plugins/resources/stub/MavenProjectBasicStub.java b/src/test/java/org/apache/maven/plugins/resources/stub/MavenProjectBasicStub.java
index af9e4e9..8893cbf 100644
--- a/src/test/java/org/apache/maven/plugins/resources/stub/MavenProjectBasicStub.java
+++ b/src/test/java/org/apache/maven/plugins/resources/stub/MavenProjectBasicStub.java
@@ -38,7 +38,6 @@
     protected String description;
 
     public MavenProjectBasicStub( String id )
-        throws Exception
     {
         properties = new Properties();
         identifier = id;
diff --git a/src/test/java/org/apache/maven/plugins/resources/stub/MavenProjectBuildStub.java b/src/test/java/org/apache/maven/plugins/resources/stub/MavenProjectBuildStub.java
index ad032c9..a3712c9 100644
--- a/src/test/java/org/apache/maven/plugins/resources/stub/MavenProjectBuildStub.java
+++ b/src/test/java/org/apache/maven/plugins/resources/stub/MavenProjectBuildStub.java
@@ -63,9 +63,9 @@
         super( key );
 
         build = new Build();
-        fileList = new ArrayList<String>();
-        directoryList = new ArrayList<String>();
-        dataMap = new HashMap<String, String>();
+        fileList = new ArrayList<>();
+        directoryList = new ArrayList<>();
+        dataMap = new HashMap<>();
         setupBuild();
     }
 
diff --git a/src/test/java/org/apache/maven/plugins/resources/stub/MavenProjectResourcesStub.java b/src/test/java/org/apache/maven/plugins/resources/stub/MavenProjectResourcesStub.java
index c3c26f2..b55ef71 100644
--- a/src/test/java/org/apache/maven/plugins/resources/stub/MavenProjectResourcesStub.java
+++ b/src/test/java/org/apache/maven/plugins/resources/stub/MavenProjectResourcesStub.java
@@ -39,49 +39,49 @@
 
     public void addInclude( String pattern )
     {
-        ( (Resource) build.getResources().get( 0 ) ).addInclude( pattern );
+        build.getResources().get( 0 ).addInclude( pattern );
     }
 
     public void addExclude( String pattern )
     {
-        ( (Resource) build.getResources().get( 0 ) ).addExclude( pattern );
+        build.getResources().get( 0 ).addExclude( pattern );
     }
 
     public void addTestInclude( String pattern )
     {
-        ( (Resource) build.getTestResources().get( 0 ) ).addInclude( pattern );
+        build.getTestResources().get( 0 ).addInclude( pattern );
     }
 
     public void addTestExclude( String pattern )
     {
-        ( (Resource) build.getTestResources().get( 0 ) ).addExclude( pattern );
+        build.getTestResources().get( 0 ).addExclude( pattern );
     }
 
     public void setTargetPath( String path )
     {
-        ( (Resource) build.getResources().get( 0 ) ).setTargetPath( path );
+        build.getResources().get( 0 ).setTargetPath( path );
     }
 
     public void setTestTargetPath( String path )
     {
-        ( (Resource) build.getTestResources().get( 0 ) ).setTargetPath( path );
+        build.getTestResources().get( 0 ).setTargetPath( path );
     }
 
     public void setDirectory( String dir )
     {
-        ( (Resource) build.getResources().get( 0 ) ).setDirectory( dir );
+        build.getResources().get( 0 ).setDirectory( dir );
     }
 
     public void setTestDirectory( String dir )
     {
-        ( (Resource) build.getTestResources().get( 0 ) ).setDirectory( dir );
+        build.getTestResources().get( 0 ).setDirectory( dir );
     }
 
     public void setResourceFiltering( int nIndex, boolean filter )
     {
         if ( build.getResources().size() > nIndex )
         {
-            ( (Resource) build.getResources().get( nIndex ) ).setFiltering( filter );
+            build.getResources().get( nIndex ).setFiltering( filter );
         }
     }
 
