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

sjaranowski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/master by this push:
     new 768ebbc263 [MNG-7758] Report dependency problems for all repository 
(#1563)
768ebbc263 is described below

commit 768ebbc26306a1f6a4745e0d73a87c75aa5fb7a0
Author: Slawomir Jaranowski <s.jaranow...@gmail.com>
AuthorDate: Wed Jun 12 09:49:10 2024 +0200

    [MNG-7758] Report dependency problems for all repository (#1563)
---
 .../maven/plugin/PluginResolutionException.java    | 15 ++++++++++
 .../DefaultPluginDependenciesResolver.java         | 12 +++++---
 .../DefaultProjectDependenciesResolver.java        |  8 +++--
 .../project/DependencyResolutionException.java     | 34 ++++++++++++++++++++++
 .../internal/BootstrapCoreExtensionManager.java    |  4 +--
 5 files changed, 64 insertions(+), 9 deletions(-)

diff --git 
a/maven-core/src/main/java/org/apache/maven/plugin/PluginResolutionException.java
 
b/maven-core/src/main/java/org/apache/maven/plugin/PluginResolutionException.java
index 048444dd8f..c837fd8721 100644
--- 
a/maven-core/src/main/java/org/apache/maven/plugin/PluginResolutionException.java
+++ 
b/maven-core/src/main/java/org/apache/maven/plugin/PluginResolutionException.java
@@ -18,6 +18,9 @@
  */
 package org.apache.maven.plugin;
 
+import java.util.List;
+import java.util.stream.Collectors;
+
 import org.apache.maven.model.Plugin;
 
 /**
@@ -35,6 +38,18 @@ public class PluginResolutionException extends Exception {
         this.plugin = plugin;
     }
 
+    public PluginResolutionException(Plugin plugin, List<Exception> 
exceptions, Throwable cause) {
+        super(
+                "Plugin " + plugin.getId() + " or one of its dependencies 
could not be resolved:"
+                        + System.lineSeparator() + "\t"
+                        + exceptions.stream()
+                                .map(Throwable::getMessage)
+                                
.collect(Collectors.joining(System.lineSeparator() + "\t"))
+                        + System.lineSeparator(),
+                cause);
+        this.plugin = plugin;
+    }
+
     public Plugin getPlugin() {
         return plugin;
     }
diff --git 
a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
 
b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
index 6ab2c1b339..94d4ee6c8c 100644
--- 
a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
+++ 
b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
@@ -132,7 +132,8 @@ public class DefaultPluginDependenciesResolver implements 
PluginDependenciesReso
                 pluginArtifact = pluginArtifact.setProperties(props);
             }
         } catch (ArtifactDescriptorException e) {
-            throw new PluginResolutionException(plugin, e);
+            throw new PluginResolutionException(
+                    plugin, e.getResult().getExceptions(), 
logger.isDebugEnabled() ? e : null);
         }
 
         try {
@@ -140,7 +141,8 @@ public class DefaultPluginDependenciesResolver implements 
PluginDependenciesReso
             request.setTrace(trace);
             pluginArtifact = repoSystem.resolveArtifact(session, 
request).getArtifact();
         } catch (ArtifactResolutionException e) {
-            throw new PluginResolutionException(plugin, e);
+            throw new PluginResolutionException(
+                    plugin, e.getResult().getExceptions(), 
logger.isDebugEnabled() ? e : null);
         }
 
         return pluginArtifact;
@@ -229,9 +231,11 @@ public class DefaultPluginDependenciesResolver implements 
PluginDependenciesReso
             depRequest.setRoot(node);
             return repoSystem.resolveDependencies(session, depRequest);
         } catch (DependencyCollectionException e) {
-            throw new PluginResolutionException(plugin, e);
+            throw new PluginResolutionException(
+                    plugin, e.getResult().getExceptions(), 
logger.isDebugEnabled() ? e : null);
         } catch (DependencyResolutionException e) {
-            throw new PluginResolutionException(plugin, e.getCause());
+            throw new PluginResolutionException(
+                    plugin, e.getResult().getCollectExceptions(), 
logger.isDebugEnabled() ? e : null);
         }
     }
 }
diff --git 
a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java
 
b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java
index 28d3672143..54c1762da9 100644
--- 
a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java
+++ 
b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java
@@ -160,7 +160,9 @@ public class DefaultProjectDependenciesResolver implements 
ProjectDependenciesRe
             result.setCollectionErrors(e.getResult().getExceptions());
 
             throw new DependencyResolutionException(
-                    result, "Could not resolve dependencies for project " + 
project.getId() + ": " + e.getMessage(), e);
+                    result,
+                    "Could not collect dependencies for project " + 
project.getId(),
+                    logger.isDebugEnabled() ? e : null);
         }
 
         depRequest.setRoot(node);
@@ -190,7 +192,9 @@ public class DefaultProjectDependenciesResolver implements 
ProjectDependenciesRe
             process(result, e.getResult().getArtifactResults());
 
             throw new DependencyResolutionException(
-                    result, "Could not resolve dependencies for project " + 
project.getId() + ": " + e.getMessage(), e);
+                    result,
+                    "Could not resolve dependencies for project " + 
project.getId(),
+                    logger.isDebugEnabled() ? e : null);
         }
 
         return result;
diff --git 
a/maven-core/src/main/java/org/apache/maven/project/DependencyResolutionException.java
 
b/maven-core/src/main/java/org/apache/maven/project/DependencyResolutionException.java
index 794986b4b6..278e06ed19 100644
--- 
a/maven-core/src/main/java/org/apache/maven/project/DependencyResolutionException.java
+++ 
b/maven-core/src/main/java/org/apache/maven/project/DependencyResolutionException.java
@@ -18,18 +18,52 @@
  */
 package org.apache.maven.project;
 
+import java.util.List;
+
+import org.eclipse.aether.graph.Dependency;
+
 /**
  */
 public class DependencyResolutionException extends Exception {
 
     private final transient DependencyResolutionResult result;
+    private final transient String detailMessage;
 
     public DependencyResolutionException(DependencyResolutionResult result, 
String message, Throwable cause) {
         super(message, cause);
         this.result = result;
+        this.detailMessage = prepareDetailMessage(message, result);
+    }
+
+    private static String prepareDetailMessage(String message, 
DependencyResolutionResult result) {
+        StringBuilder msg = new StringBuilder(message);
+        msg.append(System.lineSeparator());
+        for (Dependency dependency : result.getUnresolvedDependencies()) {
+            msg.append("dependency: 
").append(dependency).append(System.lineSeparator());
+            List<Exception> exceptions = 
result.getResolutionErrors(dependency);
+            for (Exception e : exceptions) {
+                
msg.append("\t").append(e.getMessage()).append(System.lineSeparator());
+            }
+        }
+
+        for (Exception exception : result.getCollectionErrors()) {
+            msg.append(exception.getMessage()).append(System.lineSeparator());
+            if (exception.getCause() != null) {
+                msg.append("\tCaused by: ")
+                        .append(exception.getCause().getMessage())
+                        .append(System.lineSeparator());
+            }
+        }
+
+        return msg.toString();
     }
 
     public DependencyResolutionResult getResult() {
         return result;
     }
+
+    @Override
+    public String getMessage() {
+        return detailMessage;
+    }
 }
diff --git 
a/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java
 
b/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java
index 64c616b405..c8fce473c3 100644
--- 
a/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java
+++ 
b/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java
@@ -226,9 +226,7 @@ public class BootstrapCoreExtensionManager {
                     .filter(ArtifactResult::isResolved)
                     .map(ArtifactResult::getArtifact)
                     .collect(Collectors.toList());
-        } catch (PluginResolutionException e) {
-            throw new ExtensionResolutionException(extension, e.getCause());
-        } catch (InterpolationException e) {
+        } catch (PluginResolutionException | InterpolationException e) {
             throw new ExtensionResolutionException(extension, e);
         }
     }

Reply via email to