使用其他 gradle 文件中的 Gradle 函数

Mar*_*ies 5 maintainability gradle android-studio

我想将 300 行 build.gradle 逻辑地拆分为多个构建文件,以使其更易于维护和扩展。

正如我所注意到的,可以将 gradle 任务拆分为多个文件并将它们用于:

apply from: "myGradleFile"
Run Code Online (Sandbox Code Playgroud)

遗憾的是,通过这种方法,我无法访问第二个构建脚本中定义的函数

是否也可以将 Gradle 函数拆分为多个文件?

例子:

假设我的默认 build.gradle带有一个使用函数的任务

task doSomethingWithMyFunction {
    myFunction()
}
Run Code Online (Sandbox Code Playgroud)

现在我有functions.gradle

def myFunction(){
}
Run Code Online (Sandbox Code Playgroud)

所以我想从build.gradle访问functions.gradle中定义的myFunction

Opa*_*pal 4

这是不可能用函数来完成的,但如果你把函数变成闭包,下面的例子就会很好地工作:

哈哈.gradle

project.ext.lolFunction = {
   println it
}
Run Code Online (Sandbox Code Playgroud)

构建.gradle

apply from: 'lol.gradle'

ext.lolFunction(1)                                                             
Run Code Online (Sandbox Code Playgroud)