对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;'?
奖金:有没有一种常规的方法可以找到自己?
答案 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;'?
这些主要是方法或领域。 字段:
方法:
->
是闭包的核心groovy语法。