1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.release;
20
21 import javax.inject.Inject;
22
23 import java.io.File;
24
25 import org.apache.maven.plugin.MojoExecutionException;
26 import org.apache.maven.plugin.MojoFailureException;
27 import org.apache.maven.plugins.annotations.Mojo;
28 import org.apache.maven.plugins.annotations.Parameter;
29 import org.apache.maven.scm.manager.ScmManager;
30 import org.apache.maven.shared.release.DefaultReleaseManagerListener;
31 import org.apache.maven.shared.release.ReleaseExecutionException;
32 import org.apache.maven.shared.release.ReleaseFailureException;
33 import org.apache.maven.shared.release.ReleaseManager;
34 import org.apache.maven.shared.release.ReleasePerformRequest;
35 import org.apache.maven.shared.release.config.ReleaseDescriptorBuilder;
36 import org.codehaus.plexus.util.StringUtils;
37
38
39
40
41
42
43
44
45
46
47 @Mojo(name = "perform", aggregator = true, requiresProject = false)
48 public class PerformReleaseMojo extends AbstractScmReadReleaseMojo {
49
50
51
52
53 @Parameter(property = "goals")
54 String goals;
55
56
57
58
59
60
61 @Parameter(property = "releaseProfiles")
62 private String releaseProfiles;
63
64
65
66
67 @Parameter(defaultValue = "${project.build.directory}/checkout", property = "workingDirectory", required = true)
68 private File workingDirectory;
69
70
71
72
73
74 @Parameter(property = "connectionUrl")
75 private String connectionUrl;
76
77
78
79
80
81
82
83
84
85
86 @Parameter(defaultValue = "false", property = "localCheckout")
87 private boolean localCheckout;
88
89
90
91
92
93
94
95
96
97 @Parameter(defaultValue = "false", property = "useReleaseProfile")
98 @Deprecated
99 private boolean useReleaseProfile;
100
101
102
103
104
105 @Parameter(defaultValue = "false", property = "dryRun")
106 private boolean dryRun;
107
108 @Inject
109 public PerformReleaseMojo(ReleaseManager releaseManager, ScmManager scmManager) {
110 super(releaseManager, scmManager);
111 }
112
113 @Override
114 protected String getAdditionalProfiles() {
115 return releaseProfiles;
116 }
117
118 @Override
119 public void execute() throws MojoExecutionException, MojoFailureException {
120 super.execute();
121
122
123
124 if (goals != null) {
125 goals = StringUtils.join(goals.split("\\s+"), " ");
126 }
127
128 try {
129 setDeploymentRepository();
130
131 ReleaseDescriptorBuilder releaseDescriptor = createReleaseDescriptor();
132 if (connectionUrl != null) {
133 releaseDescriptor.setScmSourceUrl(connectionUrl);
134 }
135
136 releaseDescriptor.setLocalCheckout(localCheckout);
137
138 releaseDescriptor.setCheckoutDirectory(workingDirectory.getAbsolutePath());
139 releaseDescriptor.setUseReleaseProfile(useReleaseProfile);
140
141 createGoals();
142 releaseDescriptor.setPerformGoals(goals);
143
144 ReleasePerformRequest performRequest = new ReleasePerformRequest();
145 performRequest.setReleaseDescriptorBuilder(releaseDescriptor);
146 performRequest.setReleaseEnvironment(getReleaseEnvironment());
147 performRequest.setReactorProjects(getReactorProjects());
148 performRequest.setReleaseManagerListener(new DefaultReleaseManagerListener(getLog(), dryRun));
149 performRequest.setDryRun(dryRun);
150
151 releaseManager.perform(performRequest);
152 } catch (ReleaseExecutionException e) {
153 throw new MojoExecutionException(e.getMessage(), e);
154 } catch (ReleaseFailureException e) {
155 throw new MojoFailureException(e.getMessage(), e);
156 }
157 }
158
159
160 void setDeploymentRepository() {}
161
162
163 void createGoals() {
164 if (goals == null) {
165
166 goals = "deploy";
167 if (project.getDistributionManagement() != null
168 && project.getDistributionManagement().getSite() != null) {
169 goals += " site-deploy";
170 }
171 }
172 }
173 }