gradle java 插件 "Jar" 来自块 API "from" 部分的任务

gradle java plugin "Jar" task from block API "from" section

我看到以下代码是 jar 任务配置的有效语法 我的困惑在于 Jar 任务 gradle 文档指定了三个 "from" 方法:https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Jar.html But none of them match signature used in below code :

jar { // configure the jar archiving
  from {
    project.configurations.runtimeClasspath.collect {
      File file -> project.zipTree(file)
    }
  }
}

我无法理解根据 API 使用了哪个 from 部分,因为签名与 API 文档中的任何方法都不匹配。

from 方法以 Object 作为输入参数,可以是任何东西。 该方法的文档说这些值将通过 Project.files

进行评估

https://docs.gradle.org/current/dsl/org.gradle.api.Project.html#org.gradle.api.Project:files(java.lang.Object[])

关于它的文档描述了它将接受的不同类型,包括 Groovy 闭包。

所以闭包会被Project.files计算并转换成ConfigurableFileCollection

的实例