gpt4 book ai didi

build.gradle 中的 gradle 任务方法语法

转载 作者:行者123 更新时间:2023-12-01 15:37:35 26 4
gpt4 key购买 nike

我是 gradle 和 groovy 的新手,我正在阅读 Gradle 的 usr 指南,并且对任务方法有一些语法问题:

task intro(dependsOn: hello) {
doLast { println "I'm Gradle" }
}

问题1:在上面的代码中, Project中调用了哪个方法?应用程序接口(interface)?我知道 API 中有四个重载:
Task task(String name, Closure configureClosure);
Task task(Map<String, ?> args, String name, Closure configureClosure);
Task task(Map<String, ?> args, String name) throws InvalidUserDataException;
Task task(String name) throws InvalidUserDataException;

但是 intro(dependsOn: hello)等参数或 copy(type: Copy)让我感到困惑,如果添加括号应该是什么?

问题 2:为什么 << 是 doLast 的简写?方法?我的意思是有一个 leftshift Task 中的方法应用程序接口(interface)?他们之间有什么区别?

问题3:为什么可以使用 tasks.create() build.gradle 中的方法 17.1. Defining tasks ,我没看到 tasks位于 Project 的属性(property)API 或在 AbstractProject源代码。

最佳答案

在这种特殊情况下:

task intro(dependsOn: hello) {
doLast { println "I'm Gradle" }
}

将调用以下方法:
Task task(Map<String, ?> args, String name, Closure configureClosure);

由于 gradle 使用特定的 DSL,因此可能很难说,但是:
  • 第一季度
  • introString name论据
  • dependsOn: hello相当于[dependsOn: hello] (一个 Map )是 Map<String, ?> args
  • { doLast { println "I'm Gradle" } }Closure configureClosure
  • Q2
  • <<doLast 的简写只是为了使它更简洁。您可以使用 doLast , << , leftShift - 全部都是一样。 leftShift被覆盖 - 见 here
  • 第三季度

  • 没有这种方法 tasks但是 getTasks ,见 here .这就是 groovy 的工作原理——如果方法是一个 getter ()get可以省略,所以 project.getTasks()相当于 project.tasks .

    关于build.gradle 中的 gradle 任务方法语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38627258/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com