Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy 为什么Gradle中的配置和依赖项不是ExtensionAware?_Groovy_Build_Gradle - Fatal编程技术网

Groovy 为什么Gradle中的配置和依赖项不是ExtensionAware?

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

根据这一页,,

Gradle中的许多域对象都是可扩展的,这意味着可以通过
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