This is an automated email from the ASF dual-hosted git repository.

slawekjaranowski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-dependency-plugin.git


The following commit(s) were added to refs/heads/master by this push:
     new 37126112 Fix artifact relocation support
37126112 is described below

commit 371261124f9cff27cf0439fe3abaec4e322fae7e
Author: Slawomir Jaranowski <[email protected]>
AuthorDate: Sat May 23 22:05:00 2026 +0200

    Fix artifact relocation support
    
    - Update ITs for `copy`, `unpack`, and relocation use cases.
    - Simplify and align artifact verification in integration tests.
---
 src/it/mrm/repository/ResourceArtifact-1.0.pom     |   2 +-
 ...1.0.pom => ResourceArtifact-relocation-1.0.pom} |  12 ++++++--
 src/it/mrm/repository/get-artifact-1.0.jar         | Bin 345 -> 0 bytes
 .../repository/get-artifact-maven-plugin-1.0.jar   | Bin 345 -> 0 bytes
 .../mrm/repository/get-artifact-transitive-1.0.jar | Bin 345 -> 0 bytes
 src/it/projects/copy-cli/test.properties           |   2 +-
 .../{copy/verify.bsh => copy-cli/verify.groovy}    |  19 +-----------
 .../invoker.properties}                            |   2 +-
 src/it/projects/{copy => copy-relocation}/pom.xml  |   8 ++---
 .../verify.bsh => copy-relocation/verify.groovy}   |  19 +-----------
 src/it/projects/copy/pom.xml                       |   6 ++--
 .../{copy-cli/verify.bsh => copy/verify.groovy}    |  19 +-----------
 .../invoker.properties}                            |   2 +-
 .../projects/{copy => unpack-relocation}/pom.xml   |  24 +++++++++------
 .../verify.bsh => unpack-relocation/verify.groovy} |  19 ++----------
 .../maven/plugins/dependency/ListClassesMojo.java  |   6 +++-
 .../maven/plugins/dependency/PropertiesMojo.java   |   3 +-
 .../AbstractFromConfigurationMojo.java             |  18 ++++++-----
 .../dependency/fromConfiguration/CopyMojo.java     |   6 ++--
 .../dependency/fromConfiguration/UnpackMojo.java   |   6 ++--
 .../AbstractDependencyFilterMojo.java              |   5 +--
 .../fromDependencies/CopyDependenciesMojo.java     |   5 +--
 .../dependency/resolvers/GoOfflineMojo.java        |   6 +++-
 .../dependency/resolvers/ResolvePluginsMojo.java   |   6 +++-
 .../plugins/dependency/utils/ResolverUtil.java     |  34 ++++++++++++++++++---
 25 files changed, 111 insertions(+), 118 deletions(-)

diff --git a/src/it/mrm/repository/ResourceArtifact-1.0.pom 
b/src/it/mrm/repository/ResourceArtifact-1.0.pom
index 322146d2..e44e1cd0 100644
--- a/src/it/mrm/repository/ResourceArtifact-1.0.pom
+++ b/src/it/mrm/repository/ResourceArtifact-1.0.pom
@@ -27,4 +27,4 @@
     <version>1.0</version>
     <packaging>jar</packaging>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/src/it/mrm/repository/ResourceArtifact-1.0.pom 
b/src/it/mrm/repository/ResourceArtifact-relocation-1.0.pom
similarity index 83%
copy from src/it/mrm/repository/ResourceArtifact-1.0.pom
copy to src/it/mrm/repository/ResourceArtifact-relocation-1.0.pom
index 322146d2..d992d407 100644
--- a/src/it/mrm/repository/ResourceArtifact-1.0.pom
+++ b/src/it/mrm/repository/ResourceArtifact-relocation-1.0.pom
@@ -23,8 +23,14 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.apache.maven.its.dependency</groupId>
-    <artifactId>ResourceArtifact</artifactId>
+    <artifactId>ResourceArtifact-relocation</artifactId>
     <version>1.0</version>
-    <packaging>jar</packaging>
+    <packaging>pom</packaging>
 
-</project>
\ No newline at end of file
+  <distributionManagement>
+    <relocation>
+      <artifactId>ResourceArtifact</artifactId>
+    </relocation>
+  </distributionManagement>
+
+</project>
diff --git a/src/it/mrm/repository/get-artifact-1.0.jar 
b/src/it/mrm/repository/get-artifact-1.0.jar
deleted file mode 100644
index 226277c3..00000000
Binary files a/src/it/mrm/repository/get-artifact-1.0.jar and /dev/null differ
diff --git a/src/it/mrm/repository/get-artifact-maven-plugin-1.0.jar 
b/src/it/mrm/repository/get-artifact-maven-plugin-1.0.jar
deleted file mode 100644
index 226277c3..00000000
Binary files a/src/it/mrm/repository/get-artifact-maven-plugin-1.0.jar and 
/dev/null differ
diff --git a/src/it/mrm/repository/get-artifact-transitive-1.0.jar 
b/src/it/mrm/repository/get-artifact-transitive-1.0.jar
deleted file mode 100644
index 226277c3..00000000
Binary files a/src/it/mrm/repository/get-artifact-transitive-1.0.jar and 
/dev/null differ
diff --git a/src/it/projects/copy-cli/test.properties 
b/src/it/projects/copy-cli/test.properties
index 356610c4..8af858c2 100644
--- a/src/it/projects/copy-cli/test.properties
+++ b/src/it/projects/copy-cli/test.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-artifact=org.apache.maven:maven-model:2.0.6
+artifact=org.apache.maven.its.dependency:a1:1.0.0
diff --git a/src/it/projects/copy/verify.bsh 
b/src/it/projects/copy-cli/verify.groovy
similarity index 70%
rename from src/it/projects/copy/verify.bsh
rename to src/it/projects/copy-cli/verify.groovy
index da93772d..37dc0192 100644
--- a/src/it/projects/copy/verify.bsh
+++ b/src/it/projects/copy-cli/verify.groovy
@@ -17,21 +17,4 @@
  * under the License.
  */
 
-import java.io.*;
-
-File libDir = new File( basedir, "target/dependency" );
-
-String[] expectedFiles = {
-    "maven-model-2.0.6.jar",
-};
-
-for ( String expectedFile : expectedFiles )
-{
-    File file = new File( libDir, expectedFile );
-    if ( !file.isFile() )
-    {
-        throw new Exception( "Missing file " + file );
-    }
-}
-
-return true;
+assert new File( basedir, 'target/dependency/a1-1.0.0.jar' ).isFile();
diff --git a/src/it/projects/copy-cli/test.properties 
b/src/it/projects/copy-relocation/invoker.properties
similarity index 94%
copy from src/it/projects/copy-cli/test.properties
copy to src/it/projects/copy-relocation/invoker.properties
index 356610c4..f50e476f 100644
--- a/src/it/projects/copy-cli/test.properties
+++ b/src/it/projects/copy-relocation/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-artifact=org.apache.maven:maven-model:2.0.6
+invoker.goals = clean process-sources
diff --git a/src/it/projects/copy/pom.xml 
b/src/it/projects/copy-relocation/pom.xml
similarity index 89%
copy from src/it/projects/copy/pom.xml
copy to src/it/projects/copy-relocation/pom.xml
index 5e2a00c1..197d49f2 100644
--- a/src/it/projects/copy/pom.xml
+++ b/src/it/projects/copy-relocation/pom.xml
@@ -29,7 +29,7 @@
 
   <name>Test</name>
   <description>
-    Test dependency:copy
+    Test dependency:copy with relocation
   </description>
 
   <properties>
@@ -50,9 +50,9 @@
             <configuration>
               <artifactItems>
                 <artifactItem>
-                  <groupId>org.apache.maven</groupId>
-                  <artifactId>maven-model</artifactId>
-                  <version>2.0.6</version>
+                  <groupId>org.apache.maven.its.dependency</groupId>
+                  <artifactId>ResourceArtifact-relocation</artifactId>
+                  <version>1.0</version>
                 </artifactItem>
               </artifactItems>
             </configuration>
diff --git a/src/it/projects/copy-cli/verify.bsh 
b/src/it/projects/copy-relocation/verify.groovy
similarity index 70%
copy from src/it/projects/copy-cli/verify.bsh
copy to src/it/projects/copy-relocation/verify.groovy
index da93772d..672e5f1e 100644
--- a/src/it/projects/copy-cli/verify.bsh
+++ b/src/it/projects/copy-relocation/verify.groovy
@@ -17,21 +17,4 @@
  * under the License.
  */
 
-import java.io.*;
-
-File libDir = new File( basedir, "target/dependency" );
-
-String[] expectedFiles = {
-    "maven-model-2.0.6.jar",
-};
-
-for ( String expectedFile : expectedFiles )
-{
-    File file = new File( libDir, expectedFile );
-    if ( !file.isFile() )
-    {
-        throw new Exception( "Missing file " + file );
-    }
-}
-
-return true;
+assert new File( basedir, 'target/dependency/ResourceArtifact-1.0.jar' 
).isFile();
diff --git a/src/it/projects/copy/pom.xml b/src/it/projects/copy/pom.xml
index 5e2a00c1..a2a5d695 100644
--- a/src/it/projects/copy/pom.xml
+++ b/src/it/projects/copy/pom.xml
@@ -50,9 +50,9 @@
             <configuration>
               <artifactItems>
                 <artifactItem>
-                  <groupId>org.apache.maven</groupId>
-                  <artifactId>maven-model</artifactId>
-                  <version>2.0.6</version>
+                  <groupId>org.apache.maven.its.dependency</groupId>
+                  <artifactId>a1</artifactId>
+                  <version>1.0.0</version>
                 </artifactItem>
               </artifactItems>
             </configuration>
diff --git a/src/it/projects/copy-cli/verify.bsh 
b/src/it/projects/copy/verify.groovy
similarity index 70%
copy from src/it/projects/copy-cli/verify.bsh
copy to src/it/projects/copy/verify.groovy
index da93772d..37dc0192 100644
--- a/src/it/projects/copy-cli/verify.bsh
+++ b/src/it/projects/copy/verify.groovy
@@ -17,21 +17,4 @@
  * under the License.
  */
 
-import java.io.*;
-
-File libDir = new File( basedir, "target/dependency" );
-
-String[] expectedFiles = {
-    "maven-model-2.0.6.jar",
-};
-
-for ( String expectedFile : expectedFiles )
-{
-    File file = new File( libDir, expectedFile );
-    if ( !file.isFile() )
-    {
-        throw new Exception( "Missing file " + file );
-    }
-}
-
-return true;
+assert new File( basedir, 'target/dependency/a1-1.0.0.jar' ).isFile();
diff --git a/src/it/projects/copy-cli/test.properties 
b/src/it/projects/unpack-relocation/invoker.properties
similarity index 94%
copy from src/it/projects/copy-cli/test.properties
copy to src/it/projects/unpack-relocation/invoker.properties
index 356610c4..f50e476f 100644
--- a/src/it/projects/copy-cli/test.properties
+++ b/src/it/projects/unpack-relocation/invoker.properties
@@ -15,4 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 
-artifact=org.apache.maven:maven-model:2.0.6
+invoker.goals = clean process-sources
diff --git a/src/it/projects/copy/pom.xml 
b/src/it/projects/unpack-relocation/pom.xml
similarity index 83%
copy from src/it/projects/copy/pom.xml
copy to src/it/projects/unpack-relocation/pom.xml
index 5e2a00c1..9436753b 100644
--- a/src/it/projects/copy/pom.xml
+++ b/src/it/projects/unpack-relocation/pom.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
+
 <!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
@@ -17,42 +18,45 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-
+  
 <project xmlns="http://maven.apache.org/POM/4.0.0";
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
-  <modelVersion>4.0.0</modelVersion>
 
+  <modelVersion>4.0.0</modelVersion>
+  
   <groupId>org.apache.maven.its.dependency</groupId>
   <artifactId>test</artifactId>
   <version>1.0-SNAPSHOT</version>
 
   <name>Test</name>
   <description>
-    Test dependency:copy
+    Test dependency:unpack with relocation
   </description>
-
+  
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   </properties>
-
+  
   <build>
+
     <plugins>
       <plugin>
         <artifactId>maven-dependency-plugin</artifactId>
         <version>@project.version@</version>
         <executions>
           <execution>
-            <id>test</id>
+            <id>unpack</id>
             <goals>
-              <goal>copy</goal>
+              <goal>unpack</goal>
             </goals>
             <configuration>
+              
<outputDirectory>${project.build.directory}/ResourceArtifact</outputDirectory>
               <artifactItems>
                 <artifactItem>
-                  <groupId>org.apache.maven</groupId>
-                  <artifactId>maven-model</artifactId>
-                  <version>2.0.6</version>
+                  <groupId>org.apache.maven.its.dependency</groupId>
+                  <artifactId>ResourceArtifact-relocation</artifactId>
+                  <version>1.0</version>
                 </artifactItem>
               </artifactItems>
             </configuration>
diff --git a/src/it/projects/copy-cli/verify.bsh 
b/src/it/projects/unpack-relocation/verify.groovy
similarity index 70%
rename from src/it/projects/copy-cli/verify.bsh
rename to src/it/projects/unpack-relocation/verify.groovy
index da93772d..7c14f5f6 100644
--- a/src/it/projects/copy-cli/verify.bsh
+++ b/src/it/projects/unpack-relocation/verify.groovy
@@ -17,21 +17,8 @@
  * under the License.
  */
 
-import java.io.*;
 
-File libDir = new File( basedir, "target/dependency" );
+assert new File(basedir, 
'target/ResourceArtifact/META-INF/MANIFEST.MF').isFile()
+assert new File(basedir, 'target/ResourceArtifact/resource1.txt').isFile()
+assert new File(basedir, 'target/ResourceArtifact/resource2.txt').isFile()
 
-String[] expectedFiles = {
-    "maven-model-2.0.6.jar",
-};
-
-for ( String expectedFile : expectedFiles )
-{
-    File file = new File( libDir, expectedFile );
-    if ( !file.isFile() )
-    {
-        throw new Exception( "Missing file " + file );
-    }
-}
-
-return true;
diff --git 
a/src/main/java/org/apache/maven/plugins/dependency/ListClassesMojo.java 
b/src/main/java/org/apache/maven/plugins/dependency/ListClassesMojo.java
index 15866fd8..59250599 100644
--- a/src/main/java/org/apache/maven/plugins/dependency/ListClassesMojo.java
+++ b/src/main/java/org/apache/maven/plugins/dependency/ListClassesMojo.java
@@ -35,6 +35,7 @@ import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.dependency.utils.ParamArtifact;
 import org.apache.maven.plugins.dependency.utils.ResolverUtil;
 import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.resolution.ArtifactDescriptorException;
 import org.eclipse.aether.resolution.ArtifactResolutionException;
 import org.eclipse.aether.resolution.DependencyResolutionException;
 
@@ -170,7 +171,10 @@ public class ListClassesMojo extends AbstractMojo {
                         resolverUtil.resolveArtifact(artifact, 
resolverUtil.remoteRepositories(remoteRepositories));
                 printClassesFromArtifactResult(a.getFile());
             }
-        } catch (IOException | ArtifactResolutionException | 
DependencyResolutionException e) {
+        } catch (IOException
+                | ArtifactResolutionException
+                | DependencyResolutionException
+                | ArtifactDescriptorException e) {
             throw new MojoExecutionException("Couldn't download artifact: " + 
e.getMessage(), e);
         }
     }
diff --git 
a/src/main/java/org/apache/maven/plugins/dependency/PropertiesMojo.java 
b/src/main/java/org/apache/maven/plugins/dependency/PropertiesMojo.java
index 0d488055..363446d5 100644
--- a/src/main/java/org/apache/maven/plugins/dependency/PropertiesMojo.java
+++ b/src/main/java/org/apache/maven/plugins/dependency/PropertiesMojo.java
@@ -33,6 +33,7 @@ import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.plugins.dependency.utils.ParamArtifact;
 import org.apache.maven.plugins.dependency.utils.ResolverUtil;
 import org.apache.maven.project.MavenProject;
+import org.eclipse.aether.resolution.ArtifactDescriptorException;
 import org.eclipse.aether.resolution.ArtifactResolutionException;
 
 /**
@@ -134,7 +135,7 @@ public class PropertiesMojo extends AbstractMojo {
                             .setProperty(
                                     toConflictId(artifact), 
artifact.getFile().getAbsolutePath());
                 }
-            } catch (ArtifactResolutionException e) {
+            } catch (ArtifactResolutionException | ArtifactDescriptorException 
e) {
                 throw new MojoExecutionException("Couldn't download artifact: 
" + e.getMessage(), e);
             }
         }
diff --git 
a/src/main/java/org/apache/maven/plugins/dependency/fromConfiguration/AbstractFromConfigurationMojo.java
 
b/src/main/java/org/apache/maven/plugins/dependency/fromConfiguration/AbstractFromConfigurationMojo.java
index 88914298..1c5a5513 100644
--- 
a/src/main/java/org/apache/maven/plugins/dependency/fromConfiguration/AbstractFromConfigurationMojo.java
+++ 
b/src/main/java/org/apache/maven/plugins/dependency/fromConfiguration/AbstractFromConfigurationMojo.java
@@ -35,6 +35,7 @@ import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.dependency.AbstractDependencyMojo;
 import org.apache.maven.plugins.dependency.utils.DependencyUtil;
+import org.apache.maven.plugins.dependency.utils.ResolverUtil;
 import org.apache.maven.plugins.dependency.utils.filters.ArtifactItemFilter;
 import org.apache.maven.project.MavenProject;
 import 
org.apache.maven.shared.artifact.filter.collection.ArtifactFilterException;
@@ -45,9 +46,8 @@ import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.artifact.DefaultArtifact;
 import org.eclipse.aether.repository.LocalRepository;
 import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.resolution.ArtifactRequest;
+import org.eclipse.aether.resolution.ArtifactDescriptorException;
 import org.eclipse.aether.resolution.ArtifactResolutionException;
-import org.eclipse.aether.resolution.ArtifactResult;
 import org.sonatype.plexus.build.incremental.BuildContext;
 
 /**
@@ -122,15 +122,19 @@ public abstract class AbstractFromConfigurationMojo 
extends AbstractDependencyMo
 
     private final RepositorySystem repositorySystem;
 
+    private final ResolverUtil resolverUtil;
+
     protected AbstractFromConfigurationMojo(
             MavenSession session,
             BuildContext buildContext,
             MavenProject project,
             ArtifactHandlerManager artifactHandlerManager,
-            RepositorySystem repositorySystem) {
+            RepositorySystem repositorySystem,
+            ResolverUtil resolverUtil) {
         super(session, buildContext, project);
         this.artifactHandlerManager = artifactHandlerManager;
         this.repositorySystem = repositorySystem;
+        this.resolverUtil = resolverUtil;
     }
 
     abstract ArtifactItemFilter getMarkedArtifactFilter(ArtifactItem item);
@@ -252,11 +256,11 @@ public abstract class AbstractFromConfigurationMojo 
extends AbstractDependencyMo
 
             RepositorySystemSession repositorySession = 
createSystemSessionForLocalRepo();
 
-            ArtifactRequest request = new ArtifactRequest(artifact, 
getProject().getRemoteProjectRepositories(), null);
-            ArtifactResult artifactResult = 
repositorySystem.resolveArtifact(repositorySession, request);
-            return RepositoryUtils.toArtifact(artifactResult.getArtifact());
+            org.eclipse.aether.artifact.Artifact resolvedArtifact = 
resolverUtil.resolveArtifact(
+                    artifact, getProject().getRemoteProjectRepositories(), 
repositorySession);
+            return RepositoryUtils.toArtifact(resolvedArtifact);
 
-        } catch (ArtifactResolutionException e) {
+        } catch (ArtifactResolutionException | ArtifactDescriptorException e) {
             throw new MojoExecutionException("Unable to find/resolve 
artifact.", e);
         }
     }
diff --git 
a/src/main/java/org/apache/maven/plugins/dependency/fromConfiguration/CopyMojo.java
 
b/src/main/java/org/apache/maven/plugins/dependency/fromConfiguration/CopyMojo.java
index dab686a5..644c6121 100644
--- 
a/src/main/java/org/apache/maven/plugins/dependency/fromConfiguration/CopyMojo.java
+++ 
b/src/main/java/org/apache/maven/plugins/dependency/fromConfiguration/CopyMojo.java
@@ -33,6 +33,7 @@ import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.dependency.utils.CopyUtil;
+import org.apache.maven.plugins.dependency.utils.ResolverUtil;
 import org.apache.maven.plugins.dependency.utils.filters.ArtifactItemFilter;
 import org.apache.maven.plugins.dependency.utils.filters.DestFileFilter;
 import org.apache.maven.project.MavenProject;
@@ -93,8 +94,9 @@ public class CopyMojo extends AbstractFromConfigurationMojo {
             MavenProject project,
             ArtifactHandlerManager artifactHandlerManager,
             CopyUtil copyUtil,
-            RepositorySystem repositorySystem) {
-        super(session, buildContext, project, artifactHandlerManager, 
repositorySystem);
+            RepositorySystem repositorySystem,
+            ResolverUtil resolverUtil) {
+        super(session, buildContext, project, artifactHandlerManager, 
repositorySystem, resolverUtil);
         this.copyUtil = copyUtil;
     }
 
diff --git 
a/src/main/java/org/apache/maven/plugins/dependency/fromConfiguration/UnpackMojo.java
 
b/src/main/java/org/apache/maven/plugins/dependency/fromConfiguration/UnpackMojo.java
index e4854371..005299cd 100644
--- 
a/src/main/java/org/apache/maven/plugins/dependency/fromConfiguration/UnpackMojo.java
+++ 
b/src/main/java/org/apache/maven/plugins/dependency/fromConfiguration/UnpackMojo.java
@@ -30,6 +30,7 @@ import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.dependency.utils.ResolverUtil;
 import org.apache.maven.plugins.dependency.utils.UnpackUtil;
 import org.apache.maven.plugins.dependency.utils.filters.ArtifactItemFilter;
 import org.apache.maven.plugins.dependency.utils.filters.MarkerFileFilter;
@@ -111,8 +112,9 @@ public class UnpackMojo extends 
AbstractFromConfigurationMojo {
             MavenProject project,
             ArtifactHandlerManager artifactHandlerManager,
             UnpackUtil unpackUtil,
-            RepositorySystem repositorySystem) {
-        super(session, buildContext, project, artifactHandlerManager, 
repositorySystem);
+            RepositorySystem repositorySystem,
+            ResolverUtil resolverUtil) {
+        super(session, buildContext, project, artifactHandlerManager, 
repositorySystem, resolverUtil);
         this.unpackUtil = unpackUtil;
     }
 
diff --git 
a/src/main/java/org/apache/maven/plugins/dependency/fromDependencies/AbstractDependencyFilterMojo.java
 
b/src/main/java/org/apache/maven/plugins/dependency/fromDependencies/AbstractDependencyFilterMojo.java
index de605f1a..a0a23ca4 100644
--- 
a/src/main/java/org/apache/maven/plugins/dependency/fromDependencies/AbstractDependencyFilterMojo.java
+++ 
b/src/main/java/org/apache/maven/plugins/dependency/fromDependencies/AbstractDependencyFilterMojo.java
@@ -57,6 +57,7 @@ import 
org.apache.maven.shared.artifact.filter.collection.ProjectTransitivityFil
 import org.apache.maven.shared.artifact.filter.collection.ScopeFilter;
 import org.apache.maven.shared.artifact.filter.collection.TypeFilter;
 import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.resolution.ArtifactDescriptorException;
 import org.eclipse.aether.resolution.ArtifactResolutionException;
 import org.eclipse.aether.resolution.DependencyResolutionException;
 import org.sonatype.plexus.build.incremental.BuildContext;
@@ -401,7 +402,7 @@ public abstract class AbstractDependencyFilterMojo extends 
AbstractDependencyMoj
                         RepositoryUtils.toArtifact(project.getArtifact()), 
project.getRemoteProjectRepositories());
 
                 artifacts.add(RepositoryUtils.toArtifact(resolvedArtifact));
-            } catch (ArtifactResolutionException e) {
+            } catch (ArtifactResolutionException | ArtifactDescriptorException 
e) {
                 throw new MojoExecutionException(e.getMessage(), e);
             }
         }
@@ -492,7 +493,7 @@ public abstract class AbstractDependencyFilterMojo extends 
AbstractDependencyMoj
                 org.eclipse.aether.artifact.Artifact resolveArtifact =
                         resolverUtil.resolveArtifact(artifact, 
getProject().getRemoteProjectRepositories());
                 
resolvedArtifacts.add(RepositoryUtils.toArtifact(resolveArtifact));
-            } catch (ArtifactResolutionException ex) {
+            } catch (ArtifactResolutionException | ArtifactDescriptorException 
ex) {
                 // an error occurred during resolution, log it and continue
                 getLog().debug("error resolving: " + artifact, ex);
                 if (stopOnFailure) {
diff --git 
a/src/main/java/org/apache/maven/plugins/dependency/fromDependencies/CopyDependenciesMojo.java
 
b/src/main/java/org/apache/maven/plugins/dependency/fromDependencies/CopyDependenciesMojo.java
index 9378fd52..43a38503 100644
--- 
a/src/main/java/org/apache/maven/plugins/dependency/fromDependencies/CopyDependenciesMojo.java
+++ 
b/src/main/java/org/apache/maven/plugins/dependency/fromDependencies/CopyDependenciesMojo.java
@@ -48,6 +48,7 @@ import 
org.apache.maven.shared.artifact.filter.collection.ArtifactsFilter;
 import org.apache.maven.shared.transfer.artifact.install.ArtifactInstaller;
 import 
org.apache.maven.shared.transfer.artifact.install.ArtifactInstallerException;
 import org.apache.maven.shared.transfer.repository.RepositoryManager;
+import org.eclipse.aether.resolution.ArtifactDescriptorException;
 import org.eclipse.aether.resolution.ArtifactResolutionException;
 import org.eclipse.aether.util.artifact.SubArtifact;
 import org.sonatype.plexus.build.incremental.BuildContext;
@@ -299,7 +300,7 @@ public class CopyDependenciesMojo extends 
AbstractFromDependenciesMojo {
                 org.eclipse.aether.artifact.Artifact resolvedSignature = 
getResolverUtil()
                         .resolveArtifact(aSignatureArtifact, 
getProject().getRemoteProjectRepositories());
                 signatureFile = resolvedSignature.getFile();
-            } catch (ArtifactResolutionException e) {
+            } catch (ArtifactResolutionException | ArtifactDescriptorException 
e) {
                 getLog().warn("Failed to resolve signature file for artifact: 
" + artifact, e);
             }
         }
@@ -380,7 +381,7 @@ public class CopyDependenciesMojo extends 
AbstractFromDependenciesMojo {
             org.eclipse.aether.artifact.Artifact resolvedPom =
                     getResolverUtil().resolveArtifact(aPomArtifact, 
getProject().getRemoteProjectRepositories());
             pomArtifact = RepositoryUtils.toArtifact(resolvedPom);
-        } catch (ArtifactResolutionException e) {
+        } catch (ArtifactResolutionException | ArtifactDescriptorException e) {
             getLog().info(e.getMessage());
         }
         return pomArtifact;
diff --git 
a/src/main/java/org/apache/maven/plugins/dependency/resolvers/GoOfflineMojo.java
 
b/src/main/java/org/apache/maven/plugins/dependency/resolvers/GoOfflineMojo.java
index 110b294a..da0726d3 100644
--- 
a/src/main/java/org/apache/maven/plugins/dependency/resolvers/GoOfflineMojo.java
+++ 
b/src/main/java/org/apache/maven/plugins/dependency/resolvers/GoOfflineMojo.java
@@ -55,6 +55,7 @@ import 
org.apache.maven.shared.artifact.filter.collection.GroupIdFilter;
 import org.apache.maven.shared.artifact.filter.collection.ScopeFilter;
 import org.apache.maven.shared.artifact.filter.collection.TypeFilter;
 import org.eclipse.aether.artifact.ArtifactTypeRegistry;
+import org.eclipse.aether.resolution.ArtifactDescriptorException;
 import org.eclipse.aether.resolution.ArtifactResolutionException;
 import org.eclipse.aether.resolution.DependencyResolutionException;
 import org.sonatype.plexus.build.incremental.BuildContext;
@@ -127,7 +128,10 @@ public class GoOfflineMojo extends 
AbstractDependencyFilterMojo {
                         + 
DependencyUtil.getFormattedFileName(RepositoryUtils.toArtifact(artifact), 
false));
             }
 
-        } catch (ArtifactFilterException | ArtifactResolutionException | 
DependencyResolutionException e) {
+        } catch (ArtifactFilterException
+                | ArtifactResolutionException
+                | DependencyResolutionException
+                | ArtifactDescriptorException e) {
             throw new MojoExecutionException(e.getMessage(), e);
         }
     }
diff --git 
a/src/main/java/org/apache/maven/plugins/dependency/resolvers/ResolvePluginsMojo.java
 
b/src/main/java/org/apache/maven/plugins/dependency/resolvers/ResolvePluginsMojo.java
index b4899821..74ad8158 100644
--- 
a/src/main/java/org/apache/maven/plugins/dependency/resolvers/ResolvePluginsMojo.java
+++ 
b/src/main/java/org/apache/maven/plugins/dependency/resolvers/ResolvePluginsMojo.java
@@ -41,6 +41,7 @@ import 
org.apache.maven.plugins.dependency.utils.DependencyUtil;
 import org.apache.maven.plugins.dependency.utils.ResolverUtil;
 import org.apache.maven.project.MavenProject;
 import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.resolution.ArtifactDescriptorException;
 import org.eclipse.aether.resolution.ArtifactResolutionException;
 import org.eclipse.aether.resolution.DependencyResolutionException;
 import org.sonatype.plexus.build.incremental.BuildContext;
@@ -209,7 +210,10 @@ public class ResolvePluginsMojo extends 
AbstractDependencyMojo {
                     DependencyUtil.write(output, outputFile, appendOutput, 
encoding);
                 }
             }
-        } catch (IOException | ArtifactResolutionException | 
DependencyResolutionException e) {
+        } catch (IOException
+                | ArtifactResolutionException
+                | DependencyResolutionException
+                | ArtifactDescriptorException e) {
             throw new MojoExecutionException(e.getMessage(), e);
         }
     }
diff --git 
a/src/main/java/org/apache/maven/plugins/dependency/utils/ResolverUtil.java 
b/src/main/java/org/apache/maven/plugins/dependency/utils/ResolverUtil.java
index 8ff22350..60ca42c9 100644
--- a/src/main/java/org/apache/maven/plugins/dependency/utils/ResolverUtil.java
+++ b/src/main/java/org/apache/maven/plugins/dependency/utils/ResolverUtil.java
@@ -54,6 +54,9 @@ import 
org.eclipse.aether.collection.DependencyCollectionException;
 import org.eclipse.aether.graph.Dependency;
 import org.eclipse.aether.repository.RemoteRepository;
 import org.eclipse.aether.repository.RepositoryPolicy;
+import org.eclipse.aether.resolution.ArtifactDescriptorException;
+import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
+import org.eclipse.aether.resolution.ArtifactDescriptorResult;
 import org.eclipse.aether.resolution.ArtifactRequest;
 import org.eclipse.aether.resolution.ArtifactResolutionException;
 import org.eclipse.aether.resolution.ArtifactResult;
@@ -101,7 +104,7 @@ public class ResolverUtil {
     }
 
     /**
-     * Resolve given artifact.
+     * Resolve a given artifact.
      *
      * @param artifact     an artifact to resolve
      * @param repositories remote repositories list
@@ -109,10 +112,31 @@ public class ResolverUtil {
      * @throws ArtifactResolutionException if the artifact could not be 
resolved
      */
     public Artifact resolveArtifact(Artifact artifact, List<RemoteRepository> 
repositories)
-            throws ArtifactResolutionException {
+            throws ArtifactResolutionException, ArtifactDescriptorException {
         MavenSession session = mavenSessionProvider.get();
-        ArtifactRequest request = new ArtifactRequest(artifact, repositories, 
null);
-        ArtifactResult result = 
repositorySystem.resolveArtifact(session.getRepositorySession(), request);
+        return resolveArtifact(artifact, repositories, 
session.getRepositorySession());
+    }
+
+    /**
+     * Resolve a given artifact.
+     *
+     * @param artifact     an artifact to resolve
+     * @param repositories remote repositories list
+     * @param session      a repository system session
+     * @return resolved artifact
+     * @throws ArtifactResolutionException if the artifact could not be 
resolved
+     */
+    public Artifact resolveArtifact(
+            Artifact artifact, List<RemoteRepository> repositories, 
RepositorySystemSession session)
+            throws ArtifactResolutionException, ArtifactDescriptorException {
+
+        ArtifactDescriptorResult artifactDescriptorResult = 
repositorySystem.readArtifactDescriptor(
+                session, new ArtifactDescriptorRequest(artifact, repositories, 
null));
+
+        Artifact artifactToResolve = artifactDescriptorResult.getArtifact();
+
+        ArtifactRequest request = new ArtifactRequest(artifactToResolve, 
repositories, null);
+        ArtifactResult result = repositorySystem.resolveArtifact(session, 
request);
         return result.getArtifact();
     }
 
@@ -123,7 +147,7 @@ public class ResolverUtil {
      * @return resolved artifact
      * @throws ArtifactResolutionException if the artifact could not be 
resolved
      */
-    public Artifact resolvePlugin(Plugin plugin) throws 
ArtifactResolutionException {
+    public Artifact resolvePlugin(Plugin plugin) throws 
ArtifactResolutionException, ArtifactDescriptorException {
         MavenSession session = mavenSessionProvider.get();
         Artifact artifact = toArtifact(plugin);
         return resolveArtifact(artifact, 
session.getCurrentProject().getRemotePluginRepositories());

Reply via email to