1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.project;
20
21 import java.util.List;
22
23 import org.eclipse.aether.graph.Dependency;
24
25
26
27 public class DependencyResolutionException extends Exception {
28
29 private final transient DependencyResolutionResult result;
30 private final transient String detailMessage;
31
32 public DependencyResolutionException(DependencyResolutionResult result, String message, Throwable cause) {
33 super(message, cause);
34 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();
59 }
60
61 public DependencyResolutionResult getResult() {
62 return result;
63 }
64
65 @Override
66 public String getMessage() {
67 return detailMessage;
68 }
69 }