ConfigurationContainer

一个 ConfigurationContainer 负责声明和管理配置。另请参阅 Configuration

您可以通过调用 Project.getConfigurations() 或在构建脚本中使用 configurations 属性来获取 ConfigurationContainer 实例。

容器中的配置可以作为容器的只读属性访问,属性名即为配置的名称。例如

configurations.create('myConfiguration')
configurations.myConfiguration.transitive = false

为每个配置添加了一个接受配置闭包(closure)的动态方法。这等同于调用 ConfigurationContainer.getByName(java.lang.String, groovy.lang.Closure)。例如

configurations.create('myConfiguration')
configurations.myConfiguration {
    transitive = false
}

示例

一个示例,展示如何按名称引用给定的配置以获取所有依赖项(例如 jars)

  plugins {
      id 'java' //so that I can use 'implementation', 'compileClasspath' configuration
  }

  dependencies {
      implementation 'org.slf4j:slf4j-api:1.7.26'
  }

  //copying all dependencies attached to 'compileClasspath' into a specific folder
  task copyAllDependencies(type: Copy) {
    //referring to the 'compileClasspath' configuration
    from configurations.compileClasspath
    into 'allLibs'
  }

一个示例,展示如何声明和配置配置

plugins {
    id 'java' // so that I can use 'implementation', 'testImplementation' configurations
}

configurations {
  //adding a configuration:
  myConfiguration

  //adding a configuration that extends existing configuration:
  //(testImplementation was added by the java plugin)
  myIntegrationTestsCompile.extendsFrom(testImplementation)

  //configuring existing configurations not to put transitive dependencies on the compile classpath
  //this way you can avoid issues with implicit dependencies to transitive libraries
  compileClasspath.transitive = false
  testCompileClasspath.transitive = false
}

配置 解析策略 的示例 - 请参阅 ResolutionStrategy 的文档。请参阅 管理依赖配置 用户手册章节以获取更多信息。

属性

无属性

方法

方法描述
consumable(name)
孵化中

注册一个新的具有不可变角色的 ConsumableConfiguration。可消费配置旨在用作依赖管理和发布的上下文中的变体。

consumable(name, action)
孵化中

通过 ConfigurationContainer.consumable(java.lang.String) 注册一个 ConsumableConfiguration,然后使用提供的 action 对其进行配置。

create(name)

创建一个具有给定名称的新项,并将其添加到此容器。

create(name, configureClosure)

创建一个具有给定名称的新项,并将其添加到此容器,然后使用给定的 closure 对其进行配置。

create(name, configureAction)

创建一个具有给定名称的新项,并将其添加到此容器,然后使用给定的 action 对其进行配置。

dependencyScope(name)
孵化中

注册一个新的具有不可变角色的 DependencyScopeConfiguration。依赖范围配置收集依赖项、依赖约束和排除规则,供可解析和可消费配置使用。

dependencyScope(name, action)
孵化中

通过 ConfigurationContainer.dependencyScope(java.lang.String) 注册一个 DependencyScopeConfiguration,然后使用提供的 action 对其进行配置。

detachedConfiguration(dependencies)

创建一个配置,但不将其添加到此容器。

getAt(name)

按名称定位对象,如果不存在则失败。此方法与 NamedDomainObjectCollection.getByName(java.lang.String) 相同。您可以在构建脚本中使用 Groovy 的 [] 运算符调用此方法。

getByName(name)

按名称定位对象,如果不存在则失败。

getByName(name, configureClosure)

按名称定位对象,如果不存在则失败。在从该方法返回对象之前,将针对该对象执行给定的配置 closure。该对象作为其 delegate 传递给 closure。

getByName(name, configureAction)

按名称定位对象,如果不存在则失败。在从该方法返回对象之前,将针对该对象执行给定的配置 action。

maybeCreate(name)

查找具有给定名称的项,如果不存在则创建并将其添加到此容器。

named(name)

按名称定位对象,如果不存在则失败。

named(name, type)

按名称和类型定位对象,如果不存在则失败。

named(name, type, configurationAction)

按名称和类型定位对象,如果不存在则失败。在从 provider 返回对象之前,将针对该对象执行给定的配置 action。

named(name, configurationAction)

按名称定位对象,如果不存在则失败。在从 provider 返回对象之前,将针对该对象执行给定的配置 action。

named(nameFilter)
孵化中

返回一个集合,其中包含名称与提供的过滤器匹配的对象。返回的集合是 live 的,因此当匹配的对象添加到此集合时,它们也会在过滤后的集合中可见。

register(name)

定义一个新对象,该对象将在需要时创建。当使用查询方法(例如 NamedDomainObjectCollection.getByName(java.lang.String))定位对象,或者当在此方法的返回值上调用 Provider.get() 时,该对象被视为“required(需要)”。

register(name, configurationAction)

通常使用此方法比使用 NamedDomainObjectContainer.create(java.lang.String, org.gradle.api.Action)NamedDomainObjectContainer.create(java.lang.String) 更高效,因为这些方法会立即创建和配置对象,而不管当前构建是否需要该对象。另一方面,此方法将推迟创建和配置直到需要时。

resolvable(name)
孵化中

注册一个具有不可变角色的 ResolvableConfiguration。可解析配置用于解析依赖图及其 artifacts。

resolvable(name, action)
孵化中

通过 ConfigurationContainer.resolvable(java.lang.String) 注册一个 ResolvableConfiguration,然后使用提供的 action 对其进行配置。

脚本块

无脚本块

方法详情

注意:此方法处于孵化中,将来版本的 Gradle 中可能会有变化。

注册一个新的具有不可变角色的 ConsumableConfiguration。可消费配置旨在用作依赖管理和发布的上下文中的变体。

此操作是 lazy 的,返回的元素没有被实例化(realized)。返回的是一个 NamedDomainObjectProvider,允许将其与其他 lazy API 一起使用。

注意:此方法处于孵化中,将来版本的 Gradle 中可能会有变化。

通过 ConfigurationContainer.consumable(java.lang.String) 注册一个 ConsumableConfiguration,然后使用提供的 action 对其进行配置。

此操作是 lazy 的,返回的元素没有被实例化(realized)。返回的是一个 NamedDomainObjectProvider,允许将其与其他 lazy API 一起使用。

T create(String name)

创建一个具有给定名称的新项,并将其添加到此容器。

此操作是 eager 的,元素在返回之前被实例化(realized)。

T create(String name, Closure configureClosure)

创建一个具有给定名称的新项,并将其添加到此容器,然后使用给定的 closure 对其进行配置。

此操作是 eager 的,元素在返回之前被实例化(realized)。

T create(String name, Action<? super T> configureAction)

创建一个具有给定名称的新项,并将其添加到此容器,然后使用给定的 action 对其进行配置。

此操作是 eager 的,元素在返回之前被实例化(realized)。

注意:此方法处于孵化中,将来版本的 Gradle 中可能会有变化。

注册一个新的具有不可变角色的 DependencyScopeConfiguration。依赖范围配置收集依赖项、依赖约束和排除规则,供可解析和可消费配置使用。

此操作是 lazy 的,返回的元素没有被实例化(realized)。返回的是一个 NamedDomainObjectProvider,允许将其与其他 lazy API 一起使用。

注意:此方法处于孵化中,将来版本的 Gradle 中可能会有变化。

通过 ConfigurationContainer.dependencyScope(java.lang.String) 注册一个 DependencyScopeConfiguration,然后使用提供的 action 对其进行配置。

此操作是 lazy 的,返回的元素没有被实例化(realized)。返回的是一个 NamedDomainObjectProvider,允许将其与其他 lazy API 一起使用。

Configuration detachedConfiguration(Dependency... dependencies)

创建一个配置,但不将其添加到此容器。

Configuration getAt(String name)

按名称定位对象,如果不存在则失败。此方法与 NamedDomainObjectCollection.getByName(java.lang.String) 相同。您可以在构建脚本中使用 Groovy 的 [] 运算符调用此方法。

此操作是 eager 的,将导致返回的元素被实例化(realized)。

Configuration getByName(String name)

按名称定位对象,如果不存在则失败。

此操作是 eager 的,将导致返回的元素被实例化(realized)。

Configuration getByName(String name, Closure configureClosure)

按名称定位对象,如果不存在则失败。在从该方法返回对象之前,将针对该对象执行给定的配置 closure。该对象作为其 delegate 传递给 closure。

此操作是 eager 的,将导致返回的元素被实例化(realized)。

Configuration getByName(String name, Action<? super Configuration> configureAction)

按名称定位对象,如果不存在则失败。在从该方法返回对象之前,将针对该对象执行给定的配置 action。

此操作是 eager 的,将导致返回的元素被实例化(realized)。

T maybeCreate(String name)

查找具有给定名称的项,如果不存在则创建并将其添加到此容器。

此操作是 eager 的,元素在返回之前被实例化(realized)。

按名称定位对象,如果不存在则失败。

此方法是 lazy 的,不会导致返回的元素被实例化(realized)。

NamedDomainObjectProvider<S> named(String name, Class<S> type)

按名称和类型定位对象,如果不存在则失败。

此方法是 lazy 的,不会导致返回的元素被实例化(realized)。

NamedDomainObjectProvider<S> named(String name, Class<S> type, Action<? super S> configurationAction)

按名称和类型定位对象,如果不存在则失败。在从 provider 返回对象之前,将针对该对象执行给定的配置 action。

此方法是 lazy 的,不会导致返回的元素被实例化(realized)。

NamedDomainObjectProvider<T> named(String name, Action<? super T> configurationAction)

按名称定位对象,如果不存在则失败。在从 provider 返回对象之前,将针对该对象执行给定的配置 action。

此方法是 lazy 的,不会导致返回的元素被实例化(realized)。

注意:此方法处于孵化中,将来版本的 Gradle 中可能会有变化。

返回一个集合,其中包含名称与提供的过滤器匹配的对象。返回的集合是 live 的,因此当匹配的对象添加到此集合时,它们也会在过滤后的集合中可见。

此方法是中间操作。它不改变集合中元素的实例化/未实例化状态。

定义一个新对象,该对象将在需要时创建。当使用查询方法(例如 NamedDomainObjectCollection.getByName(java.lang.String))定位对象,或者当在此方法的返回值上调用 Provider.get() 时,该对象被视为“required(需要)”。

通常使用此方法比使用 NamedDomainObjectContainer.create(java.lang.String) 更高效,因为后者会立即创建对象,而不管当前构建是否需要该对象。另一方面,此方法将推迟创建直到需要时。

此操作是 lazy 的,返回的元素没有被实例化(realized)。返回的是一个 NamedDomainObjectProvider,允许将其与其他 lazy API 一起使用。

NamedDomainObjectProvider<T> register(String name, Action<? super T> configurationAction)

通常使用此方法比使用 NamedDomainObjectContainer.create(java.lang.String, org.gradle.api.Action)NamedDomainObjectContainer.create(java.lang.String) 更高效,因为这些方法会立即创建和配置对象,而不管当前构建是否需要该对象。另一方面,此方法将推迟创建和配置直到需要时。

通常使用此方法比使用 NamedDomainObjectContainer.create(java.lang.String, org.gradle.api.Action)NamedDomainObjectContainer.create(java.lang.String) 更高效,因为这些方法会立即创建和配置对象,而不管当前构建是否需要该对象。另一方面,此方法将推迟创建和配置直到需要时。

此操作是 lazy 的,返回的元素没有被实例化(realized)。返回的是一个 NamedDomainObjectProvider,允许将其与其他 lazy API 一起使用。

注意:此方法处于孵化中,将来版本的 Gradle 中可能会有变化。

注册一个具有不可变角色的 ResolvableConfiguration。可解析配置用于解析依赖图及其 artifacts。

此操作是 lazy 的,返回的元素没有被实例化(realized)。返回的是一个 NamedDomainObjectProvider,允许将其与其他 lazy API 一起使用。

注意:此方法处于孵化中,将来版本的 Gradle 中可能会有变化。

通过 ConfigurationContainer.resolvable(java.lang.String) 注册一个 ResolvableConfiguration,然后使用提供的 action 对其进行配置。

此操作是 lazy 的,返回的元素没有被实例化(realized)。返回的是一个 NamedDomainObjectProvider,允许将其与其他 lazy API 一起使用。