Вызов Муравья Макродефа из Градл
Я не могу найти способ перечислить и / или вызвать Ant Macrodef из моего скрипта Gradle. Руководство пользователя Gradle рассказывает о Macrodefs, но нигде не дает примера. Может ли кто-нибудь сказать мне, как это сделать?
На данный момент я импортирую сборку Ant, выполнив задачу ant.importBuild. Это прекрасно работает, так как цели Ant отображаются как задачи Gradle. Однако я не могу перечислить и / или вызвать Ant Macrodefs, указанные в сборке Ant. Кто-нибудь может дать мне ответ?
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
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'])
}