1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.lifecycle.mapping;
20
21 import java.util.Collections;
22 import java.util.HashMap;
23 import java.util.List;
24 import java.util.Map;
25
26 import static java.util.function.Function.identity;
27 import static java.util.stream.Collectors.toMap;
28
29
30
31
32 public class DefaultLifecycleMapping implements LifecycleMapping {
33
34 private List<Lifecycle> lifecycles;
35
36 private Map<String, Lifecycle> lifecycleMap;
37
38
39 @Deprecated
40 private Map<String, LifecyclePhase> phases;
41
42
43
44
45
46
47
48 @Deprecated
49 public DefaultLifecycleMapping() {}
50
51
52
53
54 public DefaultLifecycleMapping(final List<Lifecycle> lifecycles) {
55 this.lifecycleMap =
56 Collections.unmodifiableMap(lifecycles.stream().collect(toMap(Lifecycle::getId, identity())));
57 }
58
59
60
61
62 private synchronized void initLifecycleMap() {
63 if (lifecycleMap == null) {
64 lifecycleMap = new HashMap<>();
65
66 if (lifecycles != null) {
67 for (Lifecycle lifecycle : lifecycles) {
68 lifecycleMap.put(lifecycle.getId(), lifecycle);
69 }
70 } else {
71
72
73
74
75
76 String[] lifecycleIds = {"default", "clean", "site"};
77
78 for (String lifecycleId : lifecycleIds) {
79 Map<String, LifecyclePhase> phases = getLifecyclePhases(lifecycleId);
80 if (phases != null) {
81 Lifecycle lifecycle = new Lifecycle();
82
83 lifecycle.setId(lifecycleId);
84 lifecycle.setLifecyclePhases(phases);
85
86 lifecycleMap.put(lifecycleId, lifecycle);
87 }
88 }
89 }
90 }
91 }
92
93 @Override
94 public Map<String, Lifecycle> getLifecycles() {
95 initLifecycleMap();
96
97 return lifecycleMap;
98 }
99
100 @Deprecated
101 @Override
102 public List<String> getOptionalMojos(String lifecycle) {
103 return null;
104 }
105
106 private Map<String, LifecyclePhase> getLifecyclePhases(String lifecycle) {
107 initLifecycleMap();
108
109 Lifecycle lifecycleMapping = lifecycleMap.get(lifecycle);
110
111 if (lifecycleMapping != null) {
112 return lifecycleMapping.getLifecyclePhases();
113 } else if ("default".equals(lifecycle)) {
114 return phases;
115 } else {
116 return null;
117 }
118 }
119
120 @Deprecated
121 @Override
122 public Map<String, String> getPhases(String lifecycle) {
123 return LifecyclePhase.toLegacyMap(getLifecyclePhases(lifecycle));
124 }
125 }