# Exec

API Documentation: | `Exec`

Executes a command line process. Example:

    task stopTomcat(type:Exec) {
      workingDir '../tomcat/bin'

      //on windows:
      commandLine 'cmd', '/c', 'stop.bat'

      //on linux
      commandLine './stop.sh'

      //store the output instead of printing to the console:
      standardOutput = new ByteArrayOutputStream()

      //extension method stopTomcat.output() can be used to obtain the output:
      ext.output = {
        return standardOutput.toString()
      }
    }

### Properties

Property | Description
`args` | The arguments for the command to be executed. Defaults to an empty list.
`argumentProviders` | Argument providers for the application.
`commandLine` | The full command line, including the executable plus its arguments.
`environment` | The environment variables to use for the process. Defaults to the environment of this process.
`errorOutput` | The output stream to consume standard error from the process executing the command. Default to `System.err`.
`executable` | The name of the executable to use.
`executionResult` | The result for the command run by this task. The provider has no value if this task has not been executed yet.
`ignoreExitValue` | Tells whether a non-zero exit value is ignored, or an exception thrown. Defaults to `false`.
`standardInput` | The standard input stream for the process executing the command. The stream is closed after the process completes. Defaults to an empty stream.
`standardOutput` | The output stream to consume standard output from the process executing the command. Defaults to `System.out`.
`workingDir` | The working directory for the process. Defaults to the project directory.

### Methods

Method | Description
`args(args)` | Adds arguments for the command to be executed.
`args(args)` | Adds arguments for the command to be executed.
`commandLine(args)` | Sets the full command line, including the executable to be executed plus its arguments.
`commandLine(arguments)` | Sets the full command line, including the executable to be executed plus its arguments.
`environment(name, value)` | Adds an environment variable to the environment for this process.
`environment(environmentVariables)` | Adds some environment variables to the environment for this process.
`executable(executable)` | Sets the name of the executable to use.
`workingDir(dir)` | Sets the working directory for the process. The supplied argument is evaluated as per `Project.file(java.lang.Object)`.

### Script blocks

No script blocks

### Property details

#### ``List`<`String`>` `args`

The arguments for the command to be executed. Defaults to an empty list.

#### ``List`<`CommandLineArgumentProvider`>` `argumentProviders` (read-only)

Argument providers for the application.

#### ``List`<`String`>` `commandLine`

The full command line, including the executable plus its arguments.

#### ``Map`<`String`, `Object`>` `environment`

The environment variables to use for the process. Defaults to the environment of this process.

#### `OutputStream` `errorOutput`

The output stream to consume standard error from the process executing the command. Default to `System.err`.

#### `String` `executable`

The name of the executable to use.

#### ``Provider`<`ExecResult`>` `executionResult`

The result for the command run by this task. The provider has no value if this task has not been executed yet.

#### `boolean` `ignoreExitValue`

Tells whether a non-zero exit value is ignored, or an exception thrown. Defaults to `false`.

#### `InputStream` `standardInput`

The standard input stream for the process executing the command. The stream is closed after the process completes. Defaults to an empty stream.

#### `OutputStream` `standardOutput`

The output stream to consume standard output from the process executing the command. Defaults to `System.out`.

#### `File` `workingDir`

The working directory for the process. Defaults to the project directory.

### Method details

#### `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` `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.

#### `T` `executable`(`Object` executable)

Sets the name of the executable to use.

#### `T` `workingDir`(`Object` dir)

Sets the working directory for the process. The supplied argument is evaluated as per `Project.file(java.lang.Object)`.