我在Gradle文档中读到了Learning more about build scripts页的下面一段:
当Gradle执行Groovy构建脚本(.gradle)时,它会将脚本编译成实现Script的类。因此,构建脚本可以访问Script接口声明的所有属性和方法。
我不明白这意味着什么。据我所知,在Java中,当类实现接口时,它需要实现接口声明的方法。这个怎么装在这里?
我在Gradle文档中读到了Learning more about build scripts页的下面一段:
当Gradle执行Groovy构建脚本(.gradle)时,它会将脚本编译成实现Script的类。因此,构建脚本可以访问Script接口声明的所有属性和方法。
我不明白这意味着什么。据我所知,在Java中,当类实现接口时,它需要实现接口声明的方法。这个怎么装在这里?
1条答案
按热度按时间bq8i3lrv1#
Gradle在幕后做了很多你看不到的domain-specific language(DSL)的“魔术”。
您在Gradle文件中看到的是一个不同于传统类的脚本,因此您的类规则本身并不适用。
Gradle的核心是用Java编写的。您可以通过浏览源代码here来自己看到这一点。Gradle特别针对Groovy DSL实现了各种Groovy语言功能,例如runtime and compile-time metaprogramming。
特别是对于Groovy DSL,Gradle的
Script
类在内部实现了Groovy的Script
类,如下所示。Groovy的script类声明:Groovy编译器将为您编译类,并将脚本体复制到
run
方法中因此,Gradle脚本的全部内容都放在
run
方法中:字符串
型
这比这要多得多,但这是它的一般要点。