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