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 变量。