This is an automated email from the ASF dual-hosted git repository.
sjaranowski pushed a commit to branch maven-3.9.x
in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/maven-3.9.x by this push:
new 37f1f02a34 [MNG-7758] Report dependency problems for all repository
37f1f02a34 is described below
commit 37f1f02a34bde9edbb874021b5659978300ceea2
Author: Slawomir Jaranowski <[email protected]>
AuthorDate: Wed Jun 12 09:49:10 2024 +0200
[MNG-7758] Report dependency problems for all repository
(cherry picked from commit 768ebbc26306a1f6a4745e0d73a87c75aa5fb7a0)
---
.../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 8c0f69c8bc..a63644c51c 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;
/**
@@ -36,6 +39,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 27b3e81ea1..5d4e37fb72 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
@@ -129,7 +129,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 {
@@ -137,7 +138,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;
@@ -218,9 +220,11 @@ public class DefaultPluginDependenciesResolver implements
PluginDependenciesReso
depRequest.setRoot(node);
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);
}
return node;
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 71eddb1e46..dc4f3f1735 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
@@ -155,7 +155,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);
@@ -184,7 +186,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 c4e17ea945..c4c5ca5e28 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,19 +18,53 @@
*/
package org.apache.maven.project;
+import java.util.List;
+
+import org.eclipse.aether.graph.Dependency;
+
/**
* @author Benjamin Bentmann
*/
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 c63558ea13..bb903db6c1 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
@@ -178,9 +178,7 @@ public class BootstrapCoreExtensionManager {
List<Artifact> artifacts = nlg.getArtifacts(false);
return artifacts;
- } catch (PluginResolutionException e) {
- throw new ExtensionResolutionException(extension, e.getCause());
- } catch (InterpolationException e) {
+ } catch (PluginResolutionException | InterpolationException e) {
throw new ExtensionResolutionException(extension, e);
}
}