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 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 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 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 // Reactor Failure Mode 315 // ---------------------------------------------------------------------- 316 317 /** 318 * The reactor failure behavior which to be used during Maven invocation. 319 */ 320 enum ReactorFailureBehavior 321 { 322 /** 323 * Stop at first failure in reactor builds 324 */ 325 FailFast( "ff", "fail-fast" ), 326 /** 327 * Only fail the build afterwards. allow all non-impacted builds to continue. 328 */ 329 FailAtEnd( "fae", "fail-at-end" ), 330 /** 331 * <b>NEVER</b> fail the build, regardless of project result 332 */ 333 FailNever( "fn", "fail-never" ); 334 335 private String shortOption; 336 337 private String longOption; 338 339 ReactorFailureBehavior( String shortOption, String longOption ) 340 { 341 this.shortOption = shortOption; 342 this.longOption = longOption; 343 } 344 345 public String getShortOption() 346 { 347 return this.shortOption; 348 } 349 350 public String getLongOption() 351 { 352 return this.longOption; 353 } 354 355 /** 356 * Returns the enumeration type which is related to the given long option. 357 * 358 * @param longOption The type which is searched for. 359 * @return The appropriate {@link ReactorFailureBehavior} 360 * @throws IllegalArgumentException in case of an long option which does not exists. 361 */ 362 public static ReactorFailureBehavior valueOfByLongOption( String longOption ) 363 { 364 for ( ReactorFailureBehavior item : ReactorFailureBehavior.values() ) 365 { 366 if ( item.getLongOption().equals( longOption ) ) 367 { 368 return item; 369 } 370 } 371 throw new IllegalArgumentException( "The string '" + longOption 372 + "' can not be converted to enumeration." ); 373 } 374 }; 375 376 // ---------------------------------------------------------------------- 377 // Artifact repository policies 378 // ---------------------------------------------------------------------- 379 380 /** 381 * The kind of checksum policy which should be used during Maven invocation. 382 */ 383 enum CheckSumPolicy 384 { 385 386 /** 387 * Strict checksum checking equivalent of {@code --strict-checksums} 388 */ 389 Fail, 390 /** 391 * Warn checksum failures equivalent {@code --lax-checksums}. 392 */ 393 Warn; 394 395 } 396 397 // ---------------------------------------------------------------------- 398 // 399 // ---------------------------------------------------------------------- 400 401 /** 402 * Sets the interaction mode of the Maven invocation. Equivalent of {@code -B} and {@code --batch-mode} 403 * 404 * @param batchMode <code>true</code> if Maven should be executed in non-interactive mode, <code>false</code> if the 405 * interactive modes is used. 406 * @return This invocation request. 407 * @since 3.0.0 408 */ 409 InvocationRequest setBatchMode( boolean batchMode ); 410 411 /** 412 * Sets the network mode of the Maven invocation. Equivalent of {@code -o} and {@code --offline} 413 * 414 * @param offline <code>true</code> if Maven should be executed in offline mode, <code>false</code> if the online 415 * mode is used. 416 * @return This invocation request. 417 */ 418 InvocationRequest setOffline( boolean offline ); 419 420 /** 421 * Sets the debug mode of the Maven invocation. Equivalent of {@code -X} and {@code --debug} 422 * 423 * @param debug <code>true</code> if Maven should be executed in debug mode, <code>false</code> if the normal mode 424 * should be used. 425 * @return This invocation request. 426 */ 427 InvocationRequest setDebug( boolean debug ); 428 429 /** 430 * Sets the exception output mode of the Maven invocation. Equivalent of {@code -e} and {@code --errors} 431 * 432 * @param showErrors <code>true</code> if Maven should print stack traces, <code>false</code> otherwise. 433 * @return This invocation request. 434 */ 435 InvocationRequest setShowErrors( boolean showErrors ); 436 437 /** 438 * Specifies whether Maven should enforce an update check for plugins and snapshots. Equivalent of {@code -U} and 439 * {@code --update-snapshots} 440 * 441 * @param updateSnapshots <code>true</code> if plugins and snapshots should be updated, <code>false</code> 442 * otherwise. 443 * @return This invocation request. 444 */ 445 InvocationRequest setUpdateSnapshots( boolean updateSnapshots ); 446 447 /** 448 * Sets the failure mode of the Maven invocation. Equivalent of {@code -ff} and {@code --fail-fast}, {@code -fae} 449 * and {@code --fail-at-end}, {@code -fn} and {@code --fail-never} 450 * 451 * @param failureBehavior The failure mode, must be one of {@link ReactorFailureBehavior#FailFast}, 452 * {@link ReactorFailureBehavior#FailAtEnd} and {@link ReactorFailureBehavior#FailNever}. 453 * @return This invocation request. 454 * @since 3.0.0 455 */ 456 InvocationRequest setReactorFailureBehavior( ReactorFailureBehavior failureBehavior ); 457 458 /** 459 * Sets the path to the base directory of the local repository to use for the Maven invocation. 460 * 461 * @param localRepository The path to the base directory of the local repository, may be <code>null</code>. 462 * @return This invocation request. 463 */ 464 InvocationRequest setLocalRepositoryDirectory( File localRepository ); 465 466 /** 467 * Sets the input stream used to provide input for the invoked Maven build. This is in particular useful when 468 * invoking Maven in interactive mode. 469 * 470 * @param inputStream The input stream used to provide input for the invoked Maven build, may be <code>null</code> 471 * if not required. 472 * @return This invocation request. 473 */ 474 InvocationRequest setInputStream( InputStream inputStream ); 475 476 /** 477 * Sets the handler used to capture the standard output from the Maven build. 478 * 479 * @param outputHandler The output handler, may be <code>null</code> if the output is not of interest. 480 * @return This invocation request. 481 */ 482 InvocationRequest setOutputHandler( InvocationOutputHandler outputHandler ); 483 484 /** 485 * Sets the handler used to capture the error output from the Maven build. 486 * 487 * @param errorHandler The error handler, may be <code>null</code> if the output is not of interest. 488 * @return This invocation request. 489 */ 490 InvocationRequest setErrorHandler( InvocationOutputHandler errorHandler ); 491 492 /** 493 * Sets the path to the POM for the Maven invocation. If no base directory is set, the parent directory of this POM 494 * will be used as the working directory for the Maven invocation. 495 * 496 * @param pomFile The path to the POM for the Maven invocation, may be <code>null</code> if not used. 497 * @return This invocation request. 498 */ 499 InvocationRequest setPomFile( File pomFile ); 500 501 /** 502 * Sets the (unqualified) filename of the POM for the Maven invocation. This setting is ignored if 503 * {@link #getPomFile()} does not return <code>null</code>. Otherwise, the base directory is assumed to contain a 504 * POM with this name. 505 * 506 * @param pomFilename The (unqualified) filename of the POM for the Maven invocation, may be <code>null</code> if 507 * not used. 508 * @return This invocation request. 509 */ 510 InvocationRequest setPomFileName( String pomFilename ); 511 512 /** 513 * Sets the path to the base directory of the POM for the Maven invocation. If {@link #getPomFile()} does not return 514 * <code>null</code>, this setting only affects the working directory for the Maven invocation. 515 * 516 * @param basedir The path to the base directory of the POM, may be <code>null</code> if not used. 517 * @return This invocation request. 518 */ 519 InvocationRequest setBaseDirectory( File basedir ); 520 521 /** 522 * Sets the path to the base directory of the Java installation used to run Maven. 523 * 524 * @param javaHome The path to the base directory of the Java installation used to run Maven, may be 525 * <code>null</code> to use the default Java home. 526 * @return This invocation request. 527 */ 528 InvocationRequest setJavaHome( File javaHome ); 529 530 /** 531 * Sets the system properties for the Maven invocation. 532 * 533 * @param properties The system properties for the Maven invocation, may be <code>null</code> if not set. 534 * @return This invocation request. 535 */ 536 InvocationRequest setProperties( Properties properties ); 537 538 /** 539 * Sets the goals for the Maven invocation. 540 * 541 * @param goals The goals for the Maven invocation, may be <code>null</code> to execute the POMs default goal. 542 * @return This invocation request. 543 */ 544 InvocationRequest setGoals( List<String> goals ); 545 546 /** 547 * Sets the profiles for the Maven invocation. Equivalent of {@code -P} and {@code --active-profiles} 548 * 549 * @param profiles The profiles for the Maven invocation, may be <code>null</code> to use the default profiles. 550 * @return This invocation request. 551 */ 552 InvocationRequest setProfiles( List<String> profiles ); 553 554 /** 555 * Specifies whether the environment variables of the current process should be propagated to the Maven invocation. 556 * 557 * @param shellEnvironmentInherited <code>true</code> if the environment variables should be propagated, 558 * <code>false</code> otherwise. 559 * @return This invocation request. 560 */ 561 InvocationRequest setShellEnvironmentInherited( boolean shellEnvironmentInherited ); 562 563 /** 564 * Sets the path to the user settings for the Maven invocation. Equivalent of {@code -s} and {@code --settings} 565 * 566 * @param userSettings The path to the user settings for the Maven invocation, may be <code>null</code> to load the 567 * user settings from the default location. 568 * @return This invocation request. 569 */ 570 InvocationRequest setUserSettingsFile( File userSettings ); 571 572 /** 573 * Sets the path to the global settings for the Maven invocation. Equivalent of {@code -gs} and 574 * {@code --global-settings} 575 * 576 * @param globalSettings The path to the global settings for the Maven invocation, may be <code>null</code> to load 577 * the global settings from the default location. 578 * @return This invocation request. 579 * @since 2.1 580 */ 581 InvocationRequest setGlobalSettingsFile( File globalSettings ); 582 583 /** 584 * Sets the alternate path for the user toolchains file Equivalent of {@code -t} or {@code --toolchains} 585 * 586 * @param toolchains the alternate path for the user toolchains file 587 * @return This invocation request 588 * @since 2.1 589 */ 590 InvocationRequest setToolchainsFile( File toolchains ); 591 592 /** 593 * Sets the alternate path for the global toolchains file Equivalent of {@code -gt} or {@code --global-toolchains} 594 * 595 * @param toolchains the alternate path for the global toolchains file 596 * @return This invocation request 597 * @since 3.0.0 598 */ 599 InvocationRequest setGlobalToolchainsFile( File toolchains ); 600 601 /** 602 * Sets the checksum mode of the Maven invocation. Equivalent of {@code -c} or {@code --lax-checksums}, {@code -C} 603 * or {@code --strict-checksums} 604 * 605 * @param globalChecksumPolicy The checksum mode, must be one of {@link CheckSumPolicy#Warn} and 606 * {@link CheckSumPolicy#Fail}. 607 * @return This invocation request. 608 * @since 3.0.0 609 */ 610 InvocationRequest setGlobalChecksumPolicy( CheckSumPolicy globalChecksumPolicy ); 611 612 /** 613 * Specifies whether Maven should check for plugin updates. 614 * <p> 615 * Equivalent of {@code -npu} or {@code --no-plugin-updates} 616 * </p> 617 * <p> 618 * <strong>note: </strong>Ineffective with Maven3, only kept for backward compatibility 619 * </p> 620 * 621 * @param nonPluginUpdates <code>true</code> if plugin updates should be suppressed, <code>false</code> otherwise. 622 * @return This invocation request. 623 */ 624 InvocationRequest setNonPluginUpdates( boolean nonPluginUpdates ); 625 626 /** 627 * Sets the recursion behavior of a reactor invocation. <em>Inverse</em> equivalent of {@code -N} and 628 * {@code --non-recursive} 629 * 630 * @param recursive <code>true</code> if sub modules should be build, <code>false</code> otherwise. 631 * @return This invocation request. 632 */ 633 InvocationRequest setRecursive( boolean recursive ); 634 635 /** 636 * Adds the specified environment variable to the Maven invocation. 637 * 638 * @param name The name of the environment variable, must not be <code>null</code>. 639 * @param value The value of the environment variable, must not be <code>null</code>. 640 * @return This invocation request. 641 */ 642 InvocationRequest addShellEnvironment( String name, String value ); 643 644 /** 645 * Sets the value of the <code>MAVEN_OPTS</code> environment variable. 646 * 647 * @param mavenOpts The value of the <code>MAVEN_OPTS</code> environment variable, may be <code>null</code> to use 648 * the default options. 649 * @return This invocation request. 650 */ 651 InvocationRequest setMavenOpts( String mavenOpts ); 652 653 /** 654 * enable displaying version without stopping the build Equivalent of {@code -V} or {@code --show-version} 655 * 656 * @param showVersion enable displaying version 657 * @return This invocation request. 658 * @since 2.0.11 659 */ 660 InvocationRequest setShowVersion( boolean showVersion ); 661 662 /** 663 * Thread count, for instance 2.0C where C is core multiplied Equivalent of {@code -T} or {@code --threads} 664 * <p> 665 * <strong>note: </strong>available since Maven3 666 * </p> 667 * 668 * @param threads the threadcount 669 * @return This invocation request. 670 * @since 2.1 671 */ 672 InvocationRequest setThreads( String threads ); 673 674 /** 675 * Sets the reactor project list. Equivalent of {@code -pl} or {@code --projects} 676 * 677 * @param projects the reactor project list 678 * @return This invocation request. 679 * @since 2.1 680 */ 681 InvocationRequest setProjects( List<String> projects ); 682 683 /** 684 * Enable the 'also make' mode. Equivalent of {@code -am} or {@code --also-make} 685 * 686 * @param alsoMake enable 'also make' mode 687 * @return This invocation request. 688 * @since 2.1 689 */ 690 InvocationRequest setAlsoMake( boolean alsoMake ); 691 692 /** 693 * Enable the 'also make dependents' mode. Equivalent of {@code -amd} or {@code --also-make-dependents} 694 * 695 * @param alsoMakeDependents enable 'also make' mode 696 * @return This invocation request. 697 * @since 2.1 698 */ 699 InvocationRequest setAlsoMakeDependents( boolean alsoMakeDependents ); 700 701 /** 702 * Resume reactor from specified project. Equivalent of {@code -rf} or {@code --resume-from} 703 * 704 * @param resumeFrom set the project to resume from 705 * @return This invocation request 706 * @since 2.1 707 */ 708 InvocationRequest setResumeFrom( String resumeFrom ); 709 710 /** 711 * The id of the build strategy to use. equivalent of {@code --builder id}. <b>Note. This is available since Maven 712 * 3.2.1</b> 713 * 714 * @param id The builder id. 715 * @return {@link InvocationRequest} FIXME: How to identify if this is a valid command line option? 716 * @since 3.0.0 717 */ 718 InvocationRequest setBuilder( String id ); 719 720 /** 721 * Get the current set builder strategy id equivalent of {@code --builder id}. <b>Note. This is available since 722 * Maven 3.2.1</b> 723 * 724 * @return The current set builder id. 725 * @since 3.0.0 726 */ 727 String getBuilder(); 728 729 int NO_TIMEOUT = 0; 730 /** 731 * @since 3.0.1 732 * @return the timeout in seconds to execute the project 733 */ 734 int getTimeoutInSeconds(); 735 736 /** 737 * @since 3.0.1 738 * @param timeoutInSeconds the timeout in seconds to execute the project 739 */ 740 void setTimeoutInSeconds( int timeoutInSeconds ); 741 742 }