API 文档 | ProviderFactory |
---|
一个用于创建 Provider
实例的工厂。
工厂实例可以通过使用 javax.inject.Inject
注解公共构造函数或属性获取方法来注入到任务、插件或其他对象中。它也可以通过 Project.getProviders()
和 Settings.getProviders()
获取。
方法 | 描述 |
credentials(credentialsType, identity) | 为给定的 |
credentials(credentialsType, identity) | 为给定的 |
environmentVariable(variableName) | 创建一个 |
environmentVariable(variableName) | 创建一个 |
environmentVariablesPrefixedBy(variableNamePrefix) | 创建一个 |
environmentVariablesPrefixedBy(variableNamePrefix) | 创建一个 |
exec(action) | 允许延迟访问外部进程的输出。 |
fileContents(file) | 允许延迟访问给定文件的内容。 |
fileContents(file) | 允许延迟访问给定文件的内容。 |
gradlePropertiesPrefixedBy(variableNamePrefix) | 创建一个 |
gradlePropertiesPrefixedBy(variableNamePrefix) | 创建一个 |
gradleProperty(propertyName) | 创建一个 |
gradleProperty(propertyName) | 创建一个 |
javaexec(action) | 允许延迟访问外部 Java 进程的输出。 |
of(valueSourceType, configuration) | 创建一个 |
provider(value) | |
systemPropertiesPrefixedBy(variableNamePrefix) | 创建一个 |
systemPropertiesPrefixedBy(variableNamePrefix) | 创建一个 |
systemProperty(propertyName) | 创建一个 |
systemProperty(propertyName) | 创建一个 |
zip(first, second, combiner) | 返回一个提供者,其值将通过使用提供的组合器函数将一个提供者值与另一个提供者值组合来计算。 |
为给定的 Credentials
类型创建一个 Provider
。
此方法返回的提供者应附加到任务的输入属性。这样,只有当具有凭据属性的任务要执行时,凭据的存在才会在任何任务执行之前进行验证。
请求的凭据类型的值将从项目的属性中获取,使用“identity”+ 凭据字段的模式。例如,身份为“myService”的 PasswordCredentials
提供者将查找名为“myServiceUsername”和“myServicePassword”的属性。
目前支持以下凭据类型
为给定的 Credentials
类型创建一个 Provider
。
此方法返回的提供者应附加到任务的输入属性。这样,只有当具有凭据属性的任务要执行时,凭据的存在才会在任何任务执行之前进行验证。
请求的凭据类型的值将从项目的属性中获取,使用“identity”+ 凭据字段的模式。例如,身份为“myService”的 PasswordCredentials
提供者将查找名为“myServiceUsername”和“myServicePassword”的属性。
目前支持以下凭据类型
创建一个 Provider
,其值为环境变量的名称到值的映射,这些环境变量的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。
创建一个 Provider
,其值为环境变量的名称到值的映射,这些环境变量的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。
ExecOutput
exec
(Action
<? super ExecSpec
>
action)
Action
<? super ExecSpec
>允许延迟访问外部进程的输出。
当在配置时读取进程输出时,它被认为是配置模型的输入。随后的构建将重新执行该进程以获取输出并检查缓存模型是否仍然是最新的。
进程的输入和输出流无法配置。
对于更复杂的用例,例如处理执行异常、提供输入流或以流方式处理输出,请使用 ValueSource
。
创建一个 Provider
,其值为 Gradle 属性的名称到值的映射,这些属性的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。
创建一个 Provider
,其值为 Gradle 属性的名称到值的映射,这些属性的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。
ExecOutput
javaexec
(Action
<? super JavaExecSpec
>
action)
Action
<? super JavaExecSpec
>允许延迟访问外部 Java 进程的输出。
当在配置时读取进程输出时,它被认为是配置模型的输入。随后的构建将重新执行该进程以获取输出并检查缓存模型是否仍然是最新的。
进程的输入和输出流无法配置。
对于更复杂的用例,例如处理执行异常、提供输入流或以流方式处理输出,请使用 ValueSource
。
Provider
<T
>
of
(Class
<? extends ValueSource
<T
, P
>>
valueSourceType, Action
<? super ValueSourceSpec
<P
>>
configuration)
Provider
<T
>Class
<? extends ValueSource
<T
, P
>>Action
<? super ValueSourceSpec
<P
>>创建一个 Provider
,其值从给定的 ValueSource
中获取。
创建一个 Provider
,其值使用给定的 Callable
计算。
提供者是实时的,每次查询其值时都会调用 Callable
。 Callable
可能返回 null
,在这种情况下,提供者被认为没有值。
此提供者始终由配置缓存 计算并缓存其值。如果此提供者在配置时创建,则 Callable
可以调用仅在配置时可用的 API 并捕获任意类型的对象。
当您需要根据仅在配置时可用的数据延迟计算某些值以在执行时使用时,这非常有用。例如,您可以根据项目的名称计算档案名称。
tasks.register("createArchive") { def archiveNameProvider = providers.provider { project.name + ".jar" } doLast { def archiveName = new File(archiveNameProvider.get()) // ... create the archive and put in its contents. } }
创建一个 Provider
,其值为系统属性的名称到值的映射,这些属性的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。
创建一个 Provider
,其值为系统属性的名称到值的映射,这些属性的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。
Provider
<R
>
zip
(Provider
<A
>
first, Provider
<B
>
second, BiFunction
<? super A
, ? super B
, ? extends R
>
combiner)
Provider
<R
>Provider
<A
>Provider
<B
>BiFunction
<? super A
, ? super B
, ? extends R
>返回一个提供者,其值将通过使用提供的组合器函数将一个提供者值与另一个提供者值组合来计算。
结果提供者将是实时的,因此每次查询它时,它都会查询两个提供的提供者并对结果应用组合器。只要任何提供者没有值,新的提供者也将没有值,并且不会调用组合器。
如果提供的提供者表示任务或任务的输出,则结果提供者将携带依赖项信息。