Groovy 中 Gradle 构建脚本的依赖语法

Dependency syntax of Gradle build script in Groovy

提问人:laplacedoge 提问时间:6/18/2022 更新时间:6/18/2022 访问量:192

问:

例如,Groovy 代码如下:

dependencies {
    classpath 'com.android.tools.build:gradle:0.13.2'
}

我知道是一个函数,您可以通过传递字符串
来调用它但我的问题是:
classpath

  1. 是对象的方法吗?dependenciesproject
  2. 是 或 的方法吗?classpathprojectdependencies
  3. 将闭包传递给函数是什么意思?
Java Gradle Groovy 闭包

评论


答:

0赞 danwalkerdev 6/18/2022 #1

尝试查看 API 文档,或浏览源代码。它有助于让你的头脑清醒。也就是说,委托人/所有者等还有各种各样的其他事情发生,所以如果你不习惯 Groovy 的这一方面,在检查时并不总是很清楚事情在哪里被调用。文档中的描述和示例对于一般使用可能更有用。

dependencies是 Project 上的一个方法,其类型为 DependencyHandler。(您经常使用的许多(如果不是大多数)东西都将存在于 Project 上)https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html#dependencies-groovy.lang.Closure- https://docs.gradle.org/current/javadoc/org/gradle/api/artifacts/dsl/DependencyHandler.html

在 dependencies 块中,使用“configuration”和依赖项字符串调用 DependencyHandler 的方法。classpath 这里是用于 buildscript 本身的配置add

将闭包传递给函数是什么意思?

它就是这个意思。Closure 是 Groovy 中的一个类,当你在 Gradle 中编写它时,你正在创建一个新的闭包并将其作为参数传递给一个函数(参见上面的文档,它们在许多方法中作为参数引用)。Groovy 文档可以比我更好地解释它们是如何工作的。你可以把它想象成一个lambda,但它是不一样的。它可以在其所有者(通常是定义它的封闭块/闭包)上执行代码,有时可以针对其分配的委托执行。如果你想弄清楚 Gradle 配置在内部是如何工作的,通常你可以在上面的类上找到你需要的大部分内容(例如,在这种情况下,我们主要是在 DependencyHandler 上调用方法)。但是,书面文档涵盖了最常见的用例。Closure

评论

0赞 laplacedoge 6/18/2022
谢谢 danwalkerdev,我一直在查看 Groovy 的 DSL ref 和委托策略,现在我知道 它被传递给 closure 作为 closure 的委托,以便 closure 可以调用 的方法,但我仍然不知道 from from ,你是什么意思“这里的类路径是一个配置”?它属于哪个对象?再次感谢,我是 Gradle 的新手。DependencyHandleradd()DependencyHandlerclasspath
0赞 danwalkerdev 6/18/2022
Gradle 有一个叫做 configurations 的东西,它代表了一组工件和依赖项。您可以添加自己的,也可以添加插件(例如android,java插件),我认为classpath是buildscript的内置路径。在源代码中,有对 configurationContainer 的引用,因此您可以按名称或引用实际实例(如果有)来获取它们。 在 Project 上可用(正如我所说,很多东西都住在那里:))Configurationconfigurations