# ProviderFactory

API Documentation: | `ProviderFactory`

A factory for creating instances of `Provider`.

An instance of the factory can be injected into a task, plugin or other object by annotating a public constructor or property getter method with `javax.inject.Inject`. It is also available via `Project.getProviders()` and `Settings.getProviders()`.

### Properties

No properties

### Methods

Method | Description
`credentials(credentialsType, identity)` | Creates a `Provider` for the given `Credentials` type.
`credentials(credentialsType, identity)` | Creates a `Provider` for the given `Credentials` type.
`environmentVariable(variableName)` | Creates a `Provider` whose value is fetched from the environment variable with the given name.
`environmentVariable(variableName)` | Creates a `Provider` whose value is fetched from the environment variable with the given name.
`environmentVariablesPrefixedBy(variableNamePrefix)` | Incubating Creates a `Provider` whose value is a name-to-value map of the environment variables with the names starting with the given prefix. The prefix comparison is case-sensitive. The returned map is immutable.
`environmentVariablesPrefixedBy(variableNamePrefix)` | Incubating Creates a `Provider` whose value is a name-to-value map of the environment variables with the names starting with the given prefix. The prefix comparison is case-sensitive. The returned map is immutable.
`exec(action)` | Incubating Allows lazy access to the output of the external process. When the process output is read at configuration time it is considered as an input to the configuration model. Consequent builds will re-execute the process to obtain the output and check if the cached model is still up-to-date. The process input and output streams cannot be configured.
`fileContents(file)` | Allows lazy access to the contents of the given file. When the file contents are read at configuration time the file is automatically considered as an input to the configuration model.
`fileContents(file)` | Allows lazy access to the contents of the given file. When the file contents are read at configuration time the file is automatically considered as an input to the configuration model.
`gradlePropertiesPrefixedBy(variableNamePrefix)` | Incubating Creates a `Provider` whose value is a name-to-value map of the Gradle properties with the names starting with the given prefix. The prefix comparison is case-sensitive. The returned map is immutable.
`gradlePropertiesPrefixedBy(variableNamePrefix)` | Incubating Creates a `Provider` whose value is a name-to-value map of the Gradle properties with the names starting with the given prefix. The prefix comparison is case-sensitive. The returned map is immutable.
`gradleProperty(propertyName)` | Creates a `Provider` whose value is fetched from the Gradle property of the given name.
`gradleProperty(propertyName)` | Creates a `Provider` whose value is fetched from the Gradle property of the given name.
`javaexec(action)` | Incubating Allows lazy access to the output of the external java process. When the process output is read at configuration time it is considered as an input to the configuration model. Consequent builds will re-execute the process to obtain the output and check if the cached model is still up-to-date. The process input and output streams cannot be configured.
`of(valueSourceType, configuration)` | Creates a `Provider` whose value is obtained from the given `ValueSource`.
`provider(value)` | Creates a `Provider` whose value is calculated using the given `Callable`.
`systemPropertiesPrefixedBy(variableNamePrefix)` | Incubating Creates a `Provider` whose value is a name-to-value map of the system properties with the names starting with the given prefix. The prefix comparison is case-sensitive. The returned map is immutable.
`systemPropertiesPrefixedBy(variableNamePrefix)` | Incubating Creates a `Provider` whose value is a name-to-value map of the system properties with the names starting with the given prefix. The prefix comparison is case-sensitive. The returned map is immutable.
`systemProperty(propertyName)` | Creates a `Provider` whose value is fetched from system properties using the given property name.
`systemProperty(propertyName)` | Creates a `Provider` whose value is fetched from system properties using the given property name.
`zip(first, second, combiner)` | Returns a provider which value will be computed by combining a provider value with another provider value using the supplied combiner function.

### Script blocks

No script blocks

### Method details

#### ``Provider`<`T`>` `credentials`(``Class`<`T`>` credentialsType, `String` identity)

Creates a `Provider` for the given `Credentials` type.

The provider returned by this method should be attached to a task's input property. This way, the presence of credentials will be validated before any of the tasks are executed if and only if the task with credentials property is to be executed.

Values for the requested Credentials type will be sourced from the project's properties using the pattern "identity" + credentials field. For example, `PasswordCredentials` provider with identity "myService" will look for properties named "myServiceUsername" and "myServicePassword".

The following credential types are currently supported:

- `PasswordCredentials`
- `AwsCredentials`

#### ``Provider`<`T`>` `credentials`(``Class`<`T`>` credentialsType, ``Provider`<`String`>` identity)

Creates a `Provider` for the given `Credentials` type.

The provider returned by this method should be attached to a task's input property. This way, the presence of credentials will be validated before any of the tasks are executed if and only if the task with credentials property is to be executed.

Values for the requested Credentials type will be sourced from the project's properties using the pattern "identity" + credentials field. For example, `PasswordCredentials` provider with identity "myService" will look for properties named "myServiceUsername" and "myServicePassword".

The following credential types are currently supported:

- `PasswordCredentials`
- `AwsCredentials`

#### ``Provider`<`String`>` `environmentVariable`(`String` variableName)

Creates a `Provider` whose value is fetched from the environment variable with the given name.

#### ``Provider`<`String`>` `environmentVariable`(``Provider`<`String`>` variableName)

Creates a `Provider` whose value is fetched from the environment variable with the given name.

#### ``Provider`<`Map`<`String`, `String`>>` `environmentVariablesPrefixedBy`(`String` variableNamePrefix)

Note: This method is incubating and may change in a future version of Gradle.

Creates a `Provider` whose value is a name-to-value map of the environment variables with the names starting with the given prefix. The prefix comparison is case-sensitive. The returned map is immutable.

#### ``Provider`<`Map`<`String`, `String`>>` `environmentVariablesPrefixedBy`(``Provider`<`String`>` variableNamePrefix)

Note: This method is incubating and may change in a future version of Gradle.

Creates a `Provider` whose value is a name-to-value map of the environment variables with the names starting with the given prefix. The prefix comparison is case-sensitive. The returned map is immutable.

#### `ExecOutput` `exec`(``Action`<? super `ExecSpec`>` action)

Note: This method is incubating and may change in a future version of Gradle.

Allows lazy access to the output of the external process. When the process output is read at configuration time it is considered as an input to the configuration model. Consequent builds will re-execute the process to obtain the output and check if the cached model is still up-to-date. The process input and output streams cannot be configured.

#### `FileContents` `fileContents`(`RegularFile` file)

Allows lazy access to the contents of the given file. When the file contents are read at configuration time the file is automatically considered as an input to the configuration model.

#### `FileContents` `fileContents`(``Provider`<`RegularFile`>` file)

Allows lazy access to the contents of the given file. When the file contents are read at configuration time the file is automatically considered as an input to the configuration model.

#### ``Provider`<`Map`<`String`, `String`>>` `gradlePropertiesPrefixedBy`(`String` variableNamePrefix)

Note: This method is incubating and may change in a future version of Gradle.

Creates a `Provider` whose value is a name-to-value map of the Gradle properties with the names starting with the given prefix. The prefix comparison is case-sensitive. The returned map is immutable.

#### ``Provider`<`Map`<`String`, `String`>>` `gradlePropertiesPrefixedBy`(``Provider`<`String`>` variableNamePrefix)

Note: This method is incubating and may change in a future version of Gradle.

Creates a `Provider` whose value is a name-to-value map of the Gradle properties with the names starting with the given prefix. The prefix comparison is case-sensitive. The returned map is immutable.

#### ``Provider`<`String`>` `gradleProperty`(`String` propertyName)

Creates a `Provider` whose value is fetched from the Gradle property of the given name.

#### ``Provider`<`String`>` `gradleProperty`(``Provider`<`String`>` propertyName)

Creates a `Provider` whose value is fetched from the Gradle property of the given name.

#### `ExecOutput` `javaexec`(``Action`<? super `JavaExecSpec`>` action)

Note: This method is incubating and may change in a future version of Gradle.

Allows lazy access to the output of the external java process. When the process output is read at configuration time it is considered as an input to the configuration model. Consequent builds will re-execute the process to obtain the output and check if the cached model is still up-to-date. The process input and output streams cannot be configured.

#### ``Provider`<`T`>` `of`(``Class`<? extends `ValueSource`<`T`, `P`>>` valueSourceType, ``Action`<? super `ValueSourceSpec`<`P`>>` configuration)

Creates a `Provider` whose value is obtained from the given `ValueSource`.

#### ``Provider`<`T`>` `provider`(``Callable`<? extends `T`>` value)

Creates a `Provider` whose value is calculated using the given `Callable`.

The provider is live and will call the `Callable` each time its value is queried. The `Callable` may return `null`, in which case the provider is considered to have no value.

#### ``Provider`<`Map`<`String`, `String`>>` `systemPropertiesPrefixedBy`(`String` variableNamePrefix)

Note: This method is incubating and may change in a future version of Gradle.

Creates a `Provider` whose value is a name-to-value map of the system properties with the names starting with the given prefix. The prefix comparison is case-sensitive. The returned map is immutable.

#### ``Provider`<`Map`<`String`, `String`>>` `systemPropertiesPrefixedBy`(``Provider`<`String`>` variableNamePrefix)

Note: This method is incubating and may change in a future version of Gradle.

Creates a `Provider` whose value is a name-to-value map of the system properties with the names starting with the given prefix. The prefix comparison is case-sensitive. The returned map is immutable.

#### ``Provider`<`String`>` `systemProperty`(`String` propertyName)

Creates a `Provider` whose value is fetched from system properties using the given property name.

#### ``Provider`<`String`>` `systemProperty`(``Provider`<`String`>` propertyName)

Creates a `Provider` whose value is fetched from system properties using the given property name.

#### ``Provider`<`R`>` `zip`(``Provider`<`A`>` first, ``Provider`<`B`>` second, ``BiFunction`<? super `A`, ? super `B`, ? extends `R`>` combiner)

Returns a provider which value will be computed by combining a provider value with another provider value using the supplied combiner function.

If the supplied providers represents a task or the output of a task, the resulting provider will carry the dependency information.