All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.maven.shared.invoker.InvocationRequest Maven / Gradle / Ivy

There is a newer version: 3.3.0
Show newest version
package org.apache.maven.shared.invoker;

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

import java.io.File;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import java.util.Properties;

/**
 * Specifies the parameters used to control a Maven invocation.
 * 
 * @version $Id: InvocationRequest.java 1635406 2014-10-30 06:51:13Z hboutemy $
 */
public interface InvocationRequest
{

    // TODO: handle forced-reactor executions using -r/includes/excludes

    /**
     * Gets the interaction mode of the Maven invocation. By default, Maven is executed in batch mode.
     * 
     * @return true if Maven should be executed in interactive mode, false if the batch
     *         mode is used.
     */
    boolean isInteractive();

    /**
     * Gets the network mode of the Maven invocation. By default, Maven is executed in online mode.
     * 
     * @return true if Maven should be executed in offline mode, false if the online mode
     *         is used.
     */
    boolean isOffline();

    /**
     * Indicates whether Maven should enforce an update check for plugins and snapshots. By default, no update check is
     * performed.
     * 
     * @return true if plugins and snapshots should be updated, false otherwise.
     */
    boolean isUpdateSnapshots();

    /**
     * Gets the recursion behavior of a reactor invocation. By default, Maven will recursive the build into sub modules.
     * 
     * @return true if sub modules should be build, false otherwise.
     */
    boolean isRecursive();

    /**
     * Gets whether Maven should search subdirectories to build a dynamic reactor
     * @return true if we should search subdirectories, false otherwise
     */
    boolean isActivatedReactor();

    /**
     * Gets the list of subdirectory patterns to search
     * @return list of subdirectory patterns to search, or null in which case defaults should be used
     */
    String[] getActivatedReactorIncludes();

    /**
     * Gets the list of subdirectory patterns to exclude from search
     * 
     * @return list of subdirectory patterns to exclude search, or null in which case nothing should be
     *         excluded
     */
    String[] getActivatedReactorExcludes();

    /**
     * A list of specified reactor projects to build instead of all projects. 
     * A project can be specified by [groupId]:artifactId or by its relative path.
     * 
     * @return the list of projects to add to reactor build, otherwise {@code null}
     * @since 2.1
     */
    List getProjects();

    /**
     * Get the value of the {@code also-make} argument.
     * 
     * @return {@code true} if the argument {@code also-make} was specified, otherwise {@code false}
     * @since 2.1
     */
    boolean isAlsoMake();

    /**
     * Get the value of the {@code also-make-dependents}
     * 
     * @return {@code true} if the argument {@code also-make-dependents} was specified, otherwise {@code false}
     * @since 2.1
     */
    boolean isAlsoMakeDependents();

    /**
     * Get the value of {@code resume-from}
     * 
     * @return specified reactor project to resume from
     * @since 2.1
     */
    String getResumeFrom();

    /**
     * Gets the debug mode of the Maven invocation. By default, Maven is executed in normal mode.
     * 
     * @return true if Maven should be executed in debug mode, false if the normal mode
     *         should be used.
     */
    boolean isDebug();

    /**
     * Gets the exception output mode of the Maven invocation. By default, Maven will not print stack traces of build
     * exceptions.
     * 
     * @return true if Maven should print stack traces, false otherwise.
     */
    boolean isShowErrors();

    /**
     * Indicates whether the environment variables of the current process should be propagated to the Maven invocation.
     * By default, the current environment variables are inherited by the new Maven invocation.
     * 
     * @return true if the environment variables should be propagated, false otherwise.
     */
    boolean isShellEnvironmentInherited();

    /**
     * Indicates whether Maven should check for plugin updates. By default, plugin updates are not suppressed.
     * 
     * @return true if plugin updates should be suppressed, false otherwise.
     */
    boolean isNonPluginUpdates();

    /**
     * Gets the failure mode of the Maven invocation. By default, the mode {@link #REACTOR_FAIL_FAST} is used.
     * 
     * @return The failure mode, one of {@link #REACTOR_FAIL_FAST}, {@link #REACTOR_FAIL_AT_END} and
     *         {@link #REACTOR_FAIL_NEVER}.
     */
    String getFailureBehavior();

    /**
     * Gets the path to the base directory of the local repository to use for the Maven invocation.
     * 
     * @param defaultDirectory The default location to use if no location is configured for this request, may be
     *            null.
     * @return The path to the base directory of the local repository or null to use the location from
     *         the settings.xml.
     */
    File getLocalRepositoryDirectory( File defaultDirectory );

    /**
     * Gets the input stream used to provide input for the invoked Maven build. This is in particular useful when
     * invoking Maven in interactive mode.
     * 
     * @return The input stream used to provide input for the invoked Maven build or null if not set.
     */
    InputStream getInputStream( InputStream defaultStream );

    /**
     * Gets the handler used to capture the standard output from the Maven build.
     * 
     * @return The output handler or null if not set.
     */
    InvocationOutputHandler getOutputHandler( InvocationOutputHandler defaultHandler );

    /**
     * Gets the handler used to capture the error output from the Maven build.
     * 
     * @return The error handler or null if not set.
     */
    InvocationOutputHandler getErrorHandler( InvocationOutputHandler defaultHandler );

    /**
     * Gets the path to the POM for the Maven invocation. If no base directory is set, the parent directory of this POM
     * will be used as the working directory for the Maven invocation.
     * 
     * @return The path to the POM for the Maven invocation or null if not set.
     */
    File getPomFile();

    /**
     * Gets the (unqualified) filename of the POM for the Maven invocation. This setting is ignored if
     * {@link #getPomFile()} does not return null. Otherwise, the base directory is assumed to contain a
     * POM with this name. By default, a file named pom.xml is used.
     * 
     * @return The (unqualified) filename of the POM for the Maven invocation or null if not set.
     */
    String getPomFileName();

    /**
     * Gets the path to the base directory of the POM for the Maven invocation. If {@link #getPomFile()} does not return
     * null, this setting only affects the working directory for the Maven invocation.
     * 
     * @return The path to the base directory of the POM or null if not set.
     */
    File getBaseDirectory();

    /**
     * Gets the path to the base directory of the POM for the Maven invocation. If {@link #getPomFile()} does not return
     * null, this setting only affects the working directory for the Maven invocation.
     * 
     * @param defaultDirectory The default base directory to use if none is configured for this request, may be
     *            null.
     * @return The path to the base directory of the POM or null if not set.
     */
    File getBaseDirectory( File defaultDirectory );

    /**
     * Gets the path to the base directory of the Java installation used to run Maven.
     * 
     * @return The path to the base directory of the Java installation used to run Maven or null to use
     *         the default Java home.
     */
    File getJavaHome();

    /**
     * Gets the system properties for the Maven invocation.
     * 
     * @return The system properties for the Maven invocation or null if not set.
     */
    Properties getProperties();

    /**
     * Gets the goals for the Maven invocation.
     * 
     * @return The goals for the Maven invocation or null if not set.
     */
    List getGoals();

    /**
     * Gets the path to the user settings for the Maven invocation.
     * 
     * @return The path to the user settings for the Maven invocation or null to load the user settings
     *         from the default location.
     */
    File getUserSettingsFile();

    /**
     * Gets the path to the global settings for the Maven invocation.
     * 
     * @return The path to the global settings for the Maven invocation or null to load the global settings
     *         from the default location.
     * @since 2.1
     */
    File getGlobalSettingsFile();
    
    /**
     * Gets the path to the custom toolchains file
     * 
     * @return The path to the custom toolchains file or null to load the toolchains from the default
     *         location
     * @since 2.1
     */
    File getToolchainsFile();

    /**
     * Gets the checksum mode of the Maven invocation.
     * 
     * @return The checksum mode, one of {@link #CHECKSUM_POLICY_WARN} and {@link #CHECKSUM_POLICY_FAIL}.
     */
    String getGlobalChecksumPolicy();

    /**
     * Gets the profiles for the Maven invocation.
     * 
     * @return The profiles for the Maven invocation or null if not set.
     */
    List getProfiles();

    /**
     * Gets the environment variables for the Maven invocation.
     * 
     * @return The environment variables for the Maven invocation or null if not set.
     */
    Map getShellEnvironments();

    /**
     * Gets the value of the MAVEN_OPTS environment variable.
     * 
     * @return The value of the MAVEN_OPTS environment variable or null if not set.
     */
    String getMavenOpts();
    
    /**
     * The show version behaviour (-V option)
     * @return The show version behaviour 
     * @since 2.0.11
     */
    boolean isShowVersion();

    /**
     * Get the value of the {@code threads} argument.
     * 
     * @return the value of the {@code threads} argument or {@code null} if not set
     * @since 2.1
     */
    String getThreads();

    // ----------------------------------------------------------------------
    // Reactor Failure Mode
    // ----------------------------------------------------------------------

    /**
     * The failure mode "fail-fast" where the build is stopped by the first failure.
     */
    String REACTOR_FAIL_FAST = "fail-fast";

    /**
     * The failure mode "fail-at-end" where the build is only failed at its very end if necessary.
     */
    String REACTOR_FAIL_AT_END = "fail-at-end";

    /**
     * The failure mode "fail-never" in which Maven will always exit with code 0 regardless of build failures.
     */
    String REACTOR_FAIL_NEVER = "fail-never";

    // ----------------------------------------------------------------------
    // Artifact repository policies
    // ----------------------------------------------------------------------

    /**
     * The strict checksum policy which fails the build if a corrupt artifact is detected.
     */
    String CHECKSUM_POLICY_FAIL = "fail";

    /**
     * The lax checksum policy which only outputs a warning if a corrupt artifact is detected.
     */
    String CHECKSUM_POLICY_WARN = "warn";

    // ----------------------------------------------------------------------
    //
    // ----------------------------------------------------------------------

    /**
     * Sets the interaction mode of the Maven invocation.
     * Inverse equivalent of {@code -B} and {@code --batch-mode} 
     * 
     * @param interactive true if Maven should be executed in interactive mode, false if
     *            the batch mode is used.
     * @return This invocation request.
     */
    InvocationRequest setInteractive( boolean interactive );

    /**
     * Sets the network mode of the Maven invocation.
     * Equivalent of {@code -o} and {@code --offline}
     * 
     * @param offline true if Maven should be executed in offline mode, false if the
     *            online mode is used.
     * @return This invocation request.
     */
    InvocationRequest setOffline( boolean offline );

    /**
     * Sets the debug mode of the Maven invocation.
     * Equivalent of {@code -X} and {@code --debug}
     * 
     * @param debug true if Maven should be executed in debug mode, false if the normal
     *            mode should be used.
     * @return This invocation request.
     */
    InvocationRequest setDebug( boolean debug );

    /**
     * Sets the exception output mode of the Maven invocation.
     * Equivalent of {@code -e} and {@code --errors}
     * 
     * @param showErrors true if Maven should print stack traces, false otherwise.
     * @return This invocation request.
     */
    InvocationRequest setShowErrors( boolean showErrors );

    /**
     * Specifies whether Maven should enforce an update check for plugins and snapshots.
     * Equivalent of {@code -U} and {@code --update-snapshots}
     * 
     * @param updateSnapshots true if plugins and snapshots should be updated, false
     *            otherwise.
     * @return This invocation request.
     */
    InvocationRequest setUpdateSnapshots( boolean updateSnapshots );

    /**
     * Sets the failure mode of the Maven invocation. Equivalent of {@code -ff} and {@code --fail-fast}, {@code -fae}
     * and {@code --fail-at-end}, {@code -fn} and {@code --fail-never}
     * 
     * @param failureBehavior The failure mode, must be one of {@link #REACTOR_FAIL_FAST}, {@link #REACTOR_FAIL_AT_END}
     *            and {@link #REACTOR_FAIL_NEVER}.
     * @return This invocation request.
     */
    InvocationRequest setFailureBehavior( String failureBehavior );

    /**
     * Dynamically constructs a reactor using the subdirectories of the current directory
     * @param includes a list of filename patterns to include, or null, in which case the default is */pom.xml
     * @param excludes a list of filename patterns to exclude, or null, in which case nothing is excluded
     * @return This invocation request
     */
    InvocationRequest activateReactor( String[] includes, String[] excludes );

    /**
     * Sets the path to the base directory of the local repository to use for the Maven invocation.
     * 
     * @param localRepository The path to the base directory of the local repository, may be null.
     * @return This invocation request.
     */
    InvocationRequest setLocalRepositoryDirectory( File localRepository );

    /**
     * Sets the input stream used to provide input for the invoked Maven build. This is in particular useful when
     * invoking Maven in interactive mode.
     * 
     * @param inputStream The input stream used to provide input for the invoked Maven build, may be null
     *            if not required.
     * @return This invocation request.
     */
    InvocationRequest setInputStream( InputStream inputStream );

    /**
     * Sets the handler used to capture the standard output from the Maven build.
     * 
     * @param outputHandler The output handler, may be null if the output is not of interest.
     * @return This invocation request.
     */
    InvocationRequest setOutputHandler( InvocationOutputHandler outputHandler );

    /**
     * Sets the handler used to capture the error output from the Maven build.
     * 
     * @param errorHandler The error handler, may be null if the output is not of interest.
     * @return This invocation request.
     */
    InvocationRequest setErrorHandler( InvocationOutputHandler errorHandler );

    /**
     * Sets the path to the POM for the Maven invocation. If no base directory is set, the parent directory of this POM
     * will be used as the working directory for the Maven invocation.
     * 
     * @param pomFile The path to the POM for the Maven invocation, may be null if not used.
     * @return This invocation request.
     */
    InvocationRequest setPomFile( File pomFile );

    /**
     * Sets the (unqualified) filename of the POM for the Maven invocation. This setting is ignored if
     * {@link #getPomFile()} does not return null. Otherwise, the base directory is assumed to contain a
     * POM with this name.
     * 
     * @param pomFilename The (unqualified) filename of the POM for the Maven invocation, may be null if
     *            not used.
     * @return This invocation request.
     */
    InvocationRequest setPomFileName( String pomFilename );

    /**
     * Sets the path to the base directory of the POM for the Maven invocation. If {@link #getPomFile()} does not return
     * null, this setting only affects the working directory for the Maven invocation.
     * 
     * @param basedir The path to the base directory of the POM, may be null if not used.
     * @return This invocation request.
     */
    InvocationRequest setBaseDirectory( File basedir );

    /**
     * Sets the path to the base directory of the Java installation used to run Maven.
     * 
     * @param javaHome The path to the base directory of the Java installation used to run Maven, may be
     *            null to use the default Java home.
     * @return This invocation request.
     */
    InvocationRequest setJavaHome( File javaHome );

    /**
     * Sets the system properties for the Maven invocation.
     * 
     * @param properties The system properties for the Maven invocation, may be null if not set.
     * @return This invocation request.
     */
    InvocationRequest setProperties( Properties properties );

    /**
     * Sets the goals for the Maven invocation.
     * 
     * @param goals The goals for the Maven invocation, may be null to execute the POMs default goal.
     * @return This invocation request.
     */
    InvocationRequest setGoals( List goals );

    /**
     * Sets the profiles for the Maven invocation.
     * Equivalent of {@code -P} and {@code --active-profiles}
     * 
     * @param profiles The profiles for the Maven invocation, may be null to use the default profiles.
     * @return This invocation request.
     */
    InvocationRequest setProfiles( List profiles );

    /**
     * Specifies whether the environment variables of the current process should be propagated to the Maven invocation.
     * 
     * @param shellEnvironmentInherited true if the environment variables should be propagated,
     *            false otherwise.
     * @return This invocation request.
     */
    InvocationRequest setShellEnvironmentInherited( boolean shellEnvironmentInherited );

    /**
     * Sets the path to the user settings for the Maven invocation.
     * Equivalent of {@code -s} and {@code --settings}
     *  
     * @param userSettings The path to the user settings for the Maven invocation, may be null to load
     *            the user settings from the default location.
     * @return This invocation request.
     */
    InvocationRequest setUserSettingsFile( File userSettings );

    /**
     * Sets the path to the global settings for the Maven invocation.
     * Equivalent of {@code -gs} and {@code --global-settings}
     * 
     * @param globalSettings The path to the global settings for the Maven invocation, may be null to load
     *            the global settings from the default location.
     * @return This invocation request.
     * @since 2.1
     */
    InvocationRequest setGlobalSettingsFile( File globalSettings );

    /**
     * Sets the alternate path for the user toolchains file
     * Equivalent of {@code -t} or {@code --toolchains}
     * 

* note: available since Maven3 *

* * @param toolchains the alternate path for the user toolchains file * @return This invocation request * @since 2.1 */ InvocationRequest setToolchainsFile( File toolchains ); /** * Sets the checksum mode of the Maven invocation. * Equivalent of {@code -c} or {@code --lax-checksums}, {@code -C} or {@code --strict-checksums} * * @param globalChecksumPolicy The checksum mode, must be one of {@link #CHECKSUM_POLICY_WARN} and * {@link #CHECKSUM_POLICY_FAIL}. * @return This invocation request. */ InvocationRequest setGlobalChecksumPolicy( String globalChecksumPolicy ); /** * Specifies whether Maven should check for plugin updates. *

* Equivalent of {@code -npu} or {@code --no-plugin-updates}
* note: Ineffective with Maven3, only kept for backward compatibility *

* @param nonPluginUpdates true if plugin updates should be suppressed, false * otherwise. * @return This invocation request. */ InvocationRequest setNonPluginUpdates( boolean nonPluginUpdates ); /** * Sets the recursion behavior of a reactor invocation. * Inverse equivalent of {@code -N} and {@code --non-recursive} * * @param recursive true if sub modules should be build, false otherwise. * @return This invocation request. */ InvocationRequest setRecursive( boolean recursive ); /** * Adds the specified environment variable to the Maven invocation. * * @param name The name of the environment variable, must not be null. * @param value The value of the environment variable, must not be null. * @return This invocation request. */ InvocationRequest addShellEnvironment( String name, String value ); /** * Sets the value of the MAVEN_OPTS environment variable. * * @param mavenOpts The value of the MAVEN_OPTS environment variable, may be null to * use the default options. * @return This invocation request. */ InvocationRequest setMavenOpts( String mavenOpts ); /** * enable displaying version without stopping the build * Equivalent of {@code -V} or {@code --show-version} * * @param showVersion enable displaying version * @return This invocation request. * @since 2.0.11 */ InvocationRequest setShowVersion( boolean showVersion ); /** * Thread count, for instance 2.0C where C is core multiplied * Equivalent of {@code -T} or {@code --threads} *

* note: available since Maven3 *

* * @param threads the threadcount * @return This invocation request. * @since 2.1 */ InvocationRequest setThreads( String threads ); /** * Sets the reactor project list. * Equivalent of {@code -P} or {@code --projects} * * @param projects the reactor project list * @return This invocation request. * @since 2.1 */ InvocationRequest setProjects( List projects ); /** * Enable the 'also make' mode. * Equivalent of {@code -am} or {@code --also-make} * * @param alsoMake enable 'also make' mode * @return This invocation request. * @since 2.1 */ InvocationRequest setAlsoMake( boolean alsoMake ); /** * Enable the 'also make dependents' mode. Equivalent of {@code -amd} or {@code --also-make-dependents} * * @param alsoMakeDependents enable 'also make' mode * @return This invocation request. * @since 2.1 */ InvocationRequest setAlsoMakeDependents( boolean alsoMakeDependents ); /** * Resume reactor from specified project. * Equivalent of {@code -rf} or {@code --resume-from} * * @param resumeFrom set the project to resume from * @return This invocation request * @since 2.1 */ InvocationRequest setResumeFrom( String resumeFrom ); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy