1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.lifecycle;
20
21 import java.util.Arrays;
22 import java.util.List;
23 import java.util.Set;
24 import javax.inject.Inject;
25 import javax.inject.Named;
26 import javax.inject.Singleton;
27 import org.apache.maven.execution.MavenSession;
28 import org.apache.maven.lifecycle.internal.LifecycleExecutionPlanCalculator;
29 import org.apache.maven.lifecycle.internal.LifecycleStarter;
30 import org.apache.maven.lifecycle.internal.LifecycleTaskSegmentCalculator;
31 import org.apache.maven.lifecycle.internal.MojoDescriptorCreator;
32 import org.apache.maven.lifecycle.internal.MojoExecutor;
33 import org.apache.maven.lifecycle.internal.ProjectIndex;
34 import org.apache.maven.lifecycle.internal.TaskSegment;
35 import org.apache.maven.model.Plugin;
36 import org.apache.maven.plugin.InvalidPluginDescriptorException;
37 import org.apache.maven.plugin.MojoExecution;
38 import org.apache.maven.plugin.MojoNotFoundException;
39 import org.apache.maven.plugin.PluginDescriptorParsingException;
40 import org.apache.maven.plugin.PluginManagerException;
41 import org.apache.maven.plugin.PluginNotFoundException;
42 import org.apache.maven.plugin.PluginResolutionException;
43 import org.apache.maven.plugin.prefix.NoPluginFoundForPrefixException;
44 import org.apache.maven.plugin.version.PluginVersionResolutionException;
45 import org.apache.maven.project.MavenProject;
46
47
48
49
50
51
52
53
54
55
56 @Named
57 @Singleton
58 public class DefaultLifecycleExecutor implements LifecycleExecutor {
59
60 private final LifeCyclePluginAnalyzer lifeCyclePluginAnalyzer;
61 private final DefaultLifecycles defaultLifeCycles;
62 private final LifecycleTaskSegmentCalculator lifecycleTaskSegmentCalculator;
63 private final LifecycleExecutionPlanCalculator lifecycleExecutionPlanCalculator;
64 private final MojoExecutor mojoExecutor;
65 private final LifecycleStarter lifecycleStarter;
66 private final MojoDescriptorCreator mojoDescriptorCreator;
67
68 @Inject
69 public DefaultLifecycleExecutor(
70 LifeCyclePluginAnalyzer lifeCyclePluginAnalyzer,
71 DefaultLifecycles defaultLifeCycles,
72 LifecycleTaskSegmentCalculator lifecycleTaskSegmentCalculator,
73 LifecycleExecutionPlanCalculator lifecycleExecutionPlanCalculator,
74 MojoExecutor mojoExecutor,
75 LifecycleStarter lifecycleStarter,
76 MojoDescriptorCreator mojoDescriptorCreator) {
77 this.lifeCyclePluginAnalyzer = lifeCyclePluginAnalyzer;
78 this.defaultLifeCycles = defaultLifeCycles;
79 this.lifecycleTaskSegmentCalculator = lifecycleTaskSegmentCalculator;
80 this.lifecycleExecutionPlanCalculator = lifecycleExecutionPlanCalculator;
81 this.mojoExecutor = mojoExecutor;
82 this.lifecycleStarter = lifecycleStarter;
83 this.mojoDescriptorCreator = mojoDescriptorCreator;
84 }
85
86 public void execute(MavenSession session) {
87 lifecycleStarter.execute(session);
88 }
89
90
91
92
93
94
95
96
97
98
99
100
101
102 public Set<Plugin> getPluginsBoundByDefaultToAllLifecycles(String packaging) {
103 return lifeCyclePluginAnalyzer.getPluginsBoundByDefaultToAllLifecycles(packaging);
104 }
105
106
107
108 @SuppressWarnings({"UnusedDeclaration"})
109 public MavenExecutionPlan calculateExecutionPlan(MavenSession session, boolean setup, String... tasks)
110 throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException,
111 MojoNotFoundException, NoPluginFoundForPrefixException, InvalidPluginDescriptorException,
112 PluginManagerException, LifecyclePhaseNotFoundException, LifecycleNotFoundException,
113 PluginVersionResolutionException {
114 List<TaskSegment> taskSegments =
115 lifecycleTaskSegmentCalculator.calculateTaskSegments(session, Arrays.asList(tasks));
116
117 TaskSegment mergedSegment = new TaskSegment(false);
118
119 for (TaskSegment taskSegment : taskSegments) {
120 mergedSegment.getTasks().addAll(taskSegment.getTasks());
121 }
122
123 return lifecycleExecutionPlanCalculator.calculateExecutionPlan(
124 session, session.getCurrentProject(), mergedSegment.getTasks(), setup);
125 }
126
127 public MavenExecutionPlan calculateExecutionPlan(MavenSession session, String... tasks)
128 throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException,
129 MojoNotFoundException, NoPluginFoundForPrefixException, InvalidPluginDescriptorException,
130 PluginManagerException, LifecyclePhaseNotFoundException, LifecycleNotFoundException,
131 PluginVersionResolutionException {
132 return calculateExecutionPlan(session, true, tasks);
133 }
134
135
136 public void calculateForkedExecutions(MojoExecution mojoExecution, MavenSession session)
137 throws MojoNotFoundException, PluginNotFoundException, PluginResolutionException,
138 PluginDescriptorParsingException, NoPluginFoundForPrefixException, InvalidPluginDescriptorException,
139 LifecyclePhaseNotFoundException, LifecycleNotFoundException, PluginVersionResolutionException {
140 lifecycleExecutionPlanCalculator.calculateForkedExecutions(mojoExecution, session);
141 }
142
143
144 public List<MavenProject> executeForkedExecutions(MojoExecution mojoExecution, MavenSession session)
145 throws LifecycleExecutionException {
146 return mojoExecutor.executeForkedExecutions(mojoExecution, session, new ProjectIndex(session.getProjects()));
147 }
148 }