2011-10-27 15 views
5

Voglio creare un'attività definita da un macrodef all'interno di un elemento di script. Speravo di scoprire che ci sarebbero state funzioni 'set' corrispondenti a ciascun attributo. Non molta fortuna. C'è qualche altra API per specificare gli attributi?macrodef versus script versus 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

Si sta utilizzando un javascript giusto? E vuoi impostare gli attributi o cosa? Sono un po 'confuso dalla tua domanda. – FailedDev

risposta

5

Probabilmente si può ottenere quello che vuoi utilizzando i metodi della MacroInstance (una sottoclasse di Compito) si otterrà dal metodo createTask per una macro. Questo:

<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 questo quando eseguire:

[echo] attr1=value_1 
+1

+1 Bel trucco :) – FailedDev

+1

Non riuscivo a trovarlo nella documentazione, ma dopo molte prove ed errori, ho determinato (testato su Ant 1.7) che tutti i nomi 'attributo' di' macrodef' ** devono * * essere in minuscolo e non in cammello, ad es '', altrimenti lo script (testato con JavaScript) non riesce con 'sun.org.mozilla.javascript.internal.WrappedException: Wrapped Attributi sconosciuti [attributeOne] ...' - –