org.apache.maven.shared.invoker.InvocationRequest Maven / Gradle / Ivy
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