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.ReleaseExecutionException;
32 import org.apache.maven.shared.release.ReleaseFailureException;
33 import org.apache.maven.shared.release.ReleasePerformRequest;
34 import org.apache.maven.shared.release.config.ReleaseDescriptor;
35 import org.codehaus.plexus.util.StringUtils;
36
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
107
108 @Parameter( defaultValue = "true", property = "useReleaseProfile" )
109 private boolean useReleaseProfile;
110
111
112
113
114
115 @Parameter( defaultValue = "false", property = "dryRun" )
116 private boolean dryRun;
117
118
119
120
121
122
123
124
125
126 @Parameter
127 private Map<String, String> providerImplementations;
128
129
130
131
132 @Component
133 private ScmManager scmManager;
134
135
136
137
138 protected String getAdditionalProfiles()
139 {
140 return releaseProfiles;
141 }
142
143
144
145
146 public void execute()
147 throws MojoExecutionException, MojoFailureException
148 {
149 if ( providerImplementations != null )
150 {
151 for ( Map.Entry<String, String> providerEntry : providerImplementations.entrySet() )
152 {
153 getLog().info( "Change the default '" + providerEntry.getKey() + "' provider implementation to '"
154 + providerEntry.getValue() + "'." );
155 scmManager.setScmProviderImplementation( providerEntry.getKey(), providerEntry.getValue() );
156 }
157 }
158
159
160
161 if ( goals != null )
162 {
163 goals = StringUtils.join( StringUtils.split( goals ), " " );
164 }
165
166 try
167 {
168 setDeploymentRepository();
169
170 ReleaseDescriptor releaseDescriptor = createReleaseDescriptor();
171 if ( connectionUrl != null )
172 {
173 releaseDescriptor.setScmSourceUrl( connectionUrl );
174 }
175
176 if ( username != null )
177 {
178 releaseDescriptor.setScmUsername( username );
179 }
180
181 if ( password != null )
182 {
183 releaseDescriptor.setScmPassword( password );
184 }
185
186 releaseDescriptor.setLocalCheckout( localCheckout );
187
188 releaseDescriptor.setCheckoutDirectory( workingDirectory.getAbsolutePath() );
189 releaseDescriptor.setUseReleaseProfile( useReleaseProfile );
190
191 createGoals();
192 releaseDescriptor.setPerformGoals( goals );
193
194 ReleasePerformRequest performRequest = new ReleasePerformRequest();
195 performRequest.setReleaseDescriptor( releaseDescriptor );
196 performRequest.setReleaseEnvironment( getReleaseEnvironment() );
197 performRequest.setReactorProjects( getReactorProjects() );
198 performRequest.setDryRun( dryRun );
199
200 releaseManager.perform( performRequest );
201 }
202 catch ( ReleaseExecutionException e )
203 {
204 throw new MojoExecutionException( e.getMessage(), e );
205 }
206 catch ( ReleaseFailureException e )
207 {
208 throw new MojoFailureException( e.getMessage(), e );
209 }
210 }
211
212
213 void setDeploymentRepository()
214 {
215 }
216
217
218 void createGoals()
219 {
220 if ( goals == null )
221 {
222
223 goals = "deploy";
224 if ( project.getDistributionManagement() != null
225 && project.getDistributionManagement().getSite() != null )
226 {
227 goals += " site-deploy";
228 }
229 }
230 }
231 }