如何在 build.gradle 脚本中调用 DependencyHandler.add

Bow*_*Jin 5 groovy gradle

因此,build.gradle 文件基本上是一个 Groovy 闭包,其委托是一个 Project 对象,并且它具有诸如依赖项和存储库之类的方法,我们可以向其传递其他闭包。怎么会出现这样的声明:

\n\n
dependencies{\n  testCompile 'junit:junit:4.12'\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

触发 DependencyHandler.add\xe2\x80\x8b(String configurationName, Object dependencyNotation) 调用?这是 Groovy 的一些特殊功能吗?

\n

lan*_*ava 1

在评论部分中,我建议对 Groovy 脚本中的一些常见“魔法”进行解释

在 Gradle 的早期版本中,他们使用methodMissing来拦截丢失的方法。查看最近的来源,我相信他们现在正在使用 Groovy 的一些动态类功能来实现类似的行为。

如果你想追溯 Gradle 源代码中的魔力,你应该看看