groovy - 如何正确访问Gradle配置对象

标签 groovy gradle

首先,这是我第一次尝试Gradle / Groovy(使用Gradle 1.10)。我正在建立一个多项目环境,要在一个项目中创建一个jar Artifact ,然后要在另一个项目中定义一个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任务时,失败并显示:
> Could not find method getAt() for arguments [0] on configuration ':loaderJar'.

在我的foo任务中,我正在测试以查看如何访问jar。所以问题是,为什么最后一个println失败?如果配置对象是一个Collection / Iterable,那么我当然应该能够对其进行索引?

最佳答案

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

关于groovy - 如何正确访问Gradle配置对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21145097/

相关文章:

groovy - gremlin 控制台 GUI 对象浏览器

Gradle 5.0 在 buid.gradle.kts 中使用 Kotlin DSL 时导致错误 Val cannot be reassigned

gradle - 如何使用包含 filesMatching 的 copySpec 使用 Gradle 构建 war 文件

java - 无法使用gradle tomcat插件调试tomcat应用程序

api - Gradle tooling api 获取任务输出

groovy - 带有 groovy postbuild 的 Jenkins 。无法在 groovy 脚本字段中执行任何操作

xml - 向 groovy MarkupBuilder 或 StreamingMarkupBuilder 添加动态元素和属性

在 gorm/groovy 上使用 mongodb 启动时出现 springboot 初始化错误

gradle - 添加 Jenkinsfile 以供 Gradle 编译

java - 从gradle中的jar中省略类文件