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.util.Arrays;
23
24 import org.apache.maven.plugin.MojoExecutionException;
25 import org.apache.maven.plugin.MojoFailureException;
26 import org.apache.maven.plugins.annotations.Mojo;
27 import org.apache.maven.plugins.annotations.Parameter;
28 import org.apache.maven.shared.release.ReleaseExecutionException;
29 import org.apache.maven.shared.release.ReleaseFailureException;
30 import org.apache.maven.shared.release.config.ReleaseDescriptor;
31 import org.apache.maven.shared.release.config.ReleaseUtils;
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 @Mojo( name = "prepare", aggregator = true )
48 public class PrepareReleaseMojo
49 extends AbstractScmReleaseMojo
50 {
51
52
53
54
55 @Parameter( defaultValue = "true", property = "resume" )
56 private boolean resume;
57
58
59
60
61 @Parameter( defaultValue = "false", property = "generateReleasePoms" )
62 private boolean generateReleasePoms;
63
64
65
66
67 @Parameter( defaultValue = "false", property = "useEditMode" )
68 private boolean useEditMode;
69
70
71
72
73
74
75 @Parameter( defaultValue = "true", property = "updateDependencies" )
76 private boolean updateDependencies;
77
78
79
80
81
82
83
84 @Parameter( defaultValue = "false", property = "autoVersionSubmodules" )
85 private boolean autoVersionSubmodules;
86
87
88
89
90
91
92
93 @Parameter( defaultValue = "false", property = "dryRun" )
94 private boolean dryRun;
95
96
97
98
99 @Parameter( defaultValue = "true", property = "addSchema" )
100 private boolean addSchema;
101
102
103
104
105 @Parameter( defaultValue = "clean verify", property = "preparationGoals" )
106 private String preparationGoals;
107
108
109
110
111
112
113
114 @Parameter( defaultValue = "", property = "completionGoals" )
115 private String completionGoals;
116
117
118
119
120
121
122 @Parameter( defaultValue = "false", property = "commitByProject" )
123 private boolean commitByProject;
124
125
126
127
128
129
130 @Parameter( defaultValue = "false", property = "ignoreSnapshots" )
131 private boolean allowTimestampedSnapshots;
132
133
134
135
136
137
138
139 @Parameter( defaultValue = "false", property = "allowReleasePluginSnapshot", readonly = true )
140 private boolean allowReleasePluginSnapshot;
141
142
143
144
145
146
147
148 @Parameter
149 private String[] checkModificationExcludes;
150
151
152
153
154
155
156 @Parameter( property = "checkModificationExcludeList" )
157 private String checkModificationExcludeList;
158
159
160
161
162
163
164 @Parameter( property = "releaseVersion" )
165 private String releaseVersion;
166
167
168
169
170
171
172 @Parameter( property = "developmentVersion" )
173 private String developmentVersion;
174
175
176
177
178
179
180
181
182
183
184
185
186 @Parameter( defaultValue = "true", property = "remoteTagging" )
187 private boolean remoteTagging;
188
189
190
191
192
193
194 @Parameter( defaultValue = "true", property = "updateWorkingCopyVersions" )
195 private boolean updateWorkingCopyVersions;
196
197
198
199
200
201
202
203
204
205
206
207 @Parameter( defaultValue = "false", property = "suppressCommitBeforeTag" )
208 private boolean suppressCommitBeforeTag;
209
210
211
212
213
214
215
216
217 @Parameter( defaultValue = "0", property = "waitBeforeTagging" )
218 private int waitBeforeTagging;
219
220
221
222
223 public void execute()
224 throws MojoExecutionException, MojoFailureException
225 {
226 if ( generateReleasePoms )
227 {
228 throw new MojoFailureException(
229 "Generating release POMs is no longer supported in release:prepare. Please run release:prepare-with-pom instead." );
230 }
231
232 prepareRelease( generateReleasePoms );
233 }
234
235 protected void prepareRelease( boolean generateReleasePoms )
236 throws MojoExecutionException, MojoFailureException
237 {
238
239
240 super.execute();
241
242 ReleaseDescriptor config = createReleaseDescriptor();
243 config.setAddSchema( addSchema );
244 config.setGenerateReleasePoms( generateReleasePoms );
245 config.setScmUseEditMode( useEditMode );
246 config.setPreparationGoals( preparationGoals );
247 config.setCompletionGoals( completionGoals );
248 config.setCommitByProject( commitByProject );
249 config.setUpdateDependencies( updateDependencies );
250 config.setAutoVersionSubmodules( autoVersionSubmodules );
251 config.setAllowTimestampedSnapshots( allowTimestampedSnapshots );
252 config.setSnapshotReleasePluginAllowed( allowReleasePluginSnapshot );
253 config.setDefaultReleaseVersion( releaseVersion );
254 config.setDefaultDevelopmentVersion( developmentVersion );
255 config.setRemoteTagging( remoteTagging );
256 config.setUpdateWorkingCopyVersions( updateWorkingCopyVersions );
257 config.setSuppressCommitBeforeTagOrBranch( suppressCommitBeforeTag );
258 config.setWaitBeforeTagging( waitBeforeTagging );
259
260 if ( checkModificationExcludeList != null )
261 {
262 checkModificationExcludes = checkModificationExcludeList.replaceAll( "\\s", "" ).split( "," );
263 }
264
265 if ( checkModificationExcludes != null )
266 {
267 config.setCheckModificationExcludes( Arrays.asList( checkModificationExcludes ) );
268 }
269
270
271 ReleaseDescriptor sysPropertiesConfig =
272 ReleaseUtils.copyPropertiesToReleaseDescriptor( session.getExecutionProperties() );
273 mergeCommandLineConfig( config, sysPropertiesConfig );
274
275 try
276 {
277 releaseManager.prepare( config, getReleaseEnvironment(), getReactorProjects(), resume, dryRun );
278 }
279 catch ( ReleaseExecutionException e )
280 {
281 throw new MojoExecutionException( e.getMessage(), e );
282 }
283 catch ( ReleaseFailureException e )
284 {
285 throw new MojoFailureException( e.getMessage(), e );
286 }
287 }
288
289 }