001package 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 022import java.io.File; 023import java.util.Date; 024import java.util.List; 025import java.util.Properties; 026 027import org.apache.maven.artifact.repository.ArtifactRepository; 028import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy; 029import org.apache.maven.model.Profile; 030import org.apache.maven.project.ProjectBuildingRequest; 031import org.apache.maven.settings.Mirror; 032import org.apache.maven.settings.Proxy; 033import org.apache.maven.settings.Server; 034import org.codehaus.plexus.logging.Logger; 035import org.eclipse.aether.RepositoryCache; 036import org.eclipse.aether.repository.WorkspaceReader; 037import org.eclipse.aether.transfer.TransferListener; 038 039/** 040 * @author Jason van Zyl 041 */ 042public interface MavenExecutionRequest 043{ 044 // ---------------------------------------------------------------------- 045 // Logging 046 // ---------------------------------------------------------------------- 047 048 int LOGGING_LEVEL_DEBUG = Logger.LEVEL_DEBUG; 049 050 int LOGGING_LEVEL_INFO = Logger.LEVEL_INFO; 051 052 int LOGGING_LEVEL_WARN = Logger.LEVEL_WARN; 053 054 int LOGGING_LEVEL_ERROR = Logger.LEVEL_ERROR; 055 056 int LOGGING_LEVEL_FATAL = Logger.LEVEL_FATAL; 057 058 int LOGGING_LEVEL_DISABLED = Logger.LEVEL_DISABLED; 059 060 // ---------------------------------------------------------------------- 061 // Reactor Failure Mode 062 // ---------------------------------------------------------------------- 063 064 String REACTOR_FAIL_FAST = "FAIL_FAST"; 065 066 String REACTOR_FAIL_AT_END = "FAIL_AT_END"; 067 068 String REACTOR_FAIL_NEVER = "FAIL_NEVER"; 069 070 // ---------------------------------------------------------------------- 071 // Reactor Make Mode 072 // ---------------------------------------------------------------------- 073 074 String REACTOR_MAKE_UPSTREAM = "make-upstream"; 075 076 String REACTOR_MAKE_DOWNSTREAM = "make-downstream"; 077 078 String REACTOR_MAKE_BOTH = "make-both"; 079 080 // ---------------------------------------------------------------------- 081 // Artifact repository policies 082 // ---------------------------------------------------------------------- 083 084 String CHECKSUM_POLICY_FAIL = ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL; 085 086 String CHECKSUM_POLICY_WARN = ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN; 087 088 // ---------------------------------------------------------------------- 089 // 090 // ---------------------------------------------------------------------- 091 092 // Base directory 093 MavenExecutionRequest setBaseDirectory( File basedir ); 094 095 String getBaseDirectory(); 096 097 // Timing (remove this) 098 MavenExecutionRequest setStartTime( Date start ); 099 100 Date getStartTime(); 101 102 // Goals 103 MavenExecutionRequest setGoals( List<String> goals ); 104 105 List<String> getGoals(); 106 107 // Properties 108 109 /** 110 * Sets the system properties to use for interpolation and profile activation. The system properties are collected 111 * from the runtime environment like {@link System#getProperties()} and environment variables. 112 * 113 * @param systemProperties The system properties, may be {@code null}. 114 * @return This request, never {@code null}. 115 */ 116 MavenExecutionRequest setSystemProperties( Properties systemProperties ); 117 118 /** 119 * Gets the system properties to use for interpolation and profile activation. The system properties are collected 120 * from the runtime environment like {@link System#getProperties()} and environment variables. 121 * 122 * @return The system properties, never {@code null}. 123 */ 124 Properties getSystemProperties(); 125 126 /** 127 * Sets the user properties to use for interpolation and profile activation. The user properties have been 128 * configured directly by the user on his discretion, e.g. via the {@code -Dkey=value} parameter on the command 129 * line. 130 * 131 * @param userProperties The user properties, may be {@code null}. 132 * @return This request, never {@code null}. 133 */ 134 MavenExecutionRequest setUserProperties( Properties userProperties ); 135 136 /** 137 * Gets the user properties to use for interpolation and profile activation. The user properties have been 138 * configured directly by the user on his discretion, e.g. via the {@code -Dkey=value} parameter on the command 139 * line. 140 * 141 * @return The user properties, never {@code null}. 142 */ 143 Properties getUserProperties(); 144 145 // Reactor 146 MavenExecutionRequest setReactorFailureBehavior( String failureBehavior ); 147 148 String getReactorFailureBehavior(); 149 150 MavenExecutionRequest setSelectedProjects( List<String> projects ); 151 152 List<String> getSelectedProjects(); 153 154 /** 155 * @param projects the projects to exclude 156 * @return this MavenExecutionRequest 157 * @since 3.2 158 */ 159 MavenExecutionRequest setExcludedProjects( List<String> projects ); 160 161 /** 162 * @return the excluded projects, never {@code null} 163 * @since 3.2 164 */ 165 List<String> getExcludedProjects(); 166 167 MavenExecutionRequest setResumeFrom( String project ); 168 169 String getResumeFrom(); 170 171 MavenExecutionRequest setMakeBehavior( String makeBehavior ); 172 173 String getMakeBehavior(); 174 175 /** 176 * Set's the parallel degree of concurrency used by the build. 177 * 178 * @param degreeOfConcurrency 179 */ 180 void setDegreeOfConcurrency( int degreeOfConcurrency ); 181 182 /** 183 * @return the degree of concurrency for the build. 184 */ 185 int getDegreeOfConcurrency(); 186 187 // Recursive (really to just process the top-level POM) 188 MavenExecutionRequest setRecursive( boolean recursive ); 189 190 boolean isRecursive(); 191 192 MavenExecutionRequest setPom( File pom ); 193 194 File getPom(); 195 196 // Errors 197 MavenExecutionRequest setShowErrors( boolean showErrors ); 198 199 boolean isShowErrors(); 200 201 // Transfer listeners 202 MavenExecutionRequest setTransferListener( TransferListener transferListener ); 203 204 TransferListener getTransferListener(); 205 206 // Logging 207 MavenExecutionRequest setLoggingLevel( int loggingLevel ); 208 209 int getLoggingLevel(); 210 211 // Update snapshots 212 MavenExecutionRequest setUpdateSnapshots( boolean updateSnapshots ); 213 214 boolean isUpdateSnapshots(); 215 216 MavenExecutionRequest setNoSnapshotUpdates( boolean noSnapshotUpdates ); 217 218 boolean isNoSnapshotUpdates(); 219 220 // Checksum policy 221 MavenExecutionRequest setGlobalChecksumPolicy( String globalChecksumPolicy ); 222 223 String getGlobalChecksumPolicy(); 224 225 // Local repository 226 MavenExecutionRequest setLocalRepositoryPath( String localRepository ); 227 228 MavenExecutionRequest setLocalRepositoryPath( File localRepository ); 229 230 File getLocalRepositoryPath(); 231 232 MavenExecutionRequest setLocalRepository( ArtifactRepository repository ); 233 234 ArtifactRepository getLocalRepository(); 235 236 // Interactive 237 MavenExecutionRequest setInteractiveMode( boolean interactive ); 238 239 boolean isInteractiveMode(); 240 241 // Offline 242 MavenExecutionRequest setOffline( boolean offline ); 243 244 boolean isOffline(); 245 246 boolean isCacheTransferError(); 247 248 MavenExecutionRequest setCacheTransferError( boolean cacheTransferError ); 249 250 boolean isCacheNotFound(); 251 252 MavenExecutionRequest setCacheNotFound( boolean cacheNotFound ); 253 254 // Profiles 255 List<Profile> getProfiles(); 256 257 MavenExecutionRequest addProfile( Profile profile ); 258 259 MavenExecutionRequest setProfiles( List<Profile> profiles ); 260 261 MavenExecutionRequest addActiveProfile( String profile ); 262 263 MavenExecutionRequest addActiveProfiles( List<String> profiles ); 264 265 MavenExecutionRequest setActiveProfiles( List<String> profiles ); 266 267 List<String> getActiveProfiles(); 268 269 MavenExecutionRequest addInactiveProfile( String profile ); 270 271 MavenExecutionRequest addInactiveProfiles( List<String> profiles ); 272 273 MavenExecutionRequest setInactiveProfiles( List<String> profiles ); 274 275 List<String> getInactiveProfiles(); 276 277 // Proxies 278 List<Proxy> getProxies(); 279 280 MavenExecutionRequest setProxies( List<Proxy> proxies ); 281 282 MavenExecutionRequest addProxy( Proxy proxy ); 283 284 // Servers 285 List<Server> getServers(); 286 287 MavenExecutionRequest setServers( List<Server> servers ); 288 289 MavenExecutionRequest addServer( Server server ); 290 291 // Mirrors 292 List<Mirror> getMirrors(); 293 294 MavenExecutionRequest setMirrors( List<Mirror> mirrors ); 295 296 MavenExecutionRequest addMirror( Mirror mirror ); 297 298 // Plugin groups 299 List<String> getPluginGroups(); 300 301 MavenExecutionRequest setPluginGroups( List<String> pluginGroups ); 302 303 MavenExecutionRequest addPluginGroup( String pluginGroup ); 304 305 MavenExecutionRequest addPluginGroups( List<String> pluginGroups ); 306 307 boolean isProjectPresent(); 308 309 MavenExecutionRequest setProjectPresent( boolean isProjectPresent ); 310 311 File getUserSettingsFile(); 312 313 MavenExecutionRequest setUserSettingsFile( File userSettingsFile ); 314 315 File getGlobalSettingsFile(); 316 317 MavenExecutionRequest setGlobalSettingsFile( File globalSettingsFile ); 318 319 MavenExecutionRequest addRemoteRepository( ArtifactRepository repository ); 320 321 MavenExecutionRequest addPluginArtifactRepository( ArtifactRepository repository ); 322 323 /** 324 * Set a new list of remote repositories to use the execution request. This is necessary if you perform 325 * transformations on the remote repositories being used. For example if you replace existing repositories with 326 * mirrors then it's easier to just replace the whole list with a new list of transformed repositories. 327 * 328 * @param repositories 329 * @return This request, never {@code null}. 330 */ 331 MavenExecutionRequest setRemoteRepositories( List<ArtifactRepository> repositories ); 332 333 List<ArtifactRepository> getRemoteRepositories(); 334 335 MavenExecutionRequest setPluginArtifactRepositories( List<ArtifactRepository> repositories ); 336 337 List<ArtifactRepository> getPluginArtifactRepositories(); 338 339 MavenExecutionRequest setRepositoryCache( RepositoryCache repositoryCache ); 340 341 RepositoryCache getRepositoryCache(); 342 343 WorkspaceReader getWorkspaceReader(); 344 345 MavenExecutionRequest setWorkspaceReader( WorkspaceReader workspaceReader ); 346 347 File getUserToolchainsFile(); 348 349 MavenExecutionRequest setUserToolchainsFile( File userToolchainsFile ); 350 351 ExecutionListener getExecutionListener(); 352 353 MavenExecutionRequest setExecutionListener( ExecutionListener executionListener ); 354 355 ProjectBuildingRequest getProjectBuildingRequest(); 356 357 /** 358 * @since 3.1 359 */ 360 boolean isUseLegacyLocalRepository(); 361 362 /** 363 * @since 3.1 364 */ 365 MavenExecutionRequest setUseLegacyLocalRepository( boolean useLegacyLocalRepository ); 366 367 /** 368 * Controls the {@link Builder} used by Maven by specification of the builder's id. 369 * 370 * @since 3.2.0 371 */ 372 MavenExecutionRequest setBuilderId( String builderId ); 373 374 /** 375 * Controls the {@link Builder} used by Maven by specification of the builders id. 376 * 377 * @since 3.2.0 378 */ 379 String getBuilderId(); 380 381}