View Javadoc
1   package org.apache.maven.shared.invoker;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import java.io.File;
23  import java.io.InputStream;
24  import java.util.List;
25  import java.util.Map;
26  import java.util.Properties;
27  
28  /**
29   * Specifies the parameters used to control a Maven invocation.
30   *
31   */
32  public interface InvocationRequest
33  {
34  
35      /**
36       * By default, Maven is executed in batch mode. This mean no interaction with the Maven process can be done.
37       *
38       * @return <code>true</code> if Maven should be executed in batch mode, <code>false</code> if Maven is executed in
39       *         interactive mode.
40       * @since 3.0.0
41       */
42      boolean isBatchMode();
43  
44      /**
45       * Gets the network mode of the Maven invocation. By default, Maven is executed in online mode.
46       *
47       * @return <code>true</code> if Maven should be executed in offline mode, <code>false</code> if the online mode is
48       *         used.
49       */
50      boolean isOffline();
51  
52      /**
53       * Indicates whether Maven should enforce an update check for plugins and snapshots. By default, no update check is
54       * performed.
55       *
56       * @return <code>true</code> if plugins and snapshots should be updated, <code>false</code> otherwise.
57       */
58      boolean isUpdateSnapshots();
59  
60      /**
61       * Gets the recursion behavior of a reactor invocation. By default, Maven will recursive the build into sub modules.
62       *
63       * @return <code>true</code> if sub modules should be build, <code>false</code> otherwise.
64       */
65      boolean isRecursive();
66  
67      /**
68       * A list of specified reactor projects to build instead of all projects. A project can be specified by
69       * [groupId]:artifactId or by its relative path.
70       *
71       * @return the list of projects to add to reactor build, otherwise {@code null}
72       * @since 2.1
73       */
74      List<String> getProjects();
75  
76      /**
77       * Get the value of the {@code also-make} argument.
78       *
79       * @return {@code true} if the argument {@code also-make} was specified, otherwise {@code false}
80       * @since 2.1
81       */
82      boolean isAlsoMake();
83  
84      /**
85       * Get the value of the {@code also-make-dependents}
86       *
87       * @return {@code true} if the argument {@code also-make-dependents} was specified, otherwise {@code false}
88       * @since 2.1
89       */
90      boolean isAlsoMakeDependents();
91  
92      /**
93       * Get the value of {@code resume-from}
94       *
95       * @return specified reactor project to resume from
96       * @since 2.1
97       */
98      String getResumeFrom();
99  
100     /**
101      * Gets the debug mode of the Maven invocation. By default, Maven is executed in normal mode.
102      *
103      * @return <code>true</code> if Maven should be executed in debug mode, <code>false</code> if the normal mode should
104      *         be used.
105      */
106     boolean isDebug();
107 
108     /**
109      * Gets the exception output mode of the Maven invocation. By default, Maven will not print stack traces of build
110      * exceptions.
111      *
112      * @return <code>true</code> if Maven should print stack traces, <code>false</code> otherwise.
113      */
114     boolean isShowErrors();
115 
116     /**
117      * Indicates whether the environment variables of the current process should be propagated to the Maven invocation.
118      * By default, the current environment variables are inherited by the new Maven invocation.
119      *
120      * @return <code>true</code> if the environment variables should be propagated, <code>false</code> otherwise.
121      */
122     boolean isShellEnvironmentInherited();
123 
124     /**
125      * Indicates whether Maven should check for plugin updates. By default, plugin updates are not suppressed.
126      *
127      * @return <code>true</code> if plugin updates should be suppressed, <code>false</code> otherwise.
128      */
129     boolean isNonPluginUpdates();
130 
131     /**
132      * Gets the failure mode of the Maven invocation. By default, the mode {@link ReactorFailureBehavior#FailFast} is
133      * used.
134      *
135      * @return The failure mode, one of {@link ReactorFailureBehavior#FailFast},
136      *         {@link ReactorFailureBehavior#FailAtEnd} and {@link ReactorFailureBehavior#FailNever}.
137      * @since 3.0.0
138      */
139     ReactorFailureBehavior getReactorFailureBehavior();
140 
141     /**
142      * Gets the path to the base directory of the local repository to use for the Maven invocation.
143      *
144      * @param defaultDirectory The default location to use if no location is configured for this request, may be
145      *            <code>null</code>.
146      * @return The path to the base directory of the local repository or <code>null</code> to use the location from the
147      *         <code>settings.xml</code>.
148      */
149     File getLocalRepositoryDirectory( File defaultDirectory );
150 
151     /**
152      * Gets the input stream used to provide input for the invoked Maven build. This is in particular useful when
153      * invoking Maven in interactive mode.
154      *
155      * @param defaultStream the default {@link java.io.InputStream} to use
156      * @return The input stream used to provide input for the invoked Maven build or <code>null</code> if not set.
157      */
158     InputStream getInputStream( InputStream defaultStream );
159 
160     /**
161      * Gets the handler used to capture the standard output from the Maven build.
162      *
163      * @param defaultHandler the default {@link org.apache.maven.shared.invoker.InvocationOutputHandler} to use
164      * @return The output handler or <code>null</code> if not set.
165      */
166     InvocationOutputHandler getOutputHandler( InvocationOutputHandler defaultHandler );
167 
168     /**
169      * Gets the handler used to capture the error output from the Maven build.
170      *
171      * @param defaultHandler the default {@link org.apache.maven.shared.invoker.InvocationOutputHandler} to use
172      * @return The error handler or <code>null</code> if not set.
173      */
174     InvocationOutputHandler getErrorHandler( InvocationOutputHandler defaultHandler );
175 
176     /**
177      * Gets the path to the POM for the Maven invocation. If no base directory is set, the parent directory of this POM
178      * will be used as the working directory for the Maven invocation.
179      *
180      * @return The path to the POM for the Maven invocation or <code>null</code> if not set.
181      */
182     File getPomFile();
183 
184     /**
185      * Gets the (unqualified) filename of the POM for the Maven invocation. This setting is ignored if
186      * {@link #getPomFile()} does not return <code>null</code>. Otherwise, the base directory is assumed to contain a
187      * POM with this name. By default, a file named <code>pom.xml</code> is used.
188      *
189      * @return The (unqualified) filename of the POM for the Maven invocation or <code>null</code> if not set.
190      */
191     String getPomFileName();
192 
193     /**
194      * Gets the path to the base directory of the POM for the Maven invocation. If {@link #getPomFile()} does not return
195      * <code>null</code>, this setting only affects the working directory for the Maven invocation.
196      *
197      * @return The path to the base directory of the POM or <code>null</code> if not set.
198      */
199     File getBaseDirectory();
200 
201     /**
202      * Gets the path to the base directory of the POM for the Maven invocation. If {@link #getPomFile()} does not return
203      * <code>null</code>, this setting only affects the working directory for the Maven invocation.
204      *
205      * @param defaultDirectory The default base directory to use if none is configured for this request, may be
206      *            <code>null</code>.
207      * @return The path to the base directory of the POM or <code>null</code> if not set.
208      */
209     File getBaseDirectory( File defaultDirectory );
210 
211     /**
212      * Gets the path to the base directory of the Java installation used to run Maven.
213      *
214      * @return The path to the base directory of the Java installation used to run Maven or <code>null</code> to use the
215      *         default Java home.
216      */
217     File getJavaHome();
218 
219     /**
220      * Gets the system properties for the Maven invocation.
221      *
222      * @return The system properties for the Maven invocation or <code>null</code> if not set.
223      */
224     Properties getProperties();
225 
226     /**
227      * Gets the goals for the Maven invocation.
228      *
229      * @return The goals for the Maven invocation or <code>null</code> if not set.
230      */
231     List<String> getGoals();
232 
233     /**
234      * Gets the path to the user settings for the Maven invocation.
235      *
236      * @return The path to the user settings for the Maven invocation or <code>null</code> to load the user settings
237      *         from the default location.
238      */
239     File getUserSettingsFile();
240 
241     /**
242      * Gets the path to the global settings for the Maven invocation.
243      *
244      * @return The path to the global settings for the Maven invocation or <code>null</code> to load the global settings
245      *         from the default location.
246      * @since 2.1
247      */
248     File getGlobalSettingsFile();
249 
250     /**
251      * Gets the path to the custom toolchains file
252      *
253      * @return The path to the custom toolchains file or <code>null</code> to load the toolchains from the default
254      *         location
255      * @since 2.1
256      */
257     File getToolchainsFile();
258 
259     /**
260      * Alternate path for the global toolchains file <b>Note. This is available since Maven 3.3.1</b>
261      *
262      * @return The path to the custom global toolchains file or <code>null</code> to load the global toolchains from the
263      *         default location.
264      * @since 3.0.0
265      */
266     File getGlobalToolchainsFile();
267 
268     /**
269      * Gets the checksum mode of the Maven invocation.
270      *
271      * @return The checksum mode, one of {@link CheckSumPolicy#Warn} and {@link CheckSumPolicy#Fail}.
272      * @since 3.0.0
273      */
274     CheckSumPolicy getGlobalChecksumPolicy();
275 
276     /**
277      * Gets the profiles for the Maven invocation.
278      *
279      * @return The profiles for the Maven invocation or <code>null</code> if not set.
280      */
281     List<String> getProfiles();
282 
283     /**
284      * Gets the environment variables for the Maven invocation.
285      *
286      * @return The environment variables for the Maven invocation or <code>null</code> if not set.
287      */
288     Map<String, String> getShellEnvironments();
289 
290     /**
291      * Gets the value of the <code>MAVEN_OPTS</code> environment variable.
292      *
293      * @return The value of the <code>MAVEN_OPTS</code> environment variable or <code>null</code> if not set.
294      */
295     String getMavenOpts();
296 
297     /**
298      * The show version behavior (-V option)
299      *
300      * @return The show version behavior
301      * @since 2.0.11
302      */
303     boolean isShowVersion();
304 
305     /**
306      * Get the value of the {@code threads} argument.
307      *
308      * @return the value of the {@code threads} argument or {@code null} if not set
309      * @since 2.1
310      */
311     String getThreads();
312 
313     /**
314      * Gets the quiet mode of the Maven invocation. By default, Maven is executed in normal mode.
315      *
316      * @return <code>true</code> if Maven should be executed in quiet mode, <code>false</code> if normal mode should
317      *         be used.
318      * @since 3.1.0
319      */
320     boolean isQuiet();
321 
322     // ----------------------------------------------------------------------
323     // Reactor Failure Mode
324     // ----------------------------------------------------------------------
325 
326     /**
327      * The reactor failure behavior which to be used during Maven invocation.
328      */
329     enum ReactorFailureBehavior
330     {
331         /**
332          * Stop at first failure in reactor builds
333          */
334         FailFast( "ff", "fail-fast" ),
335         /**
336          * Only fail the build afterwards. allow all non-impacted builds to continue.
337          */
338         FailAtEnd( "fae", "fail-at-end" ),
339         /**
340          * <b>NEVER</b> fail the build, regardless of project result
341          */
342         FailNever( "fn", "fail-never" );
343 
344         private String shortOption;
345 
346         private String longOption;
347 
348         ReactorFailureBehavior( String shortOption, String longOption )
349         {
350             this.shortOption = shortOption;
351             this.longOption = longOption;
352         }
353 
354         public String getShortOption()
355         {
356             return this.shortOption;
357         }
358 
359         public String getLongOption()
360         {
361             return this.longOption;
362         }
363 
364         /**
365          * Returns the enumeration type which is related to the given long option.
366          * 
367          * @param longOption The type which is searched for.
368          * @return The appropriate {@link ReactorFailureBehavior}
369          * @throws IllegalArgumentException in case of an long option which does not exists.
370          */
371         public static ReactorFailureBehavior valueOfByLongOption( String longOption )
372         {
373             for ( ReactorFailureBehavior item : ReactorFailureBehavior.values() )
374             {
375                 if ( item.getLongOption().equals( longOption ) )
376                 {
377                     return item;
378                 }
379             }
380             throw new IllegalArgumentException( "The string '" + longOption
381                 + "' can not be converted to enumeration." );
382         }
383     }
384 
385     // ----------------------------------------------------------------------
386     // Artifact repository policies
387     // ----------------------------------------------------------------------
388 
389     /**
390      * The kind of checksum policy which should be used during Maven invocation.
391      */
392     enum CheckSumPolicy
393     {
394 
395         /**
396          * Strict checksum checking equivalent of {@code --strict-checksums}
397          */
398         Fail,
399         /**
400          * Warn checksum failures equivalent {@code --lax-checksums}.
401          */
402         Warn;
403 
404     }
405 
406     // ----------------------------------------------------------------------
407     //
408     // ----------------------------------------------------------------------
409 
410     /**
411      * Sets the interaction mode of the Maven invocation. Equivalent of {@code -B} and {@code --batch-mode}
412      *
413      * @param batchMode <code>true</code> if Maven should be executed in non-interactive mode, <code>false</code> if the
414      *            interactive modes is used.
415      * @return This invocation request.
416      * @since 3.0.0
417      */
418     InvocationRequest setBatchMode( boolean batchMode );
419 
420     /**
421      * Sets the network mode of the Maven invocation. Equivalent of {@code -o} and {@code --offline}
422      *
423      * @param offline <code>true</code> if Maven should be executed in offline mode, <code>false</code> if the online
424      *            mode is used.
425      * @return This invocation request.
426      */
427     InvocationRequest setOffline( boolean offline );
428 
429     /**
430      * Sets the debug mode of the Maven invocation. Equivalent of {@code -X} and {@code --debug}
431      *
432      * @param debug <code>true</code> if Maven should be executed in debug mode, <code>false</code> if the normal mode
433      *            should be used.
434      * @return This invocation request.
435      */
436     InvocationRequest setDebug( boolean debug );
437 
438     /**
439      * Sets the exception output mode of the Maven invocation. Equivalent of {@code -e} and {@code --errors}
440      *
441      * @param showErrors <code>true</code> if Maven should print stack traces, <code>false</code> otherwise.
442      * @return This invocation request.
443      */
444     InvocationRequest setShowErrors( boolean showErrors );
445 
446     /**
447      * Specifies whether Maven should enforce an update check for plugins and snapshots. Equivalent of {@code -U} and
448      * {@code --update-snapshots}
449      *
450      * @param updateSnapshots <code>true</code> if plugins and snapshots should be updated, <code>false</code>
451      *            otherwise.
452      * @return This invocation request.
453      */
454     InvocationRequest setUpdateSnapshots( boolean updateSnapshots );
455 
456     /**
457      * Sets the failure mode of the Maven invocation. Equivalent of {@code -ff} and {@code --fail-fast}, {@code -fae}
458      * and {@code --fail-at-end}, {@code -fn} and {@code --fail-never}
459      *
460      * @param failureBehavior The failure mode, must be one of {@link ReactorFailureBehavior#FailFast},
461      *            {@link ReactorFailureBehavior#FailAtEnd} and {@link ReactorFailureBehavior#FailNever}.
462      * @return This invocation request.
463      * @since 3.0.0
464      */
465     InvocationRequest setReactorFailureBehavior( ReactorFailureBehavior failureBehavior );
466 
467     /**
468      * Sets the path to the base directory of the local repository to use for the Maven invocation.
469      *
470      * @param localRepository The path to the base directory of the local repository, may be <code>null</code>.
471      * @return This invocation request.
472      */
473     InvocationRequest setLocalRepositoryDirectory( File localRepository );
474 
475     /**
476      * Sets the input stream used to provide input for the invoked Maven build. This is in particular useful when
477      * invoking Maven in interactive mode.
478      *
479      * @param inputStream The input stream used to provide input for the invoked Maven build, may be <code>null</code>
480      *            if not required.
481      * @return This invocation request.
482      */
483     InvocationRequest setInputStream( InputStream inputStream );
484 
485     /**
486      * Sets the handler used to capture the standard output from the Maven build.
487      *
488      * @param outputHandler The output handler, may be <code>null</code> if the output is not of interest.
489      * @return This invocation request.
490      */
491     InvocationRequest setOutputHandler( InvocationOutputHandler outputHandler );
492 
493     /**
494      * Sets the handler used to capture the error output from the Maven build.
495      *
496      * @param errorHandler The error handler, may be <code>null</code> if the output is not of interest.
497      * @return This invocation request.
498      */
499     InvocationRequest setErrorHandler( InvocationOutputHandler errorHandler );
500 
501     /**
502      * Sets the path to the POM for the Maven invocation. If no base directory is set, the parent directory of this POM
503      * will be used as the working directory for the Maven invocation.
504      *
505      * @param pomFile The path to the POM for the Maven invocation, may be <code>null</code> if not used.
506      * @return This invocation request.
507      */
508     InvocationRequest setPomFile( File pomFile );
509 
510     /**
511      * Sets the (unqualified) filename of the POM for the Maven invocation. This setting is ignored if
512      * {@link #getPomFile()} does not return <code>null</code>. Otherwise, the base directory is assumed to contain a
513      * POM with this name.
514      *
515      * @param pomFilename The (unqualified) filename of the POM for the Maven invocation, may be <code>null</code> if
516      *            not used.
517      * @return This invocation request.
518      */
519     InvocationRequest setPomFileName( String pomFilename );
520 
521     /**
522      * Sets the path to the base directory of the POM for the Maven invocation. If {@link #getPomFile()} does not return
523      * <code>null</code>, this setting only affects the working directory for the Maven invocation.
524      *
525      * @param basedir The path to the base directory of the POM, may be <code>null</code> if not used.
526      * @return This invocation request.
527      */
528     InvocationRequest setBaseDirectory( File basedir );
529 
530     /**
531      * Sets the path to the base directory of the Java installation used to run Maven.
532      *
533      * @param javaHome The path to the base directory of the Java installation used to run Maven, may be
534      *            <code>null</code> to use the default Java home.
535      * @return This invocation request.
536      */
537     InvocationRequest setJavaHome( File javaHome );
538 
539     /**
540      * Sets the system properties for the Maven invocation.
541      *
542      * @param properties The system properties for the Maven invocation, may be <code>null</code> if not set.
543      * @return This invocation request.
544      */
545     InvocationRequest setProperties( Properties properties );
546 
547     /**
548      * Sets the goals for the Maven invocation.
549      *
550      * @param goals The goals for the Maven invocation, may be <code>null</code> to execute the POMs default goal.
551      * @return This invocation request.
552      */
553     InvocationRequest setGoals( List<String> goals );
554 
555     /**
556      * Sets the profiles for the Maven invocation. Equivalent of {@code -P} and {@code --active-profiles}
557      *
558      * @param profiles The profiles for the Maven invocation, may be <code>null</code> to use the default profiles.
559      * @return This invocation request.
560      */
561     InvocationRequest setProfiles( List<String> profiles );
562 
563     /**
564      * Specifies whether the environment variables of the current process should be propagated to the Maven invocation.
565      *
566      * @param shellEnvironmentInherited <code>true</code> if the environment variables should be propagated,
567      *            <code>false</code> otherwise.
568      * @return This invocation request.
569      */
570     InvocationRequest setShellEnvironmentInherited( boolean shellEnvironmentInherited );
571 
572     /**
573      * Sets the path to the user settings for the Maven invocation. Equivalent of {@code -s} and {@code --settings}
574      *
575      * @param userSettings The path to the user settings for the Maven invocation, may be <code>null</code> to load the
576      *            user settings from the default location.
577      * @return This invocation request.
578      */
579     InvocationRequest setUserSettingsFile( File userSettings );
580 
581     /**
582      * Sets the path to the global settings for the Maven invocation. Equivalent of {@code -gs} and
583      * {@code --global-settings}
584      *
585      * @param globalSettings The path to the global settings for the Maven invocation, may be <code>null</code> to load
586      *            the global settings from the default location.
587      * @return This invocation request.
588      * @since 2.1
589      */
590     InvocationRequest setGlobalSettingsFile( File globalSettings );
591 
592     /**
593      * Sets the alternate path for the user toolchains file Equivalent of {@code -t} or {@code --toolchains}
594      *
595      * @param toolchains the alternate path for the user toolchains file
596      * @return This invocation request
597      * @since 2.1
598      */
599     InvocationRequest setToolchainsFile( File toolchains );
600 
601     /**
602      * Sets the alternate path for the global toolchains file Equivalent of {@code -gt} or {@code --global-toolchains}
603      *
604      * @param toolchains the alternate path for the global toolchains file
605      * @return This invocation request
606      * @since 3.0.0
607      */
608     InvocationRequest setGlobalToolchainsFile( File toolchains );
609 
610     /**
611      * Sets the checksum mode of the Maven invocation. Equivalent of {@code -c} or {@code --lax-checksums}, {@code -C}
612      * or {@code --strict-checksums}
613      *
614      * @param globalChecksumPolicy The checksum mode, must be one of {@link CheckSumPolicy#Warn} and
615      *            {@link CheckSumPolicy#Fail}.
616      * @return This invocation request.
617      * @since 3.0.0
618      */
619     InvocationRequest setGlobalChecksumPolicy( CheckSumPolicy globalChecksumPolicy );
620 
621     /**
622      * Specifies whether Maven should check for plugin updates.
623      * <p>
624      * Equivalent of {@code -npu} or {@code --no-plugin-updates}
625      * </p>
626      * <p>
627      * <strong>note: </strong>Ineffective with Maven3, only kept for backward compatibility
628      * </p>
629      *
630      * @param nonPluginUpdates <code>true</code> if plugin updates should be suppressed, <code>false</code> otherwise.
631      * @return This invocation request.
632      */
633     InvocationRequest setNonPluginUpdates( boolean nonPluginUpdates );
634 
635     /**
636      * Sets the recursion behavior of a reactor invocation. <em>Inverse</em> equivalent of {@code -N} and
637      * {@code --non-recursive}
638      *
639      * @param recursive <code>true</code> if sub modules should be build, <code>false</code> otherwise.
640      * @return This invocation request.
641      */
642     InvocationRequest setRecursive( boolean recursive );
643 
644     /**
645      * Adds the specified environment variable to the Maven invocation.
646      *
647      * @param name The name of the environment variable, must not be <code>null</code>.
648      * @param value The value of the environment variable, must not be <code>null</code>.
649      * @return This invocation request.
650      */
651     InvocationRequest addShellEnvironment( String name, String value );
652 
653     /**
654      * Sets the value of the <code>MAVEN_OPTS</code> environment variable.
655      *
656      * @param mavenOpts The value of the <code>MAVEN_OPTS</code> environment variable, may be <code>null</code> to use
657      *            the default options.
658      * @return This invocation request.
659      */
660     InvocationRequest setMavenOpts( String mavenOpts );
661 
662     /**
663      * enable displaying version without stopping the build Equivalent of {@code -V} or {@code --show-version}
664      *
665      * @param showVersion enable displaying version
666      * @return This invocation request.
667      * @since 2.0.11
668      */
669     InvocationRequest setShowVersion( boolean showVersion );
670 
671     /**
672      * Thread count, for instance 2.0C where C is core multiplied Equivalent of {@code -T} or {@code --threads}
673      * <p>
674      * <strong>note: </strong>available since Maven3
675      * </p>
676      *
677      * @param threads the threadcount
678      * @return This invocation request.
679      * @since 2.1
680      */
681     InvocationRequest setThreads( String threads );
682 
683     /**
684      * Sets the reactor project list. Equivalent of {@code -pl} or {@code --projects}
685      *
686      * @param projects the reactor project list
687      * @return This invocation request.
688      * @since 2.1
689      */
690     InvocationRequest setProjects( List<String> projects );
691 
692     /**
693      * Enable the 'also make' mode. Equivalent of {@code -am} or {@code --also-make}
694      *
695      * @param alsoMake enable 'also make' mode
696      * @return This invocation request.
697      * @since 2.1
698      */
699     InvocationRequest setAlsoMake( boolean alsoMake );
700 
701     /**
702      * Enable the 'also make dependents' mode. Equivalent of {@code -amd} or {@code --also-make-dependents}
703      *
704      * @param alsoMakeDependents enable 'also make' mode
705      * @return This invocation request.
706      * @since 2.1
707      */
708     InvocationRequest setAlsoMakeDependents( boolean alsoMakeDependents );
709 
710     /**
711      * Resume reactor from specified project. Equivalent of {@code -rf} or {@code --resume-from}
712      *
713      * @param resumeFrom set the project to resume from
714      * @return This invocation request
715      * @since 2.1
716      */
717     InvocationRequest setResumeFrom( String resumeFrom );
718 
719     /**
720      * The id of the build strategy to use. equivalent of {@code --builder id}. <b>Note. This is available since Maven
721      * 3.2.1</b>
722      *
723      * @param id The builder id.
724      * @return {@link InvocationRequest} FIXME: How to identify if this is a valid command line option?
725      * @since 3.0.0
726      */
727     InvocationRequest setBuilder( String id );
728 
729     /**
730      * Sets the quiet mode of the Maven invocation. Equivalent of {@code -q} and {@code --quiet}
731      *
732      * @param quiet <code>true</code> if Maven should be executed in quiet mode, <code>false</code> if the normal mode
733      *            should be used.
734      * @return This invocation request.
735      * @since 3.1.0
736      */
737     InvocationRequest setQuiet( boolean quiet );
738 
739     /**
740      * Get the current set builder strategy id equivalent of {@code --builder id}. <b>Note. This is available since
741      * Maven 3.2.1</b>
742      *
743      * @return The current set builder id.
744      * @since 3.0.0
745      */
746     String getBuilder();
747 
748     /** Constant <code>NO_TIMEOUT=0</code> */
749     int NO_TIMEOUT = 0;
750     /**
751      * <p>getTimeoutInSeconds.</p>
752      *
753      * @since 3.0.1
754      * @return the timeout in seconds to execute the project
755      */
756     int getTimeoutInSeconds();
757 
758     /**
759      * <p>setTimeoutInSeconds.</p>
760      *
761      * @since 3.0.1
762      * @param timeoutInSeconds the timeout in seconds to execute the project
763      */
764     void setTimeoutInSeconds( int timeoutInSeconds );
765 
766 }