Gradle 向子项目添加功能(最佳实践)
Gradle add function to subproject (best practice)
这是一个包含多个部分的问题。
Gradle 似乎有两种定义函数的方法
类型一:
def func1 = { param -> ...}
类型 2
def func2 (OptionalType param){...}
我更喜欢使用类型 2,不仅因为我不知道如何为 func1 的参数定义类型(问题第 1 部分是如何设置 func type 1 参数的类型),还因为它读起来更好。
但我发现我可以做到
subprojects { ext.func1 = func1 }
但是
subprojects { ext.func2 = func2 }
似乎不起作用,因为我更喜欢使用函数类型 2 我想知道如何将它提供给子项目,我相信这一定是可能的,但我找不到正确的语法. (问题第 2 部分)
希望大家帮帮我
您的 func1 不是函数,但您定义了一个闭包并分配给了一个变量。在 Groovy(Gradle 所基于的)中,您可以调用分配了闭包的变量,就像它是一个函数一样,但实际上它不是。
所以要么使用类型一(你也可以在同一个地方使用可选类型 def func1 = { OptionalType param -> ...}
但你不需要,因为 Groovy 是动态类型的。
或者用类型 2 定义函数,然后创建调用类型 2 函数的类型 1 变量。
这是一个包含多个部分的问题。
Gradle 似乎有两种定义函数的方法
类型一:
def func1 = { param -> ...}
类型 2
def func2 (OptionalType param){...}
我更喜欢使用类型 2,不仅因为我不知道如何为 func1 的参数定义类型(问题第 1 部分是如何设置 func type 1 参数的类型),还因为它读起来更好。
但我发现我可以做到
subprojects { ext.func1 = func1 }
但是
subprojects { ext.func2 = func2 }
似乎不起作用,因为我更喜欢使用函数类型 2 我想知道如何将它提供给子项目,我相信这一定是可能的,但我找不到正确的语法. (问题第 2 部分)
希望大家帮帮我
您的 func1 不是函数,但您定义了一个闭包并分配给了一个变量。在 Groovy(Gradle 所基于的)中,您可以调用分配了闭包的变量,就像它是一个函数一样,但实际上它不是。
所以要么使用类型一(你也可以在同一个地方使用可选类型 def func1 = { OptionalType param -> ...}
但你不需要,因为 Groovy 是动态类型的。
或者用类型 2 定义函数,然后创建调用类型 2 函数的类型 1 变量。