1 package org.apache.maven.shared.release;
2
3 /*
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21
22 import org.apache.maven.project.MavenProject;
23 import org.apache.maven.settings.Settings;
24 import org.apache.maven.shared.release.config.ReleaseDescriptor;
25 import org.apache.maven.shared.release.env.ReleaseEnvironment;
26
27 import java.util.List;
28
29 /**
30 * Release management classes.
31 *
32 * @author <a href="mailto:brett@apache.org">Brett Porter</a>
33 */
34 public interface ReleaseManager
35 {
36 /**
37 * The Plexus role.
38 */
39 String ROLE = ReleaseManager.class.getName();
40
41 /**
42 * Prepare a release.
43 *
44 * @param releaseDescriptor the configuration to pass to the preparation steps
45 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
46 * @param reactorProjects the reactor projects
47 * @throws ReleaseExecutionException if there is a problem performing the release
48 * @throws ReleaseFailureException if there is a problem performing the release
49 */
50 void prepare( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
51 List<MavenProject> reactorProjects )
52 throws ReleaseExecutionException, ReleaseFailureException;
53
54 /**
55 * Prepare a release.
56 *
57 * @param releaseDescriptor the configuration to pass to the preparation steps
58 * @param settings the settings.xml configuration
59 * @param reactorProjects the reactor projects
60 * @throws ReleaseExecutionException if there is a problem performing the release
61 * @throws ReleaseFailureException if there is a problem performing the release
62 *
63 * @deprecated Use {@link ReleaseManager#prepare(ReleaseDescriptor, ReleaseEnvironment, List)} instead.
64 */
65 void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects )
66 throws ReleaseExecutionException, ReleaseFailureException;
67
68 /**
69 * Prepare a release.
70 *
71 * @param releaseDescriptor the configuration to pass to the preparation steps
72 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
73 * @param reactorProjects the reactor projects
74 * @param resume resume a previous release, if the properties file exists
75 * @param dryRun do not commit any changes to the file system or SCM
76 * @throws ReleaseExecutionException if there is a problem performing the release
77 * @throws ReleaseFailureException if there is a problem performing the release
78 */
79 void prepare( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
80 List<MavenProject> reactorProjects, boolean resume, boolean dryRun )
81 throws ReleaseExecutionException, ReleaseFailureException;
82
83 /**
84 * Prepare a release.
85 *
86 * @param releaseDescriptor the configuration to pass to the preparation steps
87 * @param settings the settings.xml configuration
88 * @param reactorProjects the reactor projects
89 * @param resume resume a previous release, if the properties file exists
90 * @param dryRun do not commit any changes to the file system or SCM
91 * @throws ReleaseExecutionException if there is a problem performing the release
92 * @throws ReleaseFailureException if there is a problem performing the release
93 *
94 * @deprecated Use {@link ReleaseManager#prepare(ReleaseDescriptor, ReleaseEnvironment, List, boolean, boolean)}
95 * instead.
96 */
97 void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
98 boolean resume, boolean dryRun )
99 throws ReleaseExecutionException, ReleaseFailureException;
100
101 /**
102 * Prepare a release.
103 *
104 * @param prepareRequest all prepare arguments
105 * @throws ReleaseExecutionException if there is a problem performing the release
106 * @throws ReleaseFailureException if there is a problem performing the release
107 * @since 2.3
108 */
109 void prepare( ReleasePrepareRequest prepareRequest ) throws ReleaseExecutionException, ReleaseFailureException;
110
111 /**
112 * Prepare a release.
113 *
114 * @param releaseDescriptor the configuration to pass to the preparation steps
115 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
116 * @param reactorProjects the reactor projects
117 * @param resume resume a previous release, if the properties file exists
118 * @param dryRun do not commit any changes to the file system or SCM
119 * @param listener the listener
120 * @throws ReleaseExecutionException if there is a problem performing the release
121 * @throws ReleaseFailureException if there is a problem performing the release
122 */
123 void prepare( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
124 List<MavenProject> reactorProjects, boolean resume, boolean dryRun, ReleaseManagerListener listener )
125 throws ReleaseExecutionException, ReleaseFailureException;
126
127 /**
128 * Prepare a release.
129 *
130 * @param releaseDescriptor the configuration to pass to the preparation steps
131 * @param settings the settings.xml configuration
132 * @param reactorProjects the reactor projects
133 * @param resume resume a previous release, if the properties file exists
134 * @param dryRun do not commit any changes to the file system or SCM
135 * @param listener the listener
136 * @throws ReleaseExecutionException if there is a problem performing the release
137 * @throws ReleaseFailureException if there is a problem performing the release
138 *
139 * @deprecated Use {@link ReleaseManager#prepare(ReleaseDescriptor, ReleaseEnvironment, List, boolean, boolean,
140 * ReleaseManagerListener)} instead.
141 */
142 void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
143 boolean resume, boolean dryRun, ReleaseManagerListener listener )
144 throws ReleaseExecutionException, ReleaseFailureException;
145
146 ReleaseResult prepareWithResult( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
147 List<MavenProject> reactorProjects, boolean resume, boolean dryRun,
148 ReleaseManagerListener listener );
149
150 /**
151 * @deprecated Use {@link ReleaseManager#prepareWithResult(ReleaseDescriptor, ReleaseEnvironment, List, boolean,
152 * boolean, ReleaseManagerListener)} instead.
153 */
154 ReleaseResult prepareWithResult( ReleaseDescriptor releaseDescriptor, Settings settings,
155 List<MavenProject> reactorProjects, boolean resume, boolean dryRun,
156 ReleaseManagerListener listener );
157
158 /**
159 * Perform a release.
160 *
161 * @param releaseDescriptor the configuration to use for release
162 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
163 * @param reactorProjects the reactor projects
164 * @throws ReleaseExecutionException if there is a problem performing the release
165 * @throws ReleaseFailureException if there is a problem performing the release
166 */
167 void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
168 List<MavenProject> reactorProjects )
169 throws ReleaseExecutionException, ReleaseFailureException;
170
171 /**
172 * Perform a release.
173 *
174 * @param releaseDescriptor the configuration to use for release
175 * @param settings the settings.xml configuration
176 * @param reactorProjects the reactor projects
177 * @throws ReleaseExecutionException if there is a problem performing the release
178 * @throws ReleaseFailureException if there is a problem performing the release
179 *
180 * @deprecated Use {@link ReleaseManager#perform(ReleaseDescriptor, ReleaseEnvironment, List)} instead
181 */
182 void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects )
183 throws ReleaseExecutionException, ReleaseFailureException;
184
185 /**
186 * Perform a release.
187 *
188 * @param releaseDescriptor the configuration to use for release
189 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
190 * @param reactorProjects the reactor projects
191 * @param listener the listener
192 * @throws ReleaseExecutionException if there is a problem performing the release
193 * @throws ReleaseFailureException if there is a problem performing the release
194 */
195 void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
196 List<MavenProject> reactorProjects, ReleaseManagerListener listener )
197 throws ReleaseExecutionException, ReleaseFailureException;
198
199 /**
200 * Perform a release.
201 *
202 * @param releaseDescriptor the configuration to use for release
203 * @param settings the settings.xml configuration
204 * @param reactorProjects the reactor projects
205 * @param listener the listener
206 * @throws ReleaseExecutionException if there is a problem performing the release
207 * @throws ReleaseFailureException if there is a problem performing the release
208 *
209 * @deprecated Use {@link ReleaseManager#perform(ReleaseDescriptor, ReleaseEnvironment, List,
210 * ReleaseManagerListener)} instead.
211 */
212 void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
213 ReleaseManagerListener listener )
214 throws ReleaseExecutionException, ReleaseFailureException;
215
216 ReleaseResult performWithResult( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
217 List<MavenProject> reactorProjects, ReleaseManagerListener listener );
218
219 /**
220 * @deprecated Use {@link ReleaseManager#performWithResult(ReleaseDescriptor, ReleaseEnvironment, List,
221 * ReleaseManagerListener)} instead.
222 */
223 ReleaseResult performWithResult( ReleaseDescriptor releaseDescriptor, Settings settings,
224 List<MavenProject> reactorProjects, ReleaseManagerListener listener );
225
226 /**
227 * Perform a release, and optionally cleanup.
228 *
229 * @param releaseDescriptor the configuration to use for release
230 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
231 * @param reactorProjects the reactor projects
232 * @param clean flag to clean the release after perform
233 * @throws ReleaseExecutionException if there is a problem performing the release
234 * @throws ReleaseFailureException if there is a problem performing the release
235 */
236 void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
237 List<MavenProject> reactorProjects, boolean clean )
238 throws ReleaseExecutionException, ReleaseFailureException;
239
240 /**
241 * Perform a release
242 *
243 * @param performRequest all perform arguments
244 * @throws ReleaseExecutionException if there is a problem performing the release
245 * @throws ReleaseFailureException if there is a problem performing the release
246 * @since 2.3
247 */
248 void perform( ReleasePerformRequest performRequest )
249 throws ReleaseExecutionException, ReleaseFailureException;
250
251 /**
252 * Perform a release, and optionally cleanup.
253 *
254 * @param releaseDescriptor the configuration to use for release
255 * @param settings the settings.xml configuration
256 * @param reactorProjects the reactor projects
257 * @param clean flag to clean the release after perform
258 * @throws ReleaseExecutionException if there is a problem performing the release
259 * @throws ReleaseFailureException if there is a problem performing the release
260 *
261 * @deprecated Use {@link ReleaseManager#perform(ReleaseDescriptor, ReleaseEnvironment, List, boolean)} instead.
262 */
263 void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
264 boolean clean )
265 throws ReleaseExecutionException, ReleaseFailureException;
266
267 /**
268 * Clean a release.
269 *
270 * @param releaseDescriptor the configuration to use for release
271 * @param reactorProjects the reactor projects
272 */
273 void clean( ReleaseDescriptor releaseDescriptor, ReleaseManagerListener listener,
274 List<MavenProject> reactorProjects );
275
276 /**
277 * Clean a release.
278 *
279 * @param cleanRequest all clean arguments
280 * @since 2.3
281 */
282 void clean( ReleaseCleanRequest cleanRequest );
283
284 /**
285 * Rollback changes made by the previous release
286 *
287 * @param releaseDescriptor the configuration to use for release
288 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
289 * @param reactorProjects the reactor projects
290 * @throws ReleaseExecutionException if there is a problem during release rollback
291 * @throws ReleaseFailureException if there is a problem during release rollback
292 */
293 void rollback( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
294 List<MavenProject> reactorProjects )
295 throws ReleaseExecutionException, ReleaseFailureException;
296
297 /**
298 * Rollback changes made by the previous release
299 *
300 * @param releaseDescriptor the configuration to use for release
301 * @param settings the settings.xml configuration
302 * @param reactorProjects the reactor projects
303 * @throws ReleaseExecutionException if there is a problem during release rollback
304 * @throws ReleaseFailureException if there is a problem during release rollback
305 *
306 * @deprecated Use {@link ReleaseManager#rollback(ReleaseDescriptor, ReleaseEnvironment, List)} instead.
307 */
308 void rollback( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects )
309 throws ReleaseExecutionException, ReleaseFailureException;
310
311 /**
312 * Rollback changes made by the previous release
313 *
314 * @param releaseDescriptor the configuration to use for release
315 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
316 * @param reactorProjects the reactor projects
317 * @param listener the listener
318 * @throws ReleaseExecutionException if there is a problem during release rollback
319 * @throws ReleaseFailureException if there is a problem during release rollback
320 */
321 void rollback( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
322 List<MavenProject> reactorProjects, ReleaseManagerListener listener )
323 throws ReleaseExecutionException, ReleaseFailureException;
324
325 /**
326 * Rollback changes made by the previous release
327 *
328 * @param releaseDescriptor the configuration to use for release
329 * @param settings the settings.xml configuration
330 * @param reactorProjects the reactor projects
331 * @param listener the listener
332 * @throws ReleaseExecutionException if there is a problem during release rollback
333 * @throws ReleaseFailureException if there is a problem during release rollback
334 *
335 * @deprecated Use {@link ReleaseManager#rollback(ReleaseDescriptor, ReleaseEnvironment, List,
336 * ReleaseManagerListener)} instead.
337 */
338 void rollback( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
339 ReleaseManagerListener listener )
340 throws ReleaseExecutionException, ReleaseFailureException;
341
342 /**
343 * Rollback changes made by the previous release
344 *
345 * @param rollbackRequest all rollback arguments
346 * @throws ReleaseExecutionException if there is a problem during release rollback
347 * @throws ReleaseFailureException if there is a problem during release rollback
348 * @since 2.3
349 */
350 void rollback( ReleaseRollbackRequest rollbackRequest )
351 throws ReleaseExecutionException, ReleaseFailureException;
352
353 /**
354 * Branch a project
355 *
356 * @param releaseDescriptor the configuration to use for release
357 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
358 * @param reactorProjects the reactor projects
359 * @param dryRun do not commit any changes to the file system or SCM
360 * @throws ReleaseExecutionException if there is a problem during release branch
361 * @throws ReleaseFailureException if there is a problem during release branch
362 */
363 void branch( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
364 List<MavenProject> reactorProjects, boolean dryRun )
365 throws ReleaseExecutionException, ReleaseFailureException;
366
367 /**
368 * Branch a project
369 *
370 * @param releaseDescriptor the configuration to use for release
371 * @param settings the settings.xml configuration
372 * @param reactorProjects the reactor projects
373 * @param dryRun do not commit any changes to the file system or SCM
374 * @throws ReleaseExecutionException if there is a problem during release branch
375 * @throws ReleaseFailureException if there is a problem during release branch
376 *
377 * @deprecated Use {@link ReleaseManager#branch(ReleaseDescriptor, ReleaseEnvironment, List, boolean)} instead.
378 */
379 void branch( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
380 boolean dryRun )
381 throws ReleaseExecutionException, ReleaseFailureException;
382
383 /**
384 * Branch a project
385 *
386 * @param releaseDescriptor the configuration to use for release
387 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
388 * @param reactorProjects the reactor projects
389 * @param dryRun do not commit any changes to the file system or SCM
390 * @param listener the listener
391 * @throws ReleaseExecutionException if there is a problem during release branch
392 * @throws ReleaseFailureException if there is a problem during release branch
393 */
394 void branch( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
395 List<MavenProject> reactorProjects, boolean dryRun, ReleaseManagerListener listener )
396 throws ReleaseExecutionException, ReleaseFailureException;
397
398 /**
399 * Branch a project
400 *
401 * @param releaseDescriptor the configuration to use for release
402 * @param settings the settings.xml configuration
403 * @param reactorProjects the reactor projects
404 * @param dryRun do not commit any changes to the file system or SCM
405 * @param listener the listener
406 * @throws ReleaseExecutionException if there is a problem during release branch
407 * @throws ReleaseFailureException if there is a problem during release branch
408 *
409 * @deprecated Use {@link ReleaseManager#branch(ReleaseDescriptor, ReleaseEnvironment, List, boolean,
410 * ReleaseManagerListener)} instead.
411 */
412 void branch( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects,
413 boolean dryRun, ReleaseManagerListener listener )
414 throws ReleaseExecutionException, ReleaseFailureException;
415
416 /**
417 * Branch a project
418 *
419 * @param branchRequest all branch arguments
420 * @throws ReleaseExecutionException if there is a problem during release branch
421 * @throws ReleaseFailureException if there is a problem during release branch
422 * @since 2.3
423 */
424 void branch( ReleaseBranchRequest branchRequest ) throws ReleaseExecutionException, ReleaseFailureException;
425
426 /**
427 * Update version numbers for a project
428 *
429 * @param releaseDescriptor the configuration to use for release
430 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release.
431 * @param reactorProjects the reactor projects
432 * @throws ReleaseExecutionException if there is a problem during update versions
433 * @throws ReleaseFailureException if there is a problem during update versions
434 */
435 void updateVersions( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
436 List<MavenProject> reactorProjects )
437 throws ReleaseExecutionException, ReleaseFailureException;
438
439 /**
440 * Update version numbers for a project
441 *
442 * @param updateVersionsRequest all update versions arguments
443 * @throws ReleaseExecutionException if there is a problem during update versions
444 * @throws ReleaseFailureException if there is a problem during update versions
445 * @since 2.3
446 */
447 void updateVersions( ReleaseUpdateVersionsRequest updateVersionsRequest )
448 throws ReleaseExecutionException, ReleaseFailureException;
449 }