ConfigurationContainer

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

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

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

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

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

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

示例

一个示例,展示如何通过名称引用给定的配置,以便获取所有依赖项(例如 jar,但仅限 jar):

  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)

使用给定的名称创建一个新项目,将其添加到此容器中,然后使用给定的闭包配置它。

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)

按名称查找对象,如果不存在此类对象则失败。给定的配置闭包在对象返回之前针对该对象执行。对象作为委托传递给闭包。

getByName(name, configureAction)

按名称查找对象,如果不存在此类对象则失败。给定的配置 action 在对象返回之前针对该对象执行。

maybeCreate(name)

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

named(name)

按名称查找对象,如果不存在此类对象则失败。

named(name, type)

按名称和类型查找对象,如果不存在此类对象则失败。

named(name, type, configurationAction)

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

named(name, configurationAction)

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

named(nameFilter)
孵化中

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

register(name)

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

register(name, configurationAction)

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

resolvable(name)
孵化中

注册一个 ResolvableConfiguration,具有不可变的角色。可解析配置旨在解析依赖关系图及其构件。

resolvable(name, action)
孵化中

通过 ConfigurationContainer.resolvable(java.lang.String) 注册 ResolvableConfiguration,然后使用提供的 action 配置它。

脚本块

无脚本块

方法详情

注意:此方法正在孵化中,并且在 Gradle 的未来版本中可能会发生更改。

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

此操作是延迟的,返回的元素尚未实现。返回 NamedDomainObjectProvider,允许继续将其与其他延迟 API 一起使用。

注意:此方法正在孵化中,并且在 Gradle 的未来版本中可能会发生更改。

通过 ConfigurationContainer.consumable(java.lang.String) 注册 ConsumableConfiguration,然后使用提供的 action 配置它。

此操作是延迟的,返回的元素尚未实现。返回 NamedDomainObjectProvider,允许继续将其与其他延迟 API 一起使用。

T create(String name)

使用给定的名称创建一个新项目,并将其添加到此容器中。

此操作是急切的,元素在返回之前实现。

T create(String name, Closure configureClosure)

使用给定的名称创建一个新项目,将其添加到此容器中,然后使用给定的闭包配置它。

此操作是急切的,元素在返回之前实现。

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

使用给定的名称创建一个新项目,将其添加到此容器中,然后使用给定的 action 配置它。

此操作是急切的,元素在返回之前实现。

注意:此方法正在孵化中,并且在 Gradle 的未来版本中可能会发生更改。

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

此操作是延迟的,返回的元素尚未实现。返回 NamedDomainObjectProvider,允许继续将其与其他延迟 API 一起使用。

注意:此方法正在孵化中,并且在 Gradle 的未来版本中可能会发生更改。

通过 ConfigurationContainer.dependencyScope(java.lang.String) 注册 DependencyScopeConfiguration,然后使用提供的 action 配置它。

此操作是延迟的,返回的元素尚未实现。返回 NamedDomainObjectProvider,允许继续将其与其他延迟 API 一起使用。

Configuration detachedConfiguration(Dependency... dependencies)

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

Configuration getAt(String name)

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

此操作是急切的,并将导致返回的元素被实现。

Configuration getByName(String name)

按名称查找对象,如果不存在此类对象则失败。

此操作是急切的,并将导致返回的元素被实现。

Configuration getByName(String name, Closure configureClosure)

按名称查找对象,如果不存在此类对象则失败。给定的配置闭包在对象返回之前针对该对象执行。对象作为委托传递给闭包。

此操作是急切的,并将导致返回的元素被实现。

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

按名称查找对象,如果不存在此类对象则失败。给定的配置 action 在对象返回之前针对该对象执行。

此操作是急切的,并将导致返回的元素被实现。

T maybeCreate(String name)

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

此操作是急切的,元素在返回之前实现。

按名称查找对象,如果不存在此类对象则失败。

此方法是延迟的,不会导致返回的元素被实现。

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

按名称和类型查找对象,如果不存在此类对象则失败。

此方法是延迟的,不会导致返回的元素被实现。

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

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

此方法是延迟的,不会导致返回的元素被实现。

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

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

此方法是延迟的,不会导致返回的元素被实现。

注意:此方法正在孵化中,并且在 Gradle 的未来版本中可能会发生更改。

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

此方法是中间操作。它不会更改集合中元素的已实现/未实现状态。

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

通常使用此方法比 NamedDomainObjectContainer.create(java.lang.String) 更有效,因为该方法会急切地创建对象,而不管当前构建是否需要该对象。另一方面,此方法会将创建延迟到需要时。

此操作是延迟的,返回的元素尚未实现。返回 NamedDomainObjectProvider,允许继续将其与其他延迟 API 一起使用。

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

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

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

此操作是延迟的,返回的元素尚未实现。返回 NamedDomainObjectProvider,允许继续将其与其他延迟 API 一起使用。

注意:此方法正在孵化中,并且在 Gradle 的未来版本中可能会发生更改。

注册一个 ResolvableConfiguration,具有不可变的角色。可解析配置旨在解析依赖关系图及其构件。

此操作是延迟的,返回的元素尚未实现。返回 NamedDomainObjectProvider,允许继续将其与其他延迟 API 一起使用。

注意:此方法正在孵化中,并且在 Gradle 的未来版本中可能会发生更改。

通过 ConfigurationContainer.resolvable(java.lang.String) 注册 ResolvableConfiguration,然后使用提供的 action 配置它。

此操作是延迟的,返回的元素尚未实现。返回 NamedDomainObjectProvider,允许继续将其与其他延迟 API 一起使用。