Groovy 为什么Gradle中的配置和依赖项不是ExtensionAware?
根据这一页,, Gradle中的许多域对象都是可扩展的,这意味着可以通过Groovy 为什么Gradle中的配置和依赖项不是ExtensionAware?,groovy,build,gradle,Groovy,Build,Gradle,根据这一页,, Gradle中的许多域对象都是可扩展的,这意味着可以通过 ext.key=value,或通过其他方式 页面上说配置和依赖项是可扩展的,应该是,但不是, 我看不出来 两项证据: 首先,此代码段应设置依赖项对象的属性 dependencies { testCompile(group: 'junit', name: 'junit', version: '4.9') { provided = true ext.provided = true
ext.key=value
,或通过其他方式
页面上说配置和依赖项是可扩展的,应该是,但不是,
我看不出来
两项证据:
首先,此代码段应设置依赖项对象的属性
dependencies {
testCompile(group: 'junit', name: 'junit', version: '4.9') {
provided = true
ext.provided = true
}
}
但我无法从其他地方获得价值
task test { task ->
task.project.configurations.testCompile.each {
println it
println it.provided
println it.ext.provided
println it.hasProperty('provided')
}
}
什么也没出现
虽然当我设置provided=true
时,Gradle警告我动态属性已被弃用,但请使用扩展属性,顺便说一句,动态属性似乎也不起作用
第二,根据Gradle的源代码,
配置和依赖项对象不是ExtensionAware
那么,我是否遗漏了一些要点?或者该功能迄今尚未实现。
我认为这是一个重要的特性。
配置
和依赖性
是扩展软件
。接口是在运行时动态添加的project.configurations.testCompile。每个
迭代解析的文件。要迭代声明的依赖项,请使用project.configurations.testCompile.(全部)依赖项。所有
我知道这个问题很老,但我今天遇到了这个问题,因为我使用的是复制和分离的配置,这些配置不是ExtensionAware,尽管我希望它们是,并且认为它们将基于OP问题中引用的文档。这出现在我的谷歌查询的顶部,所以我想我会分享,以防其他人遇到这个问题(没有足够的代表回答Peter Niederwieser的答案)…Peter,这是一个bug吗(至少在文档中是这样的?)
$cat build.gradle
应用插件:“基本”
配置{
埃里克瓦希尔
}
任务测试
$ cat build.gradle
apply plugin: 'base'
configurations {
ericwashere
}
task test << {
println configurations.ericwashere instanceof ExtensionAware
println configurations.ericwashere.copy() instanceof ExtensionAware
println configurations.detachedConfiguration() instanceof ExtensionAware
}
$ ./gradlew --version
------------------------------------------------------------
Gradle 2.11
------------------------------------------------------------
Build time: 2016-02-08 07:59:16 UTC
Build number: none
Revision: 584db1c7c90bdd1de1d1c4c51271c665bfcba978
Groovy: 2.4.4
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.8.0_31 (Oracle Corporation 25.31-b07)
OS: Windows 7 6.1 amd64
$ ./gradlew test
:test
true
false
false
BUILD SUCCESSFUL
Total time: 2.433 secs