001 package org.apache.maven.execution;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements. See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership. The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License. You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied. See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022 import java.io.File;
023 import java.util.Date;
024 import java.util.List;
025 import java.util.Properties;
026
027 import org.apache.maven.artifact.repository.ArtifactRepository;
028 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
029 import org.apache.maven.model.Profile;
030 import org.apache.maven.project.ProjectBuildingRequest;
031 import org.apache.maven.settings.Mirror;
032 import org.apache.maven.settings.Proxy;
033 import org.apache.maven.settings.Server;
034 import org.codehaus.plexus.logging.Logger;
035 import org.sonatype.aether.RepositoryCache;
036 import org.sonatype.aether.repository.WorkspaceReader;
037 import org.sonatype.aether.transfer.TransferListener;
038
039 /**
040 * @author Jason van Zyl
041 */
042 public interface MavenExecutionRequest
043 {
044 // ----------------------------------------------------------------------
045 // Logging
046 // ----------------------------------------------------------------------
047
048 final int LOGGING_LEVEL_DEBUG = Logger.LEVEL_DEBUG;
049
050 final int LOGGING_LEVEL_INFO = Logger.LEVEL_INFO;
051
052 final int LOGGING_LEVEL_WARN = Logger.LEVEL_WARN;
053
054 final int LOGGING_LEVEL_ERROR = Logger.LEVEL_ERROR;
055
056 final int LOGGING_LEVEL_FATAL = Logger.LEVEL_FATAL;
057
058 final int LOGGING_LEVEL_DISABLED = Logger.LEVEL_DISABLED;
059
060 // ----------------------------------------------------------------------
061 // Reactor Failure Mode
062 // ----------------------------------------------------------------------
063
064 final String REACTOR_FAIL_FAST = "FAIL_FAST";
065
066 final String REACTOR_FAIL_AT_END = "FAIL_AT_END";
067
068 final String REACTOR_FAIL_NEVER = "FAIL_NEVER";
069
070 // ----------------------------------------------------------------------
071 // Reactor Make Mode
072 // ----------------------------------------------------------------------
073
074 final String REACTOR_MAKE_UPSTREAM = "make-upstream";
075
076 final String REACTOR_MAKE_DOWNSTREAM = "make-downstream";
077
078 final String REACTOR_MAKE_BOTH = "make-both";
079
080 // ----------------------------------------------------------------------
081 // Artifact repository policies
082 // ----------------------------------------------------------------------
083
084 final String CHECKSUM_POLICY_FAIL = ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL;
085
086 final String CHECKSUM_POLICY_WARN = ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN;
087
088 // ----------------------------------------------------------------------
089 //
090 // ----------------------------------------------------------------------
091
092 // Base directory
093 MavenExecutionRequest setBaseDirectory( File basedir );
094 String getBaseDirectory();
095
096 // Timing (remove this)
097 MavenExecutionRequest setStartTime( Date start );
098 Date getStartTime();
099
100 // Goals
101 MavenExecutionRequest setGoals( List<String> goals );
102 List<String> getGoals();
103
104 // Properties
105
106 /**
107 * Sets the system properties to use for interpolation and profile activation. The system properties are collected
108 * from the runtime environment like {@link System#getProperties()} and environment variables.
109 *
110 * @param systemProperties The system properties, may be {@code null}.
111 * @return This request, never {@code null}.
112 */
113 MavenExecutionRequest setSystemProperties( Properties systemProperties );
114
115 /**
116 * Gets the system properties to use for interpolation and profile activation. The system properties are collected
117 * from the runtime environment like {@link System#getProperties()} and environment variables.
118 *
119 * @return The system properties, never {@code null}.
120 */
121 Properties getSystemProperties();
122
123 /**
124 * Sets the user properties to use for interpolation and profile activation. The user properties have been
125 * configured directly by the user on his discretion, e.g. via the {@code -Dkey=value} parameter on the command
126 * line.
127 *
128 * @param userProperties The user properties, may be {@code null}.
129 * @return This request, never {@code null}.
130 */
131 MavenExecutionRequest setUserProperties( Properties userProperties );
132
133 /**
134 * Gets the user properties to use for interpolation and profile activation. The user properties have been
135 * configured directly by the user on his discretion, e.g. via the {@code -Dkey=value} parameter on the command
136 * line.
137 *
138 * @return The user properties, never {@code null}.
139 */
140 Properties getUserProperties();
141
142 // Reactor
143 MavenExecutionRequest setReactorFailureBehavior( String failureBehavior );
144 String getReactorFailureBehavior();
145
146 MavenExecutionRequest setSelectedProjects( List<String> projects );
147 List<String> getSelectedProjects();
148
149 MavenExecutionRequest setResumeFrom( String project );
150 String getResumeFrom();
151
152 MavenExecutionRequest setMakeBehavior( String makeBehavior );
153 String getMakeBehavior();
154
155 void setThreadCount( String threadCount );
156 String getThreadCount();
157 boolean isThreadConfigurationPresent();
158 void setPerCoreThreadCount( boolean perCoreThreadCount );
159 boolean isPerCoreThreadCount();
160
161 // Recursive (really to just process the top-level POM)
162 MavenExecutionRequest setRecursive( boolean recursive );
163 boolean isRecursive();
164
165 MavenExecutionRequest setPom( File pom );
166 File getPom();
167
168 // Errors
169 MavenExecutionRequest setShowErrors( boolean showErrors );
170 boolean isShowErrors();
171
172 // Transfer listeners
173 MavenExecutionRequest setTransferListener( TransferListener transferListener );
174 TransferListener getTransferListener();
175
176 // Logging
177 MavenExecutionRequest setLoggingLevel( int loggingLevel );
178 int getLoggingLevel();
179
180 // Update snapshots
181 MavenExecutionRequest setUpdateSnapshots( boolean updateSnapshots );
182 boolean isUpdateSnapshots();
183
184 MavenExecutionRequest setNoSnapshotUpdates( boolean noSnapshotUpdates );
185 boolean isNoSnapshotUpdates();
186
187 // Checksum policy
188 MavenExecutionRequest setGlobalChecksumPolicy( String globalChecksumPolicy );
189 String getGlobalChecksumPolicy();
190
191 // Local repository
192 MavenExecutionRequest setLocalRepositoryPath( String localRepository );
193 MavenExecutionRequest setLocalRepositoryPath( File localRepository );
194 File getLocalRepositoryPath();
195 MavenExecutionRequest setLocalRepository( ArtifactRepository repository );
196 ArtifactRepository getLocalRepository();
197
198 // Interactive
199 MavenExecutionRequest setInteractiveMode( boolean interactive );
200 boolean isInteractiveMode();
201
202 // Offline
203 MavenExecutionRequest setOffline( boolean offline );
204 boolean isOffline();
205
206 boolean isCacheTransferError();
207 MavenExecutionRequest setCacheTransferError( boolean cacheTransferError );
208
209 boolean isCacheNotFound();
210 MavenExecutionRequest setCacheNotFound( boolean cacheNotFound );
211
212 // Profiles
213 List<Profile> getProfiles();
214 MavenExecutionRequest addProfile( Profile profile );
215 MavenExecutionRequest setProfiles( List<Profile> profiles );
216 MavenExecutionRequest addActiveProfile( String profile );
217 MavenExecutionRequest addActiveProfiles( List<String> profiles );
218 MavenExecutionRequest setActiveProfiles( List<String> profiles );
219 List<String> getActiveProfiles();
220 MavenExecutionRequest addInactiveProfile( String profile );
221 MavenExecutionRequest addInactiveProfiles( List<String> profiles );
222 MavenExecutionRequest setInactiveProfiles( List<String> profiles );
223 List<String> getInactiveProfiles();
224
225 // Proxies
226 List<Proxy> getProxies();
227 MavenExecutionRequest setProxies( List<Proxy> proxies );
228 MavenExecutionRequest addProxy( Proxy proxy );
229
230 // Servers
231 List<Server> getServers();
232 MavenExecutionRequest setServers( List<Server> servers );
233 MavenExecutionRequest addServer( Server server );
234
235 // Mirrors
236 List<Mirror> getMirrors();
237 MavenExecutionRequest setMirrors( List<Mirror> mirrors );
238 MavenExecutionRequest addMirror( Mirror mirror );
239
240 // Plugin groups
241 List<String> getPluginGroups();
242 MavenExecutionRequest setPluginGroups( List<String> pluginGroups );
243 MavenExecutionRequest addPluginGroup( String pluginGroup );
244 MavenExecutionRequest addPluginGroups( List<String> pluginGroups );
245
246 boolean isProjectPresent();
247 MavenExecutionRequest setProjectPresent( boolean isProjectPresent );
248
249 File getUserSettingsFile();
250 MavenExecutionRequest setUserSettingsFile( File userSettingsFile );
251
252 File getGlobalSettingsFile();
253 MavenExecutionRequest setGlobalSettingsFile( File globalSettingsFile );
254
255 MavenExecutionRequest addRemoteRepository( ArtifactRepository repository );
256 MavenExecutionRequest addPluginArtifactRepository( ArtifactRepository repository );
257
258 /**
259 * Set a new list of remote repositories to use the execution request. This is necessary if you perform
260 * transformations on the remote repositories being used. For example if you replace existing repositories with
261 * mirrors then it's easier to just replace the whole list with a new list of transformed repositories.
262 *
263 * @param repositories
264 * @return
265 */
266 MavenExecutionRequest setRemoteRepositories( List<ArtifactRepository> repositories );
267 List<ArtifactRepository> getRemoteRepositories();
268
269 MavenExecutionRequest setPluginArtifactRepositories( List<ArtifactRepository> repositories );
270 List<ArtifactRepository> getPluginArtifactRepositories();
271
272 MavenExecutionRequest setRepositoryCache( RepositoryCache repositoryCache );
273 RepositoryCache getRepositoryCache();
274
275 WorkspaceReader getWorkspaceReader();
276 MavenExecutionRequest setWorkspaceReader( WorkspaceReader workspaceReader );
277
278 File getUserToolchainsFile();
279 MavenExecutionRequest setUserToolchainsFile( File userToolchainsFile );
280
281 ExecutionListener getExecutionListener();
282 MavenExecutionRequest setExecutionListener( ExecutionListener executionListener );
283
284 ProjectBuildingRequest getProjectBuildingRequest();
285
286 }