1 package org.apache.maven.shared.release.phase;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.project.MavenProject;
23 import org.apache.maven.shared.release.ReleaseExecutionException;
24 import org.apache.maven.shared.release.ReleaseFailureException;
25 import org.apache.maven.shared.release.ReleaseResult;
26 import org.apache.maven.shared.release.config.ReleaseDescriptor;
27 import org.apache.maven.shared.release.env.ReleaseEnvironment;
28 import org.apache.maven.shared.release.scm.ReleaseScmCommandException;
29 import org.apache.maven.shared.release.scm.ReleaseScmRepositoryException;
30
31 import java.util.List;
32
33
34
35
36
37
38 public class ScmCommitPreparationPhase
39 extends AbstractScmCommitPhase
40 {
41
42 protected void runLogic( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment releaseEnvironment,
43 List<MavenProject> reactorProjects, ReleaseResult result, boolean simulating )
44 throws ReleaseScmCommandException, ReleaseExecutionException, ReleaseScmRepositoryException
45 {
46
47 if ( releaseDescriptor.isSuppressCommitBeforeTagOrBranch() )
48 {
49 if ( simulating )
50 {
51 logInfo( result, "Full run would not commit changes, because suppressCommitBeforeTagOrBranch is set." );
52 }
53 else
54 {
55 logInfo( result,
56 "Modified POMs are not committed because suppressCommitBeforeTagOrBranch is set to false." );
57 }
58 }
59
60 else
61 {
62 String message = createMessage( reactorProjects, releaseDescriptor );
63 if ( simulating )
64 {
65 simulateCheckins( releaseDescriptor, reactorProjects, result, message );
66 }
67 else
68 {
69 performCheckins( releaseDescriptor, releaseEnvironment, reactorProjects, message );
70 }
71 }
72 }
73
74 protected void validateConfiguration( ReleaseDescriptor releaseDescriptor )
75 throws ReleaseFailureException
76 {
77 super.validateConfiguration( releaseDescriptor );
78
79 if ( releaseDescriptor.isSuppressCommitBeforeTagOrBranch() && releaseDescriptor.isRemoteTagging() )
80 {
81 throw new ReleaseFailureException(
82 "Cannot perform a remote tag or branch without committing the working copy first." );
83 }
84 }
85 }