1 package org.apache.maven.plugins.release;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.util.Map;
24
25 import org.apache.maven.plugin.MojoExecutionException;
26 import org.apache.maven.plugin.MojoFailureException;
27 import org.apache.maven.plugins.annotations.Component;
28 import org.apache.maven.plugins.annotations.Mojo;
29 import org.apache.maven.plugins.annotations.Parameter;
30 import org.apache.maven.scm.manager.ScmManager;
31 import org.apache.maven.shared.release.DefaultReleaseManagerListener;
32 import org.apache.maven.shared.release.ReleaseExecutionException;
33 import org.apache.maven.shared.release.ReleaseFailureException;
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
49 extends AbstractReleaseMojo
50 {
51
52
53
54
55 @Parameter( property = "goals" )
56 String goals;
57
58
59
60
61
62
63 @Parameter( property = "releaseProfiles" )
64 private String releaseProfiles;
65
66
67
68
69 @Parameter( defaultValue = "${project.build.directory}/checkout", property = "workingDirectory", required = true )
70 private File workingDirectory;
71
72
73
74
75
76 @Parameter( property = "connectionUrl" )
77 private String connectionUrl;
78
79
80
81
82
83
84
85
86
87
88 @Parameter( defaultValue = "false", property = "localCheckout" )
89 private boolean localCheckout;
90
91
92
93
94 @Parameter( property = "username" )
95 private String username;
96
97
98
99
100 @Parameter( property = "password" )
101 private String password;
102
103
104
105
106 @Parameter( defaultValue = "true", property = "scmShallowClone" )
107 private boolean scmShallowClone = true;
108
109
110
111
112
113
114
115
116
117 @Parameter( defaultValue = "false", property = "useReleaseProfile" )
118 @Deprecated
119 private boolean useReleaseProfile;
120
121
122
123
124
125 @Parameter( defaultValue = "false", property = "dryRun" )
126 private boolean dryRun;
127
128
129
130
131
132
133
134
135
136 @Parameter
137 private Map<String, String> providerImplementations;
138
139
140
141
142 @Component
143 private ScmManager scmManager;
144
145 @Override
146 protected String getAdditionalProfiles()
147 {
148 return releaseProfiles;
149 }
150
151 @Override
152 public void execute()
153 throws MojoExecutionException, MojoFailureException
154 {
155 if ( providerImplementations != null )
156 {
157 for ( Map.Entry<String, String> providerEntry : providerImplementations.entrySet() )
158 {
159 getLog().info( "Change the default '" + providerEntry.getKey() + "' provider implementation to '"
160 + providerEntry.getValue() + "'." );
161 scmManager.setScmProviderImplementation( providerEntry.getKey(), providerEntry.getValue() );
162 }
163 }
164
165
166
167 if ( goals != null )
168 {
169 goals = StringUtils.join( StringUtils.split( goals ), " " );
170 }
171
172 try
173 {
174 setDeploymentRepository();
175
176 ReleaseDescriptorBuilder releaseDescriptor = createReleaseDescriptor();
177 if ( connectionUrl != null )
178 {
179 releaseDescriptor.setScmSourceUrl( connectionUrl );
180 }
181
182 if ( username != null )
183 {
184 releaseDescriptor.setScmUsername( username );
185 }
186
187 if ( password != null )
188 {
189 releaseDescriptor.setScmPassword( password );
190 }
191
192 releaseDescriptor.setScmShallowClone( scmShallowClone );
193
194 releaseDescriptor.setLocalCheckout( localCheckout );
195
196 releaseDescriptor.setCheckoutDirectory( workingDirectory.getAbsolutePath() );
197 releaseDescriptor.setUseReleaseProfile( useReleaseProfile );
198
199 createGoals();
200 releaseDescriptor.setPerformGoals( goals );
201
202 ReleasePerformRequest performRequest = new ReleasePerformRequest();
203 performRequest.setReleaseDescriptorBuilder( releaseDescriptor );
204 performRequest.setReleaseEnvironment( getReleaseEnvironment() );
205 performRequest.setReactorProjects( getReactorProjects() );
206 performRequest.setReleaseManagerListener( new DefaultReleaseManagerListener( getLog(), dryRun ) );
207 performRequest.setDryRun( dryRun );
208
209 releaseManager.perform( performRequest );
210 }
211 catch ( ReleaseExecutionException e )
212 {
213 throw new MojoExecutionException( e.getMessage(), e );
214 }
215 catch ( ReleaseFailureException e )
216 {
217 throw new MojoFailureException( e.getMessage(), e );
218 }
219 }
220
221
222 void setDeploymentRepository()
223 {
224 }
225
226
227 void createGoals()
228 {
229 if ( goals == null )
230 {
231
232 goals = "deploy";
233 if ( project.getDistributionManagement() != null
234 && project.getDistributionManagement().getSite() != null )
235 {
236 goals += " site-deploy";
237 }
238 }
239 }
240 }