API 文档 | 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) | 孵化中 注册一个新的具有不可变角色的 |
consumable(name, action) | 孵化中 通过 |
create(name) | 创建一个具有给定名称的新项,并将其添加到此容器。 |
create(name, configureClosure) | 创建一个具有给定名称的新项,并将其添加到此容器,然后使用给定的 closure 对其进行配置。 |
create(name, configureAction) | 创建一个具有给定名称的新项,并将其添加到此容器,然后使用给定的 action 对其进行配置。 |
dependencyScope(name) | 孵化中 注册一个新的具有不可变角色的 |
dependencyScope(name, action) | 孵化中 通过 |
detachedConfiguration(dependencies) | 创建一个配置,但不将其添加到此容器。 |
getAt(name) | 按名称定位对象,如果不存在则失败。此方法与 |
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) | 定义一个新对象,该对象将在需要时创建。当使用查询方法(例如 |
register(name, configurationAction) | 通常使用此方法比使用 |
resolvable(name) | 孵化中 注册一个具有不可变角色的 |
resolvable(name, action) | 孵化中 通过 |
NamedDomainObjectProvider
<ConsumableConfiguration
>
consumable
(String
name)
NamedDomainObjectProvider
<ConsumableConfiguration
>注意:此方法处于孵化中,将来版本的 Gradle 中可能会有变化。
注册一个新的具有不可变角色的 ConsumableConfiguration
。可消费配置旨在用作依赖管理和发布的上下文中的变体。
此操作是 lazy 的,返回的元素没有被实例化(realized)。返回的是一个 NamedDomainObjectProvider
,允许将其与其他 lazy API 一起使用。
NamedDomainObjectProvider
<ConsumableConfiguration
>
consumable
(String
name, Action
<? super ConsumableConfiguration
>
action)
NamedDomainObjectProvider
<ConsumableConfiguration
>Action
<? super ConsumableConfiguration
>注意:此方法处于孵化中,将来版本的 Gradle 中可能会有变化。
通过 ConfigurationContainer.consumable(java.lang.String)
注册一个 ConsumableConfiguration
,然后使用提供的 action 对其进行配置。
此操作是 lazy 的,返回的元素没有被实例化(realized)。返回的是一个 NamedDomainObjectProvider
,允许将其与其他 lazy API 一起使用。
创建一个具有给定名称的新项,并将其添加到此容器,然后使用给定的 closure 对其进行配置。
此操作是 eager 的,元素在返回之前被实例化(realized)。
创建一个具有给定名称的新项,并将其添加到此容器,然后使用给定的 action 对其进行配置。
此操作是 eager 的,元素在返回之前被实例化(realized)。
NamedDomainObjectProvider
<DependencyScopeConfiguration
>
dependencyScope
(String
name)
NamedDomainObjectProvider
<DependencyScopeConfiguration
>注意:此方法处于孵化中,将来版本的 Gradle 中可能会有变化。
注册一个新的具有不可变角色的 DependencyScopeConfiguration
。依赖范围配置收集依赖项、依赖约束和排除规则,供可解析和可消费配置使用。
此操作是 lazy 的,返回的元素没有被实例化(realized)。返回的是一个 NamedDomainObjectProvider
,允许将其与其他 lazy API 一起使用。
NamedDomainObjectProvider
<DependencyScopeConfiguration
>
dependencyScope
(String
name, Action
<? super DependencyScopeConfiguration
>
action)
NamedDomainObjectProvider
<DependencyScopeConfiguration
>Action
<? super DependencyScopeConfiguration
>注意:此方法处于孵化中,将来版本的 Gradle 中可能会有变化。
通过 ConfigurationContainer.dependencyScope(java.lang.String)
注册一个 DependencyScopeConfiguration
,然后使用提供的 action 对其进行配置。
此操作是 lazy 的,返回的元素没有被实例化(realized)。返回的是一个 NamedDomainObjectProvider
,允许将其与其他 lazy API 一起使用。
Configuration
detachedConfiguration
(Dependency
...
dependencies)
Dependency
...创建一个配置,但不将其添加到此容器。
Configuration
getAt
(String
name)
按名称定位对象,如果不存在则失败。此方法与 NamedDomainObjectCollection.getByName(java.lang.String)
相同。您可以在构建脚本中使用 Groovy 的 []
运算符调用此方法。
此操作是 eager 的,将导致返回的元素被实例化(realized)。
Configuration
getByName
(String
name, Closure
configureClosure)
按名称定位对象,如果不存在则失败。在从该方法返回对象之前,将针对该对象执行给定的配置 closure。该对象作为其 delegate 传递给 closure。
此操作是 eager 的,将导致返回的元素被实例化(realized)。
Configuration
getByName
(String
name, Action
<? super Configuration
>
configureAction)
Action
<? super Configuration
>按名称定位对象,如果不存在则失败。在从该方法返回对象之前,将针对该对象执行给定的配置 action。
此操作是 eager 的,将导致返回的元素被实例化(realized)。
NamedDomainObjectProvider
<T
>
named
(String
name)
NamedDomainObjectProvider
<T
>按名称定位对象,如果不存在则失败。
此方法是 lazy 的,不会导致返回的元素被实例化(realized)。
NamedDomainObjectProvider
<S
>
named
(String
name, Class
<S
>
type)
NamedDomainObjectProvider
<S
>Class
<S
>按名称和类型定位对象,如果不存在则失败。
此方法是 lazy 的,不会导致返回的元素被实例化(realized)。
NamedDomainObjectProvider
<S
>
named
(String
name, Class
<S
>
type, Action
<? super S
>
configurationAction)
NamedDomainObjectProvider
<S
>Class
<S
>Action
<? super S
>按名称和类型定位对象,如果不存在则失败。在从 provider 返回对象之前,将针对该对象执行给定的配置 action。
此方法是 lazy 的,不会导致返回的元素被实例化(realized)。
NamedDomainObjectProvider
<T
>
named
(String
name, Action
<? super T
>
configurationAction)
NamedDomainObjectProvider
<T
>Action
<? super T
>按名称定位对象,如果不存在则失败。在从 provider 返回对象之前,将针对该对象执行给定的配置 action。
此方法是 lazy 的,不会导致返回的元素被实例化(realized)。
NamedDomainObjectCollection
<T
>
named
(Spec
<String
>
nameFilter)
NamedDomainObjectCollection
<T
>Spec
<String
>注意:此方法处于孵化中,将来版本的 Gradle 中可能会有变化。
返回一个集合,其中包含名称与提供的过滤器匹配的对象。返回的集合是 live 的,因此当匹配的对象添加到此集合时,它们也会在过滤后的集合中可见。
此方法是中间操作。它不改变集合中元素的实例化/未实例化状态。
NamedDomainObjectProvider
<T
>
register
(String
name)
NamedDomainObjectProvider
<T
>定义一个新对象,该对象将在需要时创建。当使用查询方法(例如 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)
NamedDomainObjectProvider
<T
>Action
<? super T
>通常使用此方法比使用 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 一起使用。
NamedDomainObjectProvider
<ResolvableConfiguration
>
resolvable
(String
name)
NamedDomainObjectProvider
<ResolvableConfiguration
>注意:此方法处于孵化中,将来版本的 Gradle 中可能会有变化。
注册一个具有不可变角色的 ResolvableConfiguration
。可解析配置用于解析依赖图及其 artifacts。
此操作是 lazy 的,返回的元素没有被实例化(realized)。返回的是一个 NamedDomainObjectProvider
,允许将其与其他 lazy API 一起使用。
NamedDomainObjectProvider
<ResolvableConfiguration
>
resolvable
(String
name, Action
<? super ResolvableConfiguration
>
action)
NamedDomainObjectProvider
<ResolvableConfiguration
>Action
<? super ResolvableConfiguration
>注意:此方法处于孵化中,将来版本的 Gradle 中可能会有变化。
通过 ConfigurationContainer.resolvable(java.lang.String)
注册一个 ResolvableConfiguration
,然后使用提供的 action 对其进行配置。
此操作是 lazy 的,返回的元素没有被实例化(realized)。返回的是一个 NamedDomainObjectProvider
,允许将其与其他 lazy API 一起使用。