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
37
38
39
40
41
42
43
44
45
46 @Mojo(name = "perform", aggregator = true, requiresProject = false)
47 public class PerformReleaseMojo extends AbstractScmReadReleaseMojo {
48
49
50
51
52 @Parameter(property = "goals")
53 String goals;
54
55
56
57
58
59
60 @Parameter(property = "releaseProfiles")
61 private String releaseProfiles;
62
63
64
65
66 @Parameter(defaultValue = "${project.build.directory}/checkout", property = "workingDirectory", required = true)
67 private File workingDirectory;
68
69
70
71
72
73 @Parameter(property = "connectionUrl")
74 private String connectionUrl;
75
76
77
78
79
80
81
82
83
84
85 @Parameter(defaultValue = "false", property = "localCheckout")
86 private boolean localCheckout;
87
88
89
90
91
92
93
94
95
96 @Parameter(defaultValue = "false", property = "useReleaseProfile")
97 @Deprecated
98 private boolean useReleaseProfile;
99
100
101
102
103
104 @Parameter(defaultValue = "false", property = "dryRun")
105 private boolean dryRun;
106
107 @Inject
108 public PerformReleaseMojo(ReleaseManager releaseManager, ScmManager scmManager) {
109 super(releaseManager, scmManager);
110 }
111
112 @Override
113 protected String getAdditionalProfiles() {
114 return releaseProfiles;
115 }
116
117 @Override
118 public void execute() throws MojoExecutionException, MojoFailureException {
119 super.execute();
120
121
122
123 if (goals != null) {
124 goals = String.join(" ", goals.split("\\s+"));
125 }
126
127 try {
128 setDeploymentRepository();
129
130 ReleaseDescriptorBuilder releaseDescriptor = createReleaseDescriptor();
131 if (connectionUrl != null) {
132 releaseDescriptor.setScmSourceUrl(connectionUrl);
133 }
134
135 releaseDescriptor.setLocalCheckout(localCheckout);
136
137 releaseDescriptor.setCheckoutDirectory(workingDirectory.getAbsolutePath());
138 releaseDescriptor.setUseReleaseProfile(useReleaseProfile);
139
140 createGoals();
141 releaseDescriptor.setPerformGoals(goals);
142
143 ReleasePerformRequest performRequest = new ReleasePerformRequest();
144 performRequest.setReleaseDescriptorBuilder(releaseDescriptor);
145 performRequest.setReleaseEnvironment(getReleaseEnvironment());
146 performRequest.setReactorProjects(getReactorProjects());
147 performRequest.setReleaseManagerListener(new DefaultReleaseManagerListener(getLog(), dryRun));
148 performRequest.setDryRun(dryRun);
149
150 releaseManager.perform(performRequest);
151 } catch (ReleaseExecutionException e) {
152 throw new MojoExecutionException(e.getMessage(), e);
153 } catch (ReleaseFailureException e) {
154 throw new MojoFailureException(e.getMessage(), e);
155 }
156 }
157
158
159 void setDeploymentRepository() {}
160
161
162 void createGoals() {
163 if (goals == null) {
164
165 goals = "deploy";
166 if (project.getDistributionManagement() != null
167 && project.getDistributionManagement().getSite() != null) {
168 goals += " site-deploy";
169 }
170 }
171 }
172 }