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)} instead. 95 */ 96 void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects, 97 boolean resume, boolean dryRun ) 98 throws ReleaseExecutionException, ReleaseFailureException; 99 100 /** 101 * Prepare a release. 102 * 103 * @param prepareRequest all prepare arguments 104 * @throws ReleaseExecutionException if there is a problem performing the release 105 * @throws ReleaseFailureException if there is a problem performing the release 106 * @since 2.3 107 */ 108 void prepare( ReleasePrepareRequest prepareRequest ) throws ReleaseExecutionException, ReleaseFailureException; 109 110 /** 111 * Prepare a release. 112 * 113 * @param releaseDescriptor the configuration to pass to the preparation steps 114 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release. 115 * @param reactorProjects the reactor projects 116 * @param resume resume a previous release, if the properties file exists 117 * @param dryRun do not commit any changes to the file system or SCM 118 * @param listener the listener 119 * @throws ReleaseExecutionException if there is a problem performing the release 120 * @throws ReleaseFailureException if there is a problem performing the release 121 */ 122 void prepare( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, 123 List<MavenProject> reactorProjects, boolean resume, boolean dryRun, ReleaseManagerListener listener ) 124 throws ReleaseExecutionException, ReleaseFailureException; 125 126 /** 127 * Prepare a release. 128 * 129 * @param releaseDescriptor the configuration to pass to the preparation steps 130 * @param settings the settings.xml configuration 131 * @param reactorProjects the reactor projects 132 * @param resume resume a previous release, if the properties file exists 133 * @param dryRun do not commit any changes to the file system or SCM 134 * @param listener the listener 135 * @throws ReleaseExecutionException if there is a problem performing the release 136 * @throws ReleaseFailureException if there is a problem performing the release 137 * 138 * @deprecated Use {@link ReleaseManager#prepare(ReleaseDescriptor, ReleaseEnvironment, List, boolean, boolean, ReleaseManagerListener)} instead. 139 */ 140 void prepare( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects, 141 boolean resume, boolean dryRun, ReleaseManagerListener listener ) 142 throws ReleaseExecutionException, ReleaseFailureException; 143 144 ReleaseResult prepareWithResult( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, 145 List<MavenProject> reactorProjects, boolean resume, boolean dryRun, 146 ReleaseManagerListener listener ); 147 148 /** 149 * @deprecated Use {@link ReleaseManager#prepareWithResult(ReleaseDescriptor, ReleaseEnvironment, List, boolean, boolean, ReleaseManagerListener)} instead. 150 */ 151 ReleaseResult prepareWithResult( ReleaseDescriptor releaseDescriptor, Settings settings, 152 List<MavenProject> reactorProjects, boolean resume, boolean dryRun, 153 ReleaseManagerListener listener ); 154 155 /** 156 * Perform a release. 157 * 158 * @param releaseDescriptor the configuration to use for release 159 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release. 160 * @param reactorProjects the reactor projects 161 * @throws ReleaseExecutionException if there is a problem performing the release 162 * @throws ReleaseFailureException if there is a problem performing the release 163 */ 164 void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, 165 List<MavenProject> reactorProjects ) 166 throws ReleaseExecutionException, ReleaseFailureException; 167 168 /** 169 * Perform a release. 170 * 171 * @param releaseDescriptor the configuration to use for release 172 * @param settings the settings.xml configuration 173 * @param reactorProjects the reactor projects 174 * @throws ReleaseExecutionException if there is a problem performing the release 175 * @throws ReleaseFailureException if there is a problem performing the release 176 * 177 * @deprecated Use {@link ReleaseManager#perform(ReleaseDescriptor, ReleaseEnvironment, List)} instead 178 */ 179 void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects ) 180 throws ReleaseExecutionException, ReleaseFailureException; 181 182 /** 183 * Perform a release. 184 * 185 * @param releaseDescriptor the configuration to use for release 186 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release. 187 * @param reactorProjects the reactor projects 188 * @param listener the listener 189 * @throws ReleaseExecutionException if there is a problem performing the release 190 * @throws ReleaseFailureException if there is a problem performing the release 191 */ 192 void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, 193 List<MavenProject> reactorProjects, ReleaseManagerListener listener ) 194 throws ReleaseExecutionException, ReleaseFailureException; 195 196 /** 197 * Perform a release. 198 * 199 * @param releaseDescriptor the configuration to use for release 200 * @param settings the settings.xml configuration 201 * @param reactorProjects the reactor projects 202 * @param listener the listener 203 * @throws ReleaseExecutionException if there is a problem performing the release 204 * @throws ReleaseFailureException if there is a problem performing the release 205 * 206 * @deprecated Use {@link ReleaseManager#perform(ReleaseDescriptor, ReleaseEnvironment, List, ReleaseManagerListener)} instead. 207 */ 208 void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects, 209 ReleaseManagerListener listener ) 210 throws ReleaseExecutionException, ReleaseFailureException; 211 212 ReleaseResult performWithResult( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, 213 List<MavenProject> reactorProjects, ReleaseManagerListener listener ); 214 215 /** 216 * @deprecated Use {@link ReleaseManager#performWithResult(ReleaseDescriptor, ReleaseEnvironment, List, ReleaseManagerListener)} instead. 217 */ 218 ReleaseResult performWithResult( ReleaseDescriptor releaseDescriptor, Settings settings, 219 List<MavenProject> reactorProjects, ReleaseManagerListener listener ); 220 221 /** 222 * Perform a release, and optionally cleanup. 223 * 224 * @param releaseDescriptor the configuration to use for release 225 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release. 226 * @param reactorProjects the reactor projects 227 * @param clean flag to clean the release after perform 228 * @throws ReleaseExecutionException if there is a problem performing the release 229 * @throws ReleaseFailureException if there is a problem performing the release 230 */ 231 void perform( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, 232 List<MavenProject> reactorProjects, boolean clean ) 233 throws ReleaseExecutionException, ReleaseFailureException; 234 235 /** 236 * Perform a release 237 * 238 * @param performRequest all perform arguments 239 * @throws ReleaseExecutionException if there is a problem performing the release 240 * @throws ReleaseFailureException if there is a problem performing the release 241 * @since 2.3 242 */ 243 void perform( ReleasePerformRequest performRequest ) 244 throws ReleaseExecutionException, ReleaseFailureException; 245 246 /** 247 * Perform a release, and optionally cleanup. 248 * 249 * @param releaseDescriptor the configuration to use for release 250 * @param settings the settings.xml configuration 251 * @param reactorProjects the reactor projects 252 * @param clean flag to clean the release after perform 253 * @throws ReleaseExecutionException if there is a problem performing the release 254 * @throws ReleaseFailureException if there is a problem performing the release 255 * 256 * @deprecated Use {@link ReleaseManager#perform(ReleaseDescriptor, ReleaseEnvironment, List, boolean)} instead. 257 */ 258 void perform( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects, 259 boolean clean ) 260 throws ReleaseExecutionException, ReleaseFailureException; 261 262 /** 263 * Clean a release. 264 * 265 * @param releaseDescriptor the configuration to use for release 266 * @param reactorProjects the reactor projects 267 */ 268 void clean( ReleaseDescriptor releaseDescriptor, ReleaseManagerListener listener, List<MavenProject> reactorProjects ); 269 270 /** 271 * Clean a release. 272 * 273 * @param cleanRequest all clean arguments 274 * @since 2.3 275 */ 276 void clean( ReleaseCleanRequest cleanRequest ); 277 278 /** 279 * Rollback changes made by the previous release 280 * 281 * @param releaseDescriptor the configuration to use for release 282 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release. 283 * @param reactorProjects the reactor projects 284 * @throws ReleaseExecutionException if there is a problem during release rollback 285 * @throws ReleaseFailureException if there is a problem during release rollback 286 */ 287 void rollback( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, 288 List<MavenProject> reactorProjects ) 289 throws ReleaseExecutionException, ReleaseFailureException; 290 291 /** 292 * Rollback changes made by the previous release 293 * 294 * @param releaseDescriptor the configuration to use for release 295 * @param settings the settings.xml configuration 296 * @param reactorProjects the reactor projects 297 * @throws ReleaseExecutionException if there is a problem during release rollback 298 * @throws ReleaseFailureException if there is a problem during release rollback 299 * 300 * @deprecated Use {@link ReleaseManager#rollback(ReleaseDescriptor, ReleaseEnvironment, List)} instead. 301 */ 302 void rollback( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects ) 303 throws ReleaseExecutionException, ReleaseFailureException; 304 305 /** 306 * Rollback changes made by the previous release 307 * 308 * @param releaseDescriptor the configuration to use for release 309 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release. 310 * @param reactorProjects the reactor projects 311 * @param listener the listener 312 * @throws ReleaseExecutionException if there is a problem during release rollback 313 * @throws ReleaseFailureException if there is a problem during release rollback 314 */ 315 void rollback( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, 316 List<MavenProject> reactorProjects, ReleaseManagerListener listener ) 317 throws ReleaseExecutionException, ReleaseFailureException; 318 319 /** 320 * Rollback changes made by the previous release 321 * 322 * @param releaseDescriptor the configuration to use for release 323 * @param settings the settings.xml configuration 324 * @param reactorProjects the reactor projects 325 * @param listener the listener 326 * @throws ReleaseExecutionException if there is a problem during release rollback 327 * @throws ReleaseFailureException if there is a problem during release rollback 328 * 329 * @deprecated Use {@link ReleaseManager#rollback(ReleaseDescriptor, ReleaseEnvironment, List, ReleaseManagerListener)} instead. 330 */ 331 void rollback( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects, 332 ReleaseManagerListener listener ) 333 throws ReleaseExecutionException, ReleaseFailureException; 334 335 /** 336 * Rollback changes made by the previous release 337 * 338 * @param rollbackRequest all rollback arguments 339 * @throws ReleaseExecutionException if there is a problem during release rollback 340 * @throws ReleaseFailureException if there is a problem during release rollback 341 * @since 2.3 342 */ 343 void rollback( ReleaseRollbackRequest rollbackRequest ) 344 throws ReleaseExecutionException, ReleaseFailureException; 345 346 /** 347 * Branch a project 348 * 349 * @param releaseDescriptor the configuration to use for release 350 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release. 351 * @param reactorProjects the reactor projects 352 * @param dryRun do not commit any changes to the file system or SCM 353 * @throws ReleaseExecutionException if there is a problem during release branch 354 * @throws ReleaseFailureException if there is a problem during release branch 355 */ 356 void branch( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, 357 List<MavenProject> reactorProjects, boolean dryRun ) 358 throws ReleaseExecutionException, ReleaseFailureException; 359 360 /** 361 * Branch a project 362 * 363 * @param releaseDescriptor the configuration to use for release 364 * @param settings the settings.xml configuration 365 * @param reactorProjects the reactor projects 366 * @param dryRun do not commit any changes to the file system or SCM 367 * @throws ReleaseExecutionException if there is a problem during release branch 368 * @throws ReleaseFailureException if there is a problem during release branch 369 * 370 * @deprecated Use {@link ReleaseManager#branch(ReleaseDescriptor, ReleaseEnvironment, List, boolean)} instead. 371 */ 372 void branch( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects, 373 boolean dryRun ) 374 throws ReleaseExecutionException, ReleaseFailureException; 375 376 /** 377 * Branch a project 378 * 379 * @param releaseDescriptor the configuration to use for release 380 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release. 381 * @param reactorProjects the reactor projects 382 * @param dryRun do not commit any changes to the file system or SCM 383 * @param listener the listener 384 * @throws ReleaseExecutionException if there is a problem during release branch 385 * @throws ReleaseFailureException if there is a problem during release branch 386 */ 387 void branch( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, 388 List<MavenProject> reactorProjects, boolean dryRun, ReleaseManagerListener listener ) 389 throws ReleaseExecutionException, ReleaseFailureException; 390 391 /** 392 * Branch a project 393 * 394 * @param releaseDescriptor the configuration to use for release 395 * @param settings the settings.xml configuration 396 * @param reactorProjects the reactor projects 397 * @param dryRun do not commit any changes to the file system or SCM 398 * @param listener the listener 399 * @throws ReleaseExecutionException if there is a problem during release branch 400 * @throws ReleaseFailureException if there is a problem during release branch 401 * 402 * @deprecated Use {@link ReleaseManager#branch(ReleaseDescriptor, ReleaseEnvironment, List, boolean, ReleaseManagerListener)} instead. 403 */ 404 void branch( ReleaseDescriptor releaseDescriptor, Settings settings, List<MavenProject> reactorProjects, 405 boolean dryRun, ReleaseManagerListener listener ) 406 throws ReleaseExecutionException, ReleaseFailureException; 407 408 /** 409 * Branch a project 410 * 411 * @param branchRequest all branch arguments 412 * @throws ReleaseExecutionException if there is a problem during release branch 413 * @throws ReleaseFailureException if there is a problem during release branch 414 * @since 2.3 415 */ 416 void branch( ReleaseBranchRequest branchRequest ) throws ReleaseExecutionException, ReleaseFailureException; 417 418 /** 419 * Update version numbers for a project 420 * 421 * @param releaseDescriptor the configuration to use for release 422 * @param releaseEnvironment settings, maven-home, java-home, etc. to use during release. 423 * @param reactorProjects the reactor projects 424 * @throws ReleaseExecutionException if there is a problem during update versions 425 * @throws ReleaseFailureException if there is a problem during update versions 426 */ 427 void updateVersions( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment, 428 List<MavenProject> reactorProjects ) 429 throws ReleaseExecutionException, ReleaseFailureException; 430 431 /** 432 * Update version numbers for a project 433 * 434 * @param updateVersionsRequest all update versions arguments 435 * @throws ReleaseExecutionException if there is a problem during update versions 436 * @throws ReleaseFailureException if there is a problem during update versions 437 * @since 2.3 438 */ 439 void updateVersions( ReleaseUpdateVersionsRequest updateVersionsRequest ) 440 throws ReleaseExecutionException, ReleaseFailureException; 441 }