Groovy 如何正确访问Gradle配置对象

Groovy 如何正确访问Gradle配置对象,groovy,gradle,Groovy,Gradle,首先,这是我第一次尝试Gradle/Groovy(使用Gradle1.10)。我正在建立一个多项目环境,在这个环境中,我在一个项目中创建一个jar工件,然后在另一个项目中定义一个Exec任务,这取决于创建的jar。我正在设置如下内容: // This is from the jar building project jar { ... } configurations { loaderJar } dependencies { loaderJar files(jar.archivePa

首先,这是我第一次尝试Gradle/Groovy(使用Gradle1.10)。我正在建立一个多项目环境,在这个环境中,我在一个项目中创建一个jar工件,然后在另一个项目中定义一个Exec任务,这取决于创建的jar。我正在设置如下内容:

// This is from the jar building project
jar {
  ...
}
configurations {
  loaderJar
}
dependencies {
  loaderJar files(jar.archivePath)
  ...
}

// From the project which consumes the built jar
configurations {
  loaderJar
}
dependencies {
  loaderJar project(path: ":gfxd-demo-loader", configuration: "loaderJar")
}
// This is my test task
task foo << {
  configurations.loaderJar.each { println it }
  println configurations.loaderJar.collect { it }[0]
  // The following line breaks!!!
  println configurations.loaderJar[0]
}

在我的
foo
任务中,我只是在测试如何访问jar。所以问题是,为什么最后一次打印失败了?如果一个配置对象是一个集合/Iterable,那么我当然应该能够索引到它中?

Configuration
是-a
java.util.Iterable
,而不是
java.util.Collection
。从文档中可以看出,
getAt
方法(对应于
[]
运算符)是在
集合
上定义的,而不是在
Iterable
上定义的。因此,您无法索引到
配置中

谢谢@peter。我在看
ConfigurationContainer
(它扩展了
Collection
)的API,而不是
Configuration
,正如您所指出的那样。
> Could not find method getAt() for arguments [0] on configuration ':loaderJar'.