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