2015-05-07 3 views
4

Я не могу найти способ перечислить и/или вызвать Ant Macrodef из моего сценария Gradle. Руководство пользователя Gradle talks о Macrodefs, но не содержит примера в любом случае. Может ли кто-нибудь сказать мне, как это сделать?Вызов Ant Macrodef из Gradle

На данный момент я импортирую сборку Ant, выполнив задачу ant.importBuild. Это прекрасно работает, поскольку цели Ant отображаются как задачи Gradle. Однако я не могу перечислить и/или назвать Ant Macrodefs, указанные в сборке Ant. Может ли кто-нибудь дать мне ответ?

+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 
+0

Хотя это решение не полностью решает мою проблему, это способ/способ вызова макросов Ant в Gradle. Причина, по которой я не мог найти способ вызова макродефектов, заключалась в том, что мое имя макродеформа содержит несколько символов «-», с которыми Gradle не справляется. – HELOX

+0

Знаете ли вы способ перечислить все загруженные макродефы? – HELOX

+0

@HELOX Нет, я не нашел способ их перечислить –

0

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']) 
}