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