从Gradle

时间:2015-05-07 07:45:39

标签: ant gradle build.gradle macrodef

我似乎找不到从Gradle脚本中列出和/或调用Ant Macrodef的方法。关于Macrodefs的Gradle用户指南talks,但没有提供任何示例。有谁能告诉我如何做到这一点?

目前我通过执行ant.importBuild任务导入Ant构建。这可以很好地工作,因为Ant目标显示为Gradle任务。但是,我无法列出和/或调用Ant构建中声明的Ant宏定义。任何人都可以给我答案吗?

2 个答案:

答案 0 :(得分:2)

您的build.xml

<project name="test">

    <macrodef name="sayHello">
        <attribute name="name"/>
        <sequential>
            <echo message="hello @{name}" />
        </sequential>
    </macrodef>

</project>

build.gradle

ant.importBuild 'build.xml'

task hello << {
      ant.sayHello(name: 'darling')
}

让我们测试一下

/cygdrive/c/temp/gradle>gradle hello
:hello
[ant:echo] hello darling

BUILD SUCCESSFUL

Total time: 2.487 secs

答案 1 :(得分:1)

Ant允许不符合Groovy标识符限制的宏名称。 如果是这种情况,显式invokeMethod电话可以提供帮助。 给出:

<project name="test">

<macrodef name="sayHello-with-dashes">
    <attribute name="name"/>
    <sequential>
        <echo message="hello @{name}" />
    </sequential>
</macrodef>

</project>

这将起作用

ant.importBuild 'build.xml'

task hello << {
  ant.invokeMethod('sayHello-with-dashes', [name: 'darling'])
}