2011-10-27 26 views
5

Quiero crear una tarea definida por una macrodef dentro de un elemento de script. Esperaba encontrar que habría funciones 'set' correspondientes a cada atributo. No tal suerte. ¿Hay alguna otra API para especificar los atributos?macrodef versus script contra javascript

var statustask = project.createTask("service-status"); 
statustask.setPath(project.getProperty("path")); 
statustask.setStatusproperty("status"); 
statustask.setTimeout=("1"); // this isn't suppose to take a long time. 
statustask.perform(); 
+1

Está utilizando un javascript ¿verdad? ¿Y quieres establecer los atributos o qué? Estoy un poco confundido de tu pregunta. – FailedDev

Respuesta

5

es probable que pueda lograr lo que desea utilizando métodos de la MacroInstance (una subclase de tareas) se obtendrá a partir del método createTask para una macro. Este:

<macrodef name="my.macro"> 
    <attribute name="attr1" default="NOT SET"/> 
    <sequential> 
     <echo message="[email protected]{attr1}" /> 
    </sequential> 
</macrodef> 

<script language="javascript"><![CDATA[ 
    var macro = project.createTask("my.macro"); 
    macro.setDynamicAttribute("attr1", "value_1"); 
    macro.execute(); 
]]></script> 

Produce esto cuando ejecute:

[echo] attr1=value_1 
+1

+1 Buen truco :) – FailedDev

+1

No pude encontrarlo en la documentación, pero después de mucho ensayo y error, he determinado (probado en Ant 1.7) que todos los nombres 'de atributo 'de' macrodef' ** deben * * sea minúscula y no camello, por ejemplo '', de lo contrario el script (probado con JavaScript) falla con 'sun.org.mozilla.javascript.internal.WrappedException: atributos Wrapped Unknown [attributeOne] ...' - –