Skip to content

Commit ed7db20

Browse files
[MNG-7758] Report dependency problems for all repository
1 parent bea3e72 commit ed7db20

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,9 @@ public DependencyResolutionResult resolve(DependencyResolutionRequest request)
160160
result.setCollectionErrors(e.getResult().getExceptions());
161161

162162
throw new DependencyResolutionException(
163-
result, "Could not resolve dependencies for project " + project.getId() + ": " + e.getMessage(), e);
163+
result,
164+
"Could not collect dependencies for project " + project.getId(),
165+
logger.isDebugEnabled() ? e : null);
164166
}
165167

166168
depRequest.setRoot(node);
@@ -190,7 +192,9 @@ public DependencyResolutionResult resolve(DependencyResolutionRequest request)
190192
process(result, e.getResult().getArtifactResults());
191193

192194
throw new DependencyResolutionException(
193-
result, "Could not resolve dependencies for project " + project.getId() + ": " + e.getMessage(), e);
195+
result,
196+
"Could not resolve dependencies for project " + project.getId(),
197+
logger.isDebugEnabled() ? e : null);
194198
}
195199

196200
return result;

maven-core/src/main/java/org/apache/maven/project/DependencyResolutionException.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,52 @@
1818
*/
1919
package org.apache.maven.project;
2020

21+
import java.util.List;
22+
23+
import org.eclipse.aether.graph.Dependency;
24+
2125
/**
2226
*/
2327
public class DependencyResolutionException extends Exception {
2428

2529
private final transient DependencyResolutionResult result;
30+
private final transient String detailMessage;
2631

2732
public DependencyResolutionException(DependencyResolutionResult result, String message, Throwable cause) {
2833
super(message, cause);
2934
this.result = result;
35+
this.detailMessage = prepareDetailMessage(message, result);
36+
}
37+
38+
private static String prepareDetailMessage(String message, DependencyResolutionResult result) {
39+
StringBuilder msg = new StringBuilder(message);
40+
msg.append(System.lineSeparator());
41+
for (Dependency dependency : result.getUnresolvedDependencies()) {
42+
msg.append("dependency: ").append(dependency).append(System.lineSeparator());
43+
List<Exception> exceptions = result.getResolutionErrors(dependency);
44+
for (Exception e : exceptions) {
45+
msg.append("\t").append(e.getMessage()).append(System.lineSeparator());
46+
}
47+
}
48+
49+
for (Exception exception : result.getCollectionErrors()) {
50+
msg.append(exception.getMessage()).append(System.lineSeparator());
51+
if (exception.getCause() != null) {
52+
msg.append("\tCaused by: ")
53+
.append(exception.getCause().getMessage())
54+
.append(System.lineSeparator());
55+
}
56+
}
57+
58+
return msg.toString();
3059
}
3160

3261
public DependencyResolutionResult getResult() {
3362
return result;
3463
}
64+
65+
@Override
66+
public String getMessage() {
67+
return detailMessage;
68+
}
3569
}

0 commit comments

Comments
 (0)