ProviderFactory

API 文档ProviderFactory

一个用于创建 Provider 实例的工厂。

工厂实例可以通过使用 javax.inject.Inject 注解公共构造函数或属性获取方法来注入到任务、插件或其他对象中。它也可以通过 Project.getProviders()Settings.getProviders() 获取。

属性

无属性

方法

方法描述
credentials(credentialsType, identity)

为给定的 Credentials 类型创建一个 Provider

credentials(credentialsType, identity)

为给定的 Credentials 类型创建一个 Provider

environmentVariable(variableName)

创建一个 Provider,其值从给定名称的环境变量中获取。

environmentVariable(variableName)

创建一个 Provider,其值从给定名称的环境变量中获取。

environmentVariablesPrefixedBy(variableNamePrefix)

创建一个 Provider,其值为环境变量的名称到值的映射,这些环境变量的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。

environmentVariablesPrefixedBy(variableNamePrefix)

创建一个 Provider,其值为环境变量的名称到值的映射,这些环境变量的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。

exec(action)

允许延迟访问外部进程的输出。

fileContents(file)

允许延迟访问给定文件的内容。

fileContents(file)

允许延迟访问给定文件的内容。

gradlePropertiesPrefixedBy(variableNamePrefix)

创建一个 Provider,其值为 Gradle 属性的名称到值的映射,这些属性的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。

gradlePropertiesPrefixedBy(variableNamePrefix)

创建一个 Provider,其值为 Gradle 属性的名称到值的映射,这些属性的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。

gradleProperty(propertyName)

创建一个 Provider,其值从给定名称的 Gradle 属性中获取。

gradleProperty(propertyName)

创建一个 Provider,其值从给定名称的 Gradle 属性中获取。

javaexec(action)

允许延迟访问外部 Java 进程的输出。

of(valueSourceType, configuration)

创建一个 Provider,其值从给定的 ValueSource 中获取。

provider(value)

创建一个 Provider,其值使用给定的 Callable 计算。

systemPropertiesPrefixedBy(variableNamePrefix)

创建一个 Provider,其值为系统属性的名称到值的映射,这些属性的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。

systemPropertiesPrefixedBy(variableNamePrefix)

创建一个 Provider,其值为系统属性的名称到值的映射,这些属性的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。

systemProperty(propertyName)

创建一个 Provider,其值使用给定的属性名称从系统属性中获取。

systemProperty(propertyName)

创建一个 Provider,其值使用给定的属性名称从系统属性中获取。

zip(first, second, combiner)

返回一个提供者,其值将通过使用提供的组合器函数将一个提供者值与另一个提供者值组合来计算。

脚本块

无脚本块

方法详情

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

为给定的 Credentials 类型创建一个 Provider

此方法返回的提供者应附加到任务的输入属性。这样,只有当具有凭据属性的任务要执行时,凭据的存在才会在任何任务执行之前进行验证。

请求的凭据类型的值将从项目的属性中获取,使用“identity”+ 凭据字段的模式。例如,身份为“myService”的 PasswordCredentials 提供者将查找名为“myServiceUsername”和“myServicePassword”的属性。

目前支持以下凭据类型

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

为给定的 Credentials 类型创建一个 Provider

此方法返回的提供者应附加到任务的输入属性。这样,只有当具有凭据属性的任务要执行时,凭据的存在才会在任何任务执行之前进行验证。

请求的凭据类型的值将从项目的属性中获取,使用“identity”+ 凭据字段的模式。例如,身份为“myService”的 PasswordCredentials 提供者将查找名为“myServiceUsername”和“myServicePassword”的属性。

目前支持以下凭据类型

Provider<String> environmentVariable(String variableName)

创建一个 Provider,其值从给定名称的环境变量中获取。

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

创建一个 Provider,其值从给定名称的环境变量中获取。

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

创建一个 Provider,其值为环境变量的名称到值的映射,这些环境变量的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。

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

创建一个 Provider,其值为环境变量的名称到值的映射,这些环境变量的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。

ExecOutput exec(Action<? super ExecSpec> action)

允许延迟访问外部进程的输出。

当在配置时读取进程输出时,它被认为是配置模型的输入。随后的构建将重新执行该进程以获取输出并检查缓存模型是否仍然是最新的。

进程的输入和输出流无法配置。

对于更复杂的用例,例如处理执行异常、提供输入流或以流方式处理输出,请使用 ValueSource

FileContents fileContents(RegularFile file)

允许延迟访问给定文件的内容。

当在配置时读取文件内容时,该文件会自动被视为配置模型的输入。

FileContents fileContents(Provider<RegularFile> file)

允许延迟访问给定文件的内容。

当在配置时读取文件内容时,该文件会自动被视为配置模型的输入。

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

创建一个 Provider,其值为 Gradle 属性的名称到值的映射,这些属性的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。

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

创建一个 Provider,其值为 Gradle 属性的名称到值的映射,这些属性的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。

Provider<String> gradleProperty(String propertyName)

创建一个 Provider,其值从给定名称的 Gradle 属性中获取。

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

创建一个 Provider,其值从给定名称的 Gradle 属性中获取。

ExecOutput javaexec(Action<? super JavaExecSpec> action)

允许延迟访问外部 Java 进程的输出。

当在配置时读取进程输出时,它被认为是配置模型的输入。随后的构建将重新执行该进程以获取输出并检查缓存模型是否仍然是最新的。

进程的输入和输出流无法配置。

对于更复杂的用例,例如处理执行异常、提供输入流或以流方式处理输出,请使用 ValueSource

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

创建一个 Provider,其值从给定的 ValueSource 中获取。

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

创建一个 Provider,其值使用给定的 Callable 计算。

提供者是实时的,每次查询其值时都会调用 CallableCallable 可能返回 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<Map<String, String>> systemPropertiesPrefixedBy(String variableNamePrefix)

创建一个 Provider,其值为系统属性的名称到值的映射,这些属性的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。

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

创建一个 Provider,其值为系统属性的名称到值的映射,这些属性的名称以给定前缀开头。前缀比较是区分大小写的。返回的映射是不可变的。

Provider<String> systemProperty(String propertyName)

创建一个 Provider,其值使用给定的属性名称从系统属性中获取。

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

创建一个 Provider,其值使用给定的属性名称从系统属性中获取。

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

返回一个提供者,其值将通过使用提供的组合器函数将一个提供者值与另一个提供者值组合来计算。

结果提供者将是实时的,因此每次查询它时,它都会查询两个提供的提供者并对结果应用组合器。只要任何提供者没有值,新的提供者也将没有值,并且不会调用组合器。

如果提供的提供者表示任务或任务的输出,则结果提供者将携带依赖项信息。