Gradle / Groovy语法和关键字

时间:2014-04-02 08:49:27

标签: groovy gradle

对Gradle和Groovy都不熟悉我发现自己很难理解build.gradle脚本的语法。

我理解(至少我认为是这样)build.gradle是用作DSL的普通groovy代码,其中关键字在别处定义。

请解释不同的部分。取自教程:

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'
    }
}

e.g。我想我知道 println 是一个功能。我知道引号中的文字是一个字符串。我想花括号中的东西是封闭的。 但什么是发布 / *发行版*?它也是一个字符串吗?它是函数任务的参数吗?为什么我可以在没有引号的hasTask(release)中使用它?

那么:'defaultTasks','task','release','&lt;&lt;','gradle','whenReady',' - &gt;'?

奖金:有没有一种常规的方法可以找到自己?

2 个答案:

答案 0 :(得分:2)

一般来说,你应该不在乎。它是一个DSL,其中诸如“函数任务的参数”之类的术语不应该打扰你。您应该知道的是添加新任务task taskName

如果你真的想深入研究(例如扩展Gradle,实现插件等),Gradle DSL docs是你的朋友。从那里,您可以了解task is a method on Project object

答案 1 :(得分:0)

  

但什么是发布/ 发布?它也是一个字符串吗?它是函数任务的参数吗?为什么我可以在没有引号的hasTask(release)中使用它?

这些是Gradle中的字符串,但不是vanilla Groovy中的字符串。这在this response

中提到
  

那究竟是什么:'defaultTasks','task','&lt;&lt;','gradle','whenReady',' - &gt;'?

这些主要是方法或领域。 字段:

  • project.defaultTasks
  • project.gradle

方法:

  • project.task()
  • task.whenReady()
  • task.leftShift()

->是闭包的核心groovy语法。