Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Gradle调用Ant Macrodef_Ant_Gradle_Build.gradle_Macrodef - Fatal编程技术网

从Gradle调用Ant Macrodef

从Gradle调用Ant Macrodef,ant,gradle,build.gradle,macrodef,Ant,Gradle,Build.gradle,Macrodef,我似乎找不到从Gradle脚本中列出和/或调用Ant宏定义的方法。Gradle用户指南介绍了Macrodefs,但此处未提供示例。有人能告诉我如何做到这一点吗 目前,我通过执行Ant.importBuild任务导入Ant构建。当蚂蚁目标显示为渐变任务时,这种方法效果很好。但是,我无法列出和/或调用Ant构建中声明的Ant宏定义。有人能给我提供答案吗?你的build.xml <project name="test"> <macrodef name="sayHello"&

我似乎找不到从Gradle脚本中列出和/或调用Ant宏定义的方法。Gradle用户指南介绍了Macrodefs,但此处未提供示例。有人能告诉我如何做到这一点吗


目前,我通过执行Ant.importBuild任务导入Ant构建。当蚂蚁目标显示为渐变任务时,这种方法效果很好。但是,我无法列出和/或调用Ant构建中声明的Ant宏定义。有人能给我提供答案吗?

你的
build.xml

<project name="test">

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

</project>
让我们测试一下

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

BUILD SUCCESSFUL

Total time: 2.487 secs

Ant允许使用不符合Groovy标识符限制的宏名称。 如果是这种情况,显式
invokeMethod
call会有所帮助。 鉴于:


这会奏效的

ant.importBuild 'build.xml'

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

任务您好,解决方案对您有效吗?如果是,您可能会接受它。虽然此解决方案不能完全解决我的问题,但这是/a在Gradle中调用Ant macrodefs的方法。我找不到调用宏定义的方法是因为我的宏定义名称包含几个“-”字符,Gradle无法处理。你知道列出所有加载的宏定义的方法吗?@HELOX不,我没有找到列出它们的方法
<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'])
}