了解gradle任务定义中的groovy语法
我是Gradle和Groovy的新手,在定义gradle任务时,试图了解常规级别发生的事情。
task hello { println "configuring task hello" doLast { println "hello there" } }
从阅读“Gradle In Action”一书,我知道task hello {}
实际上是对groovy Project
接口的task()
方法的调用。 在页77上它显示在Project
接口上有4个称为任务的方法
task(args: Map<String,?>, name:String) task(args: Map<String,?>, name:String, c:Closure) task(name: String) task(name: String, c:Closure)
我明白{}
是封闭体。
我不明白的是,groovy是如何根据https://stackoverflow.com/a/25592665/438319解释hello
在task hello { }
有一个groovy编译器插件,将task hello { }
转换为task('hello', { })
我的问题:
-
我在哪里可以find有关进行转换的Gradle Groovy编译器插件的信息?
-
Gradle脚本是Groovy程序在技术上是不正确的,因为Gradle以某种方式扩展了Groovy编程语言?
-
有没有办法让
gradle
命令打印出编译器插件运行后生成的基本groovy代码?
Gradle使用AST Transformations来扩展Groovy语法。 您提到的任务定义语法只是Gradle应用的转换之一。 你可以在这里find这个转换的实现。 回答你的具体问题:
-
Gradle所应用的单个转换并不是我所知道的任何地方。 然而,你可以在上面的链接的相同包中查看其他类。
-
Gradle脚本支持一组超级Groovy语法。 任何有效的Groovy在Gradle脚本中也是有效的,然而,Gradle脚本不一定(并且通常不是)有效的“默认”Groovy。
-
没有办法获得等效的Groovy代码的输出,因为它是在内存中操作的实际的抽象语法树。
- Android工作室,Gradle和NDK
- Gradle构build脚本依赖关系
- Gradle任务 – 将parameter passing给Java应用程序
- Android Studio 3.0风味维度问题
- com.android.build.transform.api.TransformException
- 无法创build该模块:未find相关的gradleconfiguration。 请重新导入Gradle项目并重试
- 错误:与依赖项冲突com.google.code.findbugs:jsr305'
- 如何使用Gradle运行JUnittesting?
- 通过命令行构buildAndroid Studio应用程序