2011-10-27 4 views
5

Я хочу создать задачу, определенную макродефом внутри элемента скрипта. Я надеялся найти, что будут функции «set», соответствующие каждому атрибуту. Нет такой удачи. Есть ли другой API для указания атрибутов?macrodef по сравнению с скриптом в сравнении с 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

Вы используете яваскрипт право? И вы хотите установить атрибуты или что? Я немного смущен от вашего вопроса. – FailedDev

ответ

5

Вы, вероятно, может достичь того, чего вы хотите, используя методы MacroInstance (подкласс задачи) вы получите от метода createTask для макроса. Это:

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

Производит это при запуске:

[echo] attr1=value_1 
+1

+1 Nice trick :) – FailedDev

+1

Я не смог найти его в документации, но после долгих проб и ошибок, я определил (протестировал Ant 7), что все имена 'attribute'' macrodef' ** должны быть * * быть нижним регистром, а не верблюжьим футляром, например '', иначе скрипт (протестированный с помощью JavaScript) завершится неудачей с 'sun.org.mozilla.javascript.internal.WrappedException: Wrapped Unknown attributes [attributeOne] ...' - –

Смежные вопросы