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
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.ReleasePerformRequest;
31 import org.apache.maven.shared.release.config.ReleaseDescriptor;
32 import org.codehaus.plexus.util.StringUtils;
33
34
35
36
37
38
39
40
41
42
43
44 @Mojo( name = "perform", aggregator = true, requiresProject = false )
45 public class PerformReleaseMojo
46 extends AbstractReleaseMojo
47 {
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 @Parameter( property = "username" )
92 private String username;
93
94
95
96
97 @Parameter( property = "password" )
98 private String password;
99
100
101
102
103
104
105 @Parameter( defaultValue = "true", property = "useReleaseProfile" )
106 private boolean useReleaseProfile;
107
108
109
110
111
112 @Parameter( defaultValue = "false", property = "dryRun" )
113 private boolean dryRun;
114
115
116
117
118 protected String getAdditionalProfiles()
119 {
120 return releaseProfiles;
121 }
122
123
124
125
126 public void execute()
127 throws MojoExecutionException, MojoFailureException
128 {
129
130
131 if ( goals != null )
132 {
133 goals = StringUtils.join( StringUtils.split( goals ), " " );
134 }
135
136 try
137 {
138 setDeploymentRepository();
139
140 ReleaseDescriptor releaseDescriptor = createReleaseDescriptor();
141 if ( connectionUrl != null )
142 {
143 releaseDescriptor.setScmSourceUrl( connectionUrl );
144 }
145
146 if ( username != null )
147 {
148 releaseDescriptor.setScmUsername( username );
149 }
150
151 if ( password != null )
152 {
153 releaseDescriptor.setScmPassword( password );
154 }
155
156 releaseDescriptor.setLocalCheckout( localCheckout );
157
158 releaseDescriptor.setCheckoutDirectory( workingDirectory.getAbsolutePath() );
159 releaseDescriptor.setUseReleaseProfile( useReleaseProfile );
160
161 createGoals();
162 releaseDescriptor.setPerformGoals( goals );
163
164 ReleasePerformRequest performRequest = new ReleasePerformRequest();
165 performRequest.setReleaseDescriptor( releaseDescriptor );
166 performRequest.setReleaseEnvironment( getReleaseEnvironment() );
167 performRequest.setReactorProjects( getReactorProjects() );
168 performRequest.setDryRun( dryRun );
169
170 releaseManager.perform( performRequest );
171 }
172 catch ( ReleaseExecutionException e )
173 {
174 throw new MojoExecutionException( e.getMessage(), e );
175 }
176 catch ( ReleaseFailureException e )
177 {
178 throw new MojoFailureException( e.getMessage(), e );
179 }
180 }
181
182
183 void setDeploymentRepository()
184 {
185 }
186
187
188 void createGoals()
189 {
190 if ( goals == null )
191 {
192
193 goals = "deploy";
194 if ( project.getDistributionManagement() != null
195 && project.getDistributionManagement().getSite() != null )
196 {
197 goals += " site-deploy";
198 }
199 }
200 }
201 }