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
107
108
109
110 @Parameter( defaultValue = "false", property = "useReleaseProfile" )
111 @Deprecated
112 private boolean useReleaseProfile;
113
114
115
116
117
118 @Parameter( defaultValue = "false", property = "dryRun" )
119 private boolean dryRun;
120
121
122
123
124
125
126
127
128
129 @Parameter
130 private Map<String, String> providerImplementations;
131
132
133
134
135 @Component
136 private ScmManager scmManager;
137
138 @Override
139 protected String getAdditionalProfiles()
140 {
141 return releaseProfiles;
142 }
143
144 @Override
145 public void execute()
146 throws MojoExecutionException, MojoFailureException
147 {
148 if ( providerImplementations != null )
149 {
150 for ( Map.Entry<String, String> providerEntry : providerImplementations.entrySet() )
151 {
152 getLog().info( "Change the default '" + providerEntry.getKey() + "' provider implementation to '"
153 + providerEntry.getValue() + "'." );
154 scmManager.setScmProviderImplementation( providerEntry.getKey(), providerEntry.getValue() );
155 }
156 }
157
158
159
160 if ( goals != null )
161 {
162 goals = StringUtils.join( StringUtils.split( goals ), " " );
163 }
164
165 try
166 {
167 setDeploymentRepository();
168
169 ReleaseDescriptorBuilder releaseDescriptor = createReleaseDescriptor();
170 if ( connectionUrl != null )
171 {
172 releaseDescriptor.setScmSourceUrl( connectionUrl );
173 }
174
175 if ( username != null )
176 {
177 releaseDescriptor.setScmUsername( username );
178 }
179
180 if ( password != null )
181 {
182 releaseDescriptor.setScmPassword( password );
183 }
184
185 releaseDescriptor.setLocalCheckout( localCheckout );
186
187 releaseDescriptor.setCheckoutDirectory( workingDirectory.getAbsolutePath() );
188 releaseDescriptor.setUseReleaseProfile( useReleaseProfile );
189
190 createGoals();
191 releaseDescriptor.setPerformGoals( goals );
192
193 ReleasePerformRequest performRequest = new ReleasePerformRequest();
194 performRequest.setReleaseDescriptorBuilder( releaseDescriptor );
195 performRequest.setReleaseEnvironment( getReleaseEnvironment() );
196 performRequest.setReactorProjects( getReactorProjects() );
197 performRequest.setReleaseManagerListener( new DefaultReleaseManagerListener( getLog(), dryRun ) );
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 }