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 @Mojo( name = "perform", aggregator = true, requiresProject = false )
44 public class PerformReleaseMojo
45 extends AbstractReleaseMojo
46 {
47
48
49
50
51 @Parameter( property = "goals" )
52 private String goals;
53
54
55
56
57
58
59 @Parameter( property = "releaseProfiles" )
60 private String releaseProfiles;
61
62
63
64
65 @Parameter( defaultValue = "${project.build.directory}/checkout", property = "workingDirectory", required = true )
66 private File workingDirectory;
67
68
69
70
71
72 @Parameter( property = "connectionUrl" )
73 private String connectionUrl;
74
75
76
77
78
79
80
81
82
83
84 @Parameter( defaultValue = "false", property = "localCheckout" )
85 private boolean localCheckout;
86
87
88
89
90 @Parameter( property = "username" )
91 private String username;
92
93
94
95
96 @Parameter( property = "password" )
97 private String password;
98
99
100
101
102
103
104 @Parameter( defaultValue = "true", property = "useReleaseProfile" )
105 private boolean useReleaseProfile;
106
107
108
109
110
111 @Parameter( defaultValue = "false", property = "dryRun" )
112 private boolean dryRun;
113
114
115
116
117 protected String getAdditionalProfiles()
118 {
119 return releaseProfiles;
120 }
121
122
123
124
125 public void execute()
126 throws MojoExecutionException, MojoFailureException
127 {
128
129
130 if ( goals != null )
131 {
132 goals = StringUtils.join( StringUtils.split( goals ), " " );
133 }
134
135 try
136 {
137
138 ReleaseDescriptor releaseDescriptor = createReleaseDescriptor();
139 if ( connectionUrl != null )
140 {
141 releaseDescriptor.setScmSourceUrl( connectionUrl );
142 }
143
144 if ( username != null )
145 {
146 releaseDescriptor.setScmUsername( username );
147 }
148
149 if( password != null )
150 {
151 releaseDescriptor.setScmPassword( password );
152 }
153
154 releaseDescriptor.setLocalCheckout( localCheckout );
155
156 releaseDescriptor.setCheckoutDirectory( workingDirectory.getAbsolutePath() );
157 releaseDescriptor.setUseReleaseProfile( useReleaseProfile );
158
159 if ( goals == null )
160 {
161
162 goals = "deploy";
163 if ( project.getDistributionManagement() != null
164 && project.getDistributionManagement().getSite() != null )
165 {
166 goals += " site-deploy";
167 }
168 }
169 releaseDescriptor.setPerformGoals( goals );
170
171 ReleasePerformRequest performRequest = new ReleasePerformRequest();
172 performRequest.setReleaseDescriptor( releaseDescriptor );
173 performRequest.setReleaseEnvironment( getReleaseEnvironment() );
174 performRequest.setReactorProjects( getReactorProjects() );
175 performRequest.setDryRun( dryRun );
176
177 releaseManager.perform( performRequest );
178 }
179 catch ( ReleaseExecutionException e )
180 {
181 throw new MojoExecutionException( e.getMessage(), e );
182 }
183 catch ( ReleaseFailureException e )
184 {
185 throw new MojoFailureException( e.getMessage(), e );
186 }
187 }
188 }