diff --git a/src/main/java/org/apache/maven/reporting/exec/DefaultMavenPluginManagerHelper.java b/src/main/java/org/apache/maven/reporting/exec/DefaultMavenPluginManagerHelper.java
index 0fe9fca..0e712e3 100644
--- a/src/main/java/org/apache/maven/reporting/exec/DefaultMavenPluginManagerHelper.java
+++ b/src/main/java/org/apache/maven/reporting/exec/DefaultMavenPluginManagerHelper.java
@@ -34,7 +34,6 @@
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.logging.Logger;
-import org.sonatype.aether.repository.RemoteRepository;
 
 /**
  * {@link MavenPluginManager} helper to deal with API changes between Maven 3.0.x and 3.1.x, ie switch from Sonatype Aether
@@ -129,15 +128,15 @@
         }
     }
 
-    public PluginDescriptor getPluginDescriptor( Plugin plugin, List<RemoteRepository> repositories,
-                                                 MavenSession session )
+    public PluginDescriptor getPluginDescriptor( Plugin plugin, MavenSession session )
         throws PluginResolutionException, PluginDescriptorParsingException, InvalidPluginDescriptorException
     {
         try
         {
             Object repositorySession = getRepositorySession.invoke( session );
+            List<?> remoteRepositories = session.getCurrentProject().getRemotePluginRepositories();
 
-            return (PluginDescriptor) getPluginDescriptor.invoke( mavenPluginManager, plugin, repositories,
+            return (PluginDescriptor) getPluginDescriptor.invoke( mavenPluginManager, plugin, remoteRepositories,
                                                                   repositorySession );
         }
         catch ( IllegalArgumentException e )
diff --git a/src/main/java/org/apache/maven/reporting/exec/DefaultMavenReportExecutor.java b/src/main/java/org/apache/maven/reporting/exec/DefaultMavenReportExecutor.java
index e8bba45..97501ea 100644
--- a/src/main/java/org/apache/maven/reporting/exec/DefaultMavenReportExecutor.java
+++ b/src/main/java/org/apache/maven/reporting/exec/DefaultMavenReportExecutor.java
@@ -55,7 +55,6 @@
 import org.codehaus.plexus.util.xml.Xpp3DomUtils;
 import org.sonatype.aether.RepositorySystemSession;
 import org.sonatype.aether.graph.DependencyFilter;
-import org.sonatype.aether.repository.RemoteRepository;
 
 /**
  * <p>
@@ -176,10 +175,8 @@
         logger.info( "configuring report plugin " + plugin.getId() );
 
         MavenSession session = mavenReportExecutorRequest.getMavenSession();
-        List<RemoteRepository> remoteRepositories = session.getCurrentProject().getRemotePluginRepositories();
 
-        PluginDescriptor pluginDescriptor =
-            mavenPluginManagerHelper.getPluginDescriptor( plugin, remoteRepositories, session );
+        PluginDescriptor pluginDescriptor = mavenPluginManagerHelper.getPluginDescriptor( plugin, session );
 
         List<GoalWithConf> goalsWithConfiguration = new ArrayList<GoalWithConf>();
 
diff --git a/src/main/java/org/apache/maven/reporting/exec/MavenPluginManagerHelper.java b/src/main/java/org/apache/maven/reporting/exec/MavenPluginManagerHelper.java
index 2d6bc97..20b36f2 100644
--- a/src/main/java/org/apache/maven/reporting/exec/MavenPluginManagerHelper.java
+++ b/src/main/java/org/apache/maven/reporting/exec/MavenPluginManagerHelper.java
@@ -29,7 +29,6 @@
 import org.apache.maven.plugin.PluginDescriptorParsingException;
 import org.apache.maven.plugin.PluginResolutionException;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
-import org.sonatype.aether.repository.RemoteRepository;
 
 /**
  * {@link MavenPluginManager} helper to deal with API changes between Maven 3.0.x and 3.1.x.
@@ -39,7 +38,7 @@
  */
 public interface MavenPluginManagerHelper
 {
-    PluginDescriptor getPluginDescriptor( Plugin plugin, List<RemoteRepository> repositories, MavenSession session )
+    PluginDescriptor getPluginDescriptor( Plugin plugin, MavenSession session )
         throws PluginResolutionException, PluginDescriptorParsingException, InvalidPluginDescriptorException;
 
     void setupPluginRealm( PluginDescriptor pluginDescriptor, MavenSession session, ClassLoader parent,
