Gradle - 使用 Ant 中的函数

Gradle - using a function from within Ant

我有一个 Gradle 脚本,其中很少调用 XJC 以从 XSD.

生成 JAXB 类

我想我可以参数化这些调用并重用公共代码。

所以我创建了一个函数:

ext.generateJaxbClasses = { HashMap params ->
    project.ant {
        ...

然后我想用它:

task genJaxb {

    ext.generic = [
        schema: "..."
    ]

    doLast() {
        ext.generateJaxbClasses(jaxbSetA)
        ext.generateJaxbClasses(jaxbSetB)
    }

但是我得到这个错误:

> No signature of method: org.gradle.internal.extensibility.DefaultExtraPropertiesExtension.generateJaxbClasses() is applicable for argument types: (LinkedHashMap) values: [[...]]

如何在任务定义中使用函数?

使用project.ext.generateJaxbClasses(jaxbSetA)

在任务中使用 ext 解析为在任务的扩展容器中搜索 属性。


ExtensionAware

我建议在项目中使用实际的免费功能而不是使用扩展,因为它会导致这种挫败感。

def generateJaxbClasses(HashMap params) {
    project.ant {...}
}