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
28 public class DependencyResolutionException extends Exception {
29
30 private final transient DependencyResolutionResult result;
31 private final transient String detailMessage;
32
33 public DependencyResolutionException(DependencyResolutionResult result, String message, Throwable cause) {
34 super(message, cause);
35 this.result = result;
36 this.detailMessage = prepareDetailMessage(message, result);
37 }
38
39 private static String prepareDetailMessage(String message, DependencyResolutionResult result) {
40 StringBuilder msg = new StringBuilder(message);
41 msg.append(System.lineSeparator());
42 for (Dependency dependency : result.getUnresolvedDependencies()) {
43 msg.append("dependency: ").append(dependency).append(System.lineSeparator());
44 List<Exception> exceptions = result.getResolutionErrors(dependency);
45 for (Exception e : exceptions) {
46 msg.append("\t").append(e.getMessage()).append(System.lineSeparator());
47 }
48 }
49
50 for (Exception exception : result.getCollectionErrors()) {
51 msg.append(exception.getMessage()).append(System.lineSeparator());
52 if (exception.getCause() != null) {
53 msg.append("\tCaused by: ")
54 .append(exception.getCause().getMessage())
55 .append(System.lineSeparator());
56 }
57 }
58
59 return msg.toString();
60 }
61
62 public DependencyResolutionResult getResult() {
63 return result;
64 }
65
66 @Override
67 public String getMessage() {
68 return detailMessage;
69 }
70 }