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.io.File;
22 import java.text.MessageFormat;
23 import java.util.Collection;
24 import java.util.List;
25
26 import org.apache.maven.project.MavenProject;
27 import org.apache.maven.shared.release.ReleaseExecutionException;
28 import org.apache.maven.shared.release.ReleaseResult;
29 import org.apache.maven.shared.release.config.ReleaseDescriptor;
30 import org.apache.maven.shared.release.env.ReleaseEnvironment;
31 import org.apache.maven.shared.release.scm.ReleaseScmCommandException;
32 import org.apache.maven.shared.release.scm.ReleaseScmRepositoryException;
33 import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator;
34
35
36
37
38
39
40 public abstract class AbstractScmCommitDevelopmentPhase extends AbstractScmCommitPhase {
41
42
43
44 private final String rollbackMessageFormat;
45
46 protected AbstractScmCommitDevelopmentPhase(
47 ScmRepositoryConfigurator scmRepositoryConfigurator,
48 String descriptorCommentGetter,
49 String rollbackMessageFormat) {
50 super(scmRepositoryConfigurator, descriptorCommentGetter);
51 this.rollbackMessageFormat = rollbackMessageFormat;
52 }
53
54 @Override
55 protected void runLogic(
56 ReleaseDescriptor releaseDescriptor,
57 ReleaseEnvironment releaseEnvironment,
58 List<MavenProject> reactorProjects,
59 ReleaseResult result,
60 boolean simulating)
61 throws ReleaseScmCommandException, ReleaseExecutionException, ReleaseScmRepositoryException {
62
63 if (
64
65 releaseDescriptor.isSuppressCommitBeforeTagOrBranch()
66
67 && !releaseDescriptor.isUpdateWorkingCopyVersions()) {
68 if (simulating) {
69 logInfo(result, "Full run would not commit changes, because updateWorkingCopyVersions is false.");
70 } else {
71 logInfo(result, "Modified POMs are not committed because updateWorkingCopyVersions is set to false.");
72 }
73 }
74
75 else {
76 String message;
77 if (!releaseDescriptor.isUpdateWorkingCopyVersions()) {
78
79 message = createRollbackMessage(releaseDescriptor);
80 } else {
81
82 message = createMessage(reactorProjects, releaseDescriptor);
83 }
84 if (simulating) {
85 Collection<File> pomFiles = createPomFiles(releaseDescriptor, reactorProjects);
86 logInfo(result, "Full run would commit " + pomFiles.size() + " files with message: '" + message + "'");
87 } else {
88 performCheckins(releaseDescriptor, releaseEnvironment, reactorProjects, message);
89 }
90 }
91 }
92
93 private String createRollbackMessage(ReleaseDescriptor releaseDescriptor) {
94 return MessageFormat.format(
95 releaseDescriptor.getScmCommentPrefix() + rollbackMessageFormat,
96 releaseDescriptor.getScmReleaseLabel());
97 }
98 }