groovy - Gradle/Groovy语法和关键字

标签 groovy gradle

作为Gradle和Groovy的新手,我发现自己很难理解build.gradle脚本的语法。

我了解(至少我是这样认为的)build.gradle是用作DSL的普通代码,在其他地方定义了关键字。

请解释一下不同的部分。摘自教程:

defaultTasks 'distribution'

task distribution << {
    println "We build the zip with version=$version"
}

task release(dependsOn: 'distribution') << {
    println 'We release now'
}

gradle.taskGraph.whenReady {taskGraph ->
    if (taskGraph.hasTask(release)) {
        version = '1.0'
    } else {
        version = '1.0-SNAPSHOT'
    }
}

例如我想我知道println是一个函数。我知道引号中的文本是字符串。我猜花括号中的内容是一个结束符。
但是什么是发布/*发行*?它也是一个字符串吗?它是功能任务的参数吗?为什么我可以在hasTask(release)中使用它而不使用引号?

那么到底是什么:'defaultTasks','task','release','<<','gradle','whenReady','->'?

奖励:有一种怪异的方式来发现自己吗?

最佳答案

通常,您无需理会。这是一种DSL,其中“功能任务的参数”之类的术语不应该困扰您。您应该知道添加新任务是task taskName

如果您真的想挖掘(例如用于扩展Gradle,实现插件等),Gradle DSL docs是您的 friend 。从那里,您可以了解到 task is a method on Project object

关于groovy - Gradle/Groovy语法和关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22806093/

相关文章:

android - 带参数的Gradle任务

java - 如何使用 RestTemplate 转发大文件?

java - 如何为 gmaven 插件设置 JDK 版本?

gradle - 如何使用gradle设置系统属性?

intellij-idea - 为什么 gradle idea 插件配置类路径以使用未处理/源测试资源而不是过滤/生成的资源

java - 如何为返回 json 对象的字符串表示形式的函数编写常规测试用例?

java - 如何调用groovy类中接口(interface)的默认方法

android - 在Android Project中导入Gradle但未建立一些jar依赖项

java - Android Studio 4.0:构建失败|请检查您是否安装了Windows Universal C Runtime

android - CocoaPods 之类的 Android Studio 解决方案