Вызов Муравья Макродефа из Градл

Я не могу найти способ перечислить и / или вызвать 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'])
}
Другие вопросы по тегам