# Class AbstractExecTask<T extends AbstractExecTask>

java.lang.Object
org.gradle.api.internal.AbstractTask
org.gradle.api.DefaultTask
org.gradle.api.internal.ConventionTask
org.gradle.api.tasks.AbstractExecTask<T>

Type Parameters:
  `T` - The concrete type of the class.

All Implemented Interfaces:
  `Comparable<Task>, org.gradle.api.internal.DynamicObjectAware, org.gradle.api.internal.IConventionAware, org.gradle.api.internal.TaskInternal, Named, ExtensionAware, Task, BaseExecSpec, ExecSpec, ProcessForkOptions, Configurable<Task>`

Direct Known Subclasses:
  `Exec, RunTestExecutable`

@DisableCachingByDefault(because="Abstract super-class, not to be instantiated directly") public abstract class AbstractExecTask<T extends AbstractExecTask> extends org.gradle.api.internal.ConventionTask implements ExecSpec
`AbstractExecTask` is the base class for all exec tasks.

Since:
  2.1

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from interface Named

  `Named.Namer`

- ## Field Summary

  ### Fields inherited from interface Task

  `TASK_ACTION, TASK_CONSTRUCTOR_ARGS, TASK_DEPENDS_ON, TASK_DESCRIPTION, TASK_GROUP, TASK_NAME, TASK_OVERWRITE, TASK_TYPE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractExecTask(Class<T> taskType)`
  Creates a new `AbstractExecTask`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `T`
  `args(Iterable<?> args)`
  Adds arguments for the command to be executed.
  `T`
  `args(Object... args)`
  Adds arguments for the command to be executed.
  `T`
  `commandLine(Iterable<?> args)`
  Sets the full command line, including the executable to be executed plus its arguments.
  `T`
  `commandLine(Object... arguments)`
  Sets the full command line, including the executable to be executed plus its arguments.
  `T`
  `copyTo(ProcessForkOptions target)`
  Copies these options to the given target options.
  `T`
  `environment(String name, Object value)`
  Adds an environment variable to the environment for this process.
  `T`
  `environment(Map<String,?> environmentVariables)`
  Adds some environment variables to the environment for this process.
  `protected void`
  `exec()`
  Exec.
  `T`
  `executable(Object executable)`
  Sets the name of the executable to use.
  `List<String>`
  `getArgs()`
  Returns the arguments for the command to be executed.
  `List<CommandLineArgumentProvider>`
  `getArgumentProviders()`
  Argument providers for the application.
  `List<String>`
  `getCommandLine()`
  Returns the full command line, including the executable plus its arguments.
  `Map<String,Object>`
  `getEnvironment()`
  The environment variables to use for the process.
  `OutputStream`
  `getErrorOutput()`
  Returns the output stream to consume standard error from the process executing the command.
  `protected abstract org.gradle.process.internal.ExecActionFactory`
  `getExecActionFactory()`
  `@Nullable String`
  `getExecutable()`
  Returns the name of the executable to use.
  `Provider<ExecResult>`
  `getExecutionResult()`
  Returns the result for the command run by this task.
  `protected abstract ObjectFactory`
  `getObjectFactory()`
  `InputStream`
  `getStandardInput()`
  Returns the standard input stream for the process executing the command.
  `OutputStream`
  `getStandardOutput()`
  Returns the output stream to consume standard output from the process executing the command.
  `File`
  `getWorkingDir()`
  Returns the working directory for the process.
  `DirectoryProperty`
  `getWorkingDirectory()`
  Returns the working directory for the process as a `DirectoryProperty`.
  `boolean`
  `isIgnoreExitValue()`
  Tells whether a non-zero exit value is ignored, or an exception thrown.
  `T`
  `setArgs(Iterable<?> arguments)`
  Sets the arguments for the command to be executed.
  `T`
  `setArgs(List<String> arguments)`
  Sets the arguments for the command to be executed.
  `void`
  `setCommandLine(Iterable<?> args)`
  Sets the full command line, including the executable to be executed plus its arguments.
  `void`
  `setCommandLine(Object... args)`
  Sets the full command line, including the executable to be executed plus its arguments.
  `void`
  `setCommandLine(List<String> args)`
  Sets the full command line, including the executable to be executed plus its arguments.
  `void`
  `setEnvironment(Map<String,?> environmentVariables)`
  Sets the environment variable to use for the process.
  `T`
  `setErrorOutput(OutputStream outputStream)`
  Sets the output stream to consume standard error from the process executing the command.
  `void`
  `setExecutable(@Nullable String executable)`
  Sets the name of the executable to use.
  `void`
  `setExecutable(Object executable)`
  Sets the name of the executable to use.
  `T`
  `setIgnoreExitValue(boolean ignoreExitValue)`
  Sets whether a non-zero exit value is ignored, or an exception thrown.
  `T`
  `setStandardInput(InputStream inputStream)`
  Sets the standard input stream for the process executing the command.
  `T`
  `setStandardOutput(OutputStream outputStream)`
  Sets the output stream to consume standard output from the process executing the command.
  `void`
  `setWorkingDir(File dir)`
  Sets the working directory for the process.
  `void`
  `setWorkingDir(Object dir)`
  Sets the working directory for the process.
  `T`
  `workingDir(Object dir)`
  Sets the working directory for the process.

  ### Methods inherited from class org.gradle.api.internal.ConventionTask

  `conventionMapping, conventionMapping, getConventionMapping`

  ### Methods inherited from class DefaultTask

  `compareTo, configure, dependsOn, doFirst, doFirst, doFirst, doLast, doLast, doLast, finalizedBy, getActions, getAnt, getDependsOn, getDescription, getDestroyables, getDidWork, getEnabled, getExtensions, getFinalizedBy, getGroup, getInputs, getLocalState, getLogger, getLogging, getMustRunAfter, getName, getOutputs, getPath, getProject, getShouldRunAfter, getState, getTaskDependencies, getTemporaryDir, getTimeout, hasProperty, mustRunAfter, onlyIf, onlyIf, onlyIf, property, setActions, setDependsOn, setDescription, setDidWork, setEnabled, setFinalizedBy, setGroup, setMustRunAfter, setOnlyIf, setOnlyIf, setOnlyIf, setProperty, setShouldRunAfter, shouldRunAfter, usesService`

  ### Methods inherited from class org.gradle.api.internal.AbstractTask

  `acceptServiceReferences, appendParallelSafeAction, doNotTrackState, doNotTrackStateIf, getAsDynamicObject, getIdentityPath, getImpliesSubProjects, getLifecycleDependencies, getLoggingManager, getOnlyIf, getReasonNotToTrackState, getReasonsNotToTrackState, getReasonTaskIsIncompatibleWithConfigurationCache, getRequiredServices, getServices, getSharedResources, getStandardOutputCapture, getTaskActions, getTaskIdentity, getTemporaryDirFactory, hasTaskActions, injectIntoNewInstance, isCompatibleWithConfigurationCache, isEnabled, isHasCustomActions, notCompatibleWithConfigurationCache, prependParallelSafeAction, restoreOnlyIf, restoreTaskActions, service, setImpliesSubProjects`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface Task

  `doNotTrackState, notCompatibleWithConfigurationCache, service`

- ## Constructor Details

  - ### AbstractExecTask

    public AbstractExecTask(Class<T> taskType)
    Creates a new `AbstractExecTask`.
    Since:
      2.1

- ## Method Details

  - ### getObjectFactory

    @Inject protected abstract ObjectFactory getObjectFactory()

  - ### getExecActionFactory

    @Inject protected abstract org.gradle.process.internal.ExecActionFactory getExecActionFactory()

  - ### exec

    protected void exec()
    Exec.
    Since:
      2.1

  - ### commandLine

    public T commandLine(Object... arguments)
    Sets the full command line, including the executable to be executed plus its arguments.
    Specified by:
      `commandLine` in interface `ExecSpec`
    Parameters:
      `arguments` - the command plus the args to be executed
    Returns:
      this

  - ### commandLine

    public T commandLine(Iterable<?> args)
    Sets the full command line, including the executable to be executed plus its arguments.
    Specified by:
      `commandLine` in interface `ExecSpec`
    Parameters:
      `args` - the command plus the args to be executed
    Returns:
      this

  - ### args

    public T args(Object... args)
    Adds arguments for the command to be executed.
    Specified by:
      `args` in interface `ExecSpec`
    Parameters:
      `args` - args for the command
    Returns:
      this

  - ### args

    public T args(Iterable<?> args)
    Adds arguments for the command to be executed.
    Specified by:
      `args` in interface `ExecSpec`
    Parameters:
      `args` - args for the command
    Returns:
      this

  - ### setArgs

    public T setArgs(List<String> arguments)
    Sets the arguments for the command to be executed.
    Specified by:
      `setArgs` in interface `ExecSpec`
    Parameters:
      `arguments` - args for the command
    Returns:
      this

  - ### setArgs

    public T setArgs(Iterable<?> arguments)
    Sets the arguments for the command to be executed.
    Specified by:
      `setArgs` in interface `ExecSpec`
    Parameters:
      `arguments` - args for the command
    Returns:
      this

  - ### getArgs

    @Optional @Input public List<String> getArgs()
    Returns the arguments for the command to be executed. Defaults to an empty list.
    Specified by:
      `getArgs` in interface `ExecSpec`

  - ### getArgumentProviders

    public List<CommandLineArgumentProvider> getArgumentProviders()
    Argument providers for the application.
    Specified by:
      `getArgumentProviders` in interface `ExecSpec`

  - ### getCommandLine

    @Internal public List<String> getCommandLine()
    Returns the full command line, including the executable plus its arguments.
    Specified by:
      `getCommandLine` in interface `BaseExecSpec`
    Returns:
      The full command line, including the executable plus its arguments

  - ### setCommandLine

    public void setCommandLine(List<String> args)
    Sets the full command line, including the executable to be executed plus its arguments.
    Specified by:
      `setCommandLine` in interface `ExecSpec`
    Parameters:
      `args` - the command plus the args to be executed

  - ### setCommandLine

    public void setCommandLine(Iterable<?> args)
    Sets the full command line, including the executable to be executed plus its arguments.
    Specified by:
      `setCommandLine` in interface `ExecSpec`
    Parameters:
      `args` - the command plus the args to be executed

  - ### setCommandLine

    public void setCommandLine(Object... args)
    Sets the full command line, including the executable to be executed plus its arguments.
    Specified by:
      `setCommandLine` in interface `ExecSpec`
    Parameters:
      `args` - the command plus the args to be executed

  - ### getExecutable

    @Optional @Input public @Nullable String getExecutable()
    Returns the name of the executable to use.
    Specified by:
      `getExecutable` in interface `ProcessForkOptions`
    Returns:
      The executable.

  - ### setExecutable

    public void setExecutable(@Nullable String executable)
    Sets the name of the executable to use.
    Specified by:
      `setExecutable` in interface `ProcessForkOptions`
    Parameters:
      `executable` - The executable. Must not be null.

  - ### setExecutable

    public void setExecutable(Object executable)
    Sets the name of the executable to use.
    Specified by:
      `setExecutable` in interface `ProcessForkOptions`
    Parameters:
      `executable` - The executable. Must not be null.

  - ### executable

    public T executable(Object executable)
    Sets the name of the executable to use.
    Specified by:
      `executable` in interface `ProcessForkOptions`
    Parameters:
      `executable` - The executable. Must not be null.
    Returns:
      this

  - ### getWorkingDirectory

    @Internal public DirectoryProperty getWorkingDirectory()
    Returns the working directory for the process as a `DirectoryProperty`. Defaults to the project directory.
    Specified by:
      `getWorkingDirectory` in interface `ProcessForkOptions`
    Returns:
      The working directory property. Must not be unset.

  - ### getWorkingDir

    @Internal public File getWorkingDir()
    Returns the working directory for the process. Defaults to the project directory.
    Specified by:
      `getWorkingDir` in interface `ProcessForkOptions`
    Returns:
      The working directory. Never returns null.

  - ### setWorkingDir

    public void setWorkingDir(File dir)
    Sets the working directory for the process.
    Specified by:
      `setWorkingDir` in interface `ProcessForkOptions`
    Parameters:
      `dir` - The working directory. Must not be null.

  - ### setWorkingDir

    public void setWorkingDir(Object dir)
    Sets the working directory for the process. The supplied argument is evaluated as per `Project.file(Object)`.
    Specified by:
      `setWorkingDir` in interface `ProcessForkOptions`
    Parameters:
      `dir` - The working directory. Must not be null.

  - ### workingDir

    public T workingDir(Object dir)
    Sets the working directory for the process. The supplied argument is evaluated as per `Project.file(Object)`.
    Specified by:
      `workingDir` in interface `ProcessForkOptions`
    Parameters:
      `dir` - The working directory. Must not be null.
    Returns:
      this

  - ### getEnvironment

    @Internal public Map<String,Object> getEnvironment()
    The environment variables to use for the process. Defaults to the environment of this process.
    Specified by:
      `getEnvironment` in interface `ProcessForkOptions`
    Returns:
      The environment. Returns an empty map when there are no environment variables.

  - ### setEnvironment

    public void setEnvironment(Map<String,?> environmentVariables)
    Sets the environment variable to use for the process.
    Specified by:
      `setEnvironment` in interface `ProcessForkOptions`
    Parameters:
      `environmentVariables` - The environment variables. Must not be null.

  - ### environment

    public T environment(String name, Object value)
    Adds an environment variable to the environment for this process.
    Specified by:
      `environment` in interface `ProcessForkOptions`
    Parameters:
      `name` - The name of the variable.
      `value` - The value for the variable. Must not be null.
    Returns:
      this

  - ### environment

    public T environment(Map<String,?> environmentVariables)
    Adds some environment variables to the environment for this process.
    Specified by:
      `environment` in interface `ProcessForkOptions`
    Parameters:
      `environmentVariables` - The environment variables. Must not be null.
    Returns:
      this

  - ### copyTo

    public T copyTo(ProcessForkOptions target)
    Copies these options to the given target options.
    Specified by:
      `copyTo` in interface `ProcessForkOptions`
    Parameters:
      `target` - The target options
    Returns:
      this

  - ### setStandardInput

    public T setStandardInput(InputStream inputStream)
    Sets the standard input stream for the process executing the command. The stream is closed after the process completes.
    Specified by:
      `setStandardInput` in interface `BaseExecSpec`
    Parameters:
      `inputStream` - The standard input stream for the process. Must not be null.
    Returns:
      this

  - ### getStandardInput

    @Internal public InputStream getStandardInput()
    Returns the standard input stream for the process executing the command. The stream is closed after the process completes. Defaults to an empty stream.
    Specified by:
      `getStandardInput` in interface `BaseExecSpec`
    Returns:
      The standard input stream.

  - ### setStandardOutput

    public T setStandardOutput(OutputStream outputStream)
    Sets the output stream to consume standard output from the process executing the command. The stream is closed after the process completes.
    Specified by:
      `setStandardOutput` in interface `BaseExecSpec`
    Parameters:
      `outputStream` - The standard output stream for the process. Must not be null.
    Returns:
      this

  - ### getStandardOutput

    @Internal public OutputStream getStandardOutput()
    Returns the output stream to consume standard output from the process executing the command. Defaults to `System.out`.
    Specified by:
      `getStandardOutput` in interface `BaseExecSpec`
    Returns:
      The output stream

  - ### setErrorOutput

    public T setErrorOutput(OutputStream outputStream)
    Sets the output stream to consume standard error from the process executing the command. The stream is closed after the process completes.
    Specified by:
      `setErrorOutput` in interface `BaseExecSpec`
    Parameters:
      `outputStream` - The standard output error stream for the process. Must not be null.
    Returns:
      this

  - ### getErrorOutput

    @Internal public OutputStream getErrorOutput()
    Returns the output stream to consume standard error from the process executing the command. Default to `System.err`.
    Specified by:
      `getErrorOutput` in interface `BaseExecSpec`
    Returns:
      The error output stream.

  - ### setIgnoreExitValue

    public T setIgnoreExitValue(boolean ignoreExitValue)
    Sets whether a non-zero exit value is ignored, or an exception thrown.
    Specified by:
      `setIgnoreExitValue` in interface `BaseExecSpec`
    Parameters:
      `ignoreExitValue` - whether a non-zero exit value is ignored, or an exception thrown
    Returns:
      this

  - ### isIgnoreExitValue

    @Input public boolean isIgnoreExitValue()
    Tells whether a non-zero exit value is ignored, or an exception thrown. Defaults to `false`.
    Specified by:
      `isIgnoreExitValue` in interface `BaseExecSpec`
    Returns:
      whether a non-zero exit value is ignored, or an exception thrown

  - ### getExecutionResult

    @Internal public Provider<ExecResult> getExecutionResult()
    Returns the result for the command run by this task. The provider has no value if this task has not been executed yet.
    Returns:
      A provider of the result.
    Since:
      6.1