Gradle编译文件和coppile fileTree的工作原理是什么

Gradle编译文件和coppile fileTree的工作原理是什么,gradle,groovy,Gradle,Groovy,这是正在运行的gradle生成脚本代码: dependencies { compile files("dir/libs", "dir/libs2") compile fileTree(dir: "libs", include: "*.jar") } 据我了解, dependencies是一种方法,它接受闭包,将其委托属性设置为DependencyHandler对象并执行它 compile是属于project的配置对象 但是什么是文件和文件树 首先要知道的是Gradle使用AST

这是正在运行的gradle生成脚本代码:

dependencies {
    compile files("dir/libs", "dir/libs2")
    compile fileTree(dir: "libs", include: "*.jar")
}
据我了解,

dependencies是一种方法,它接受闭包,将其委托属性设置为DependencyHandler对象并执行它

compile是属于project的配置对象


但是什么是文件文件树

首先要知道的是Gradle使用AST作为
依赖项
闭包语法

我将讨论上面的代码片段,关于委派给
DependencyHandler
行的代码块,您是对的 定义为

要声明配置的特定依赖项,可以使用以下语法:

dependencies {
     configurationName dependencyNotation1, dependencyNotation2, ...
 }
这里需要注意的重要一点是,上面的代码是Gradle提供的语法,以使代码简洁明了。你也可以用这个方法 比如说

dependencies {
          add('compile', fileTree(dir: "libs", include: "*.jar"))
  }
与上面的语法相比,顶层语法允许您在一条语句中添加多个依赖项,并且更加简洁


fileTree()
files()
等是在
项目中定义的方法。从
DependencyHandler.add(String,Object)
,第二个参数的类型为
Object
,因此方法以及依赖项语法可以接受许多类型的依赖项,如
ProjectDependency
,其他
Configuration
s和
FileCollection
及其子类型,如您提到的
ConfigurableFileCollection

,附加链接:请参阅此处的Gradle Project DSL文档:。如何将文件返回的集合--(ConfigurableFileCollection)--应用于编译对象?它看起来既不像赋值,也不像方法调用。