2011-10-27 19 views
5

Chcę utworzyć zadanie zdefiniowane przez makrodefę w elemencie skryptu. Miałem nadzieję, że uda się znaleźć "ustawione" funkcje odpowiadające każdemu atrybutowi. Bez takiego szczęścia. Czy jest jakiś inny interfejs API do określania atrybutów?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

Używasz javascript prawo? A chcesz ustawić atrybuty lub co? Jestem trochę zmieszany z twojego pytania. – FailedDev

Odpowiedz

5

Prawdopodobnie można osiągnąć to, co chcesz, za pomocą metod MacroInstance (podklasa zadania) dostaniesz od sposobu createTask do makro. To:

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

Wytwarza to podczas uruchamiania:

[echo] attr1=value_1 
+1

+1 Dobra sztuczka :) – FailedDev

+1

Nie mogłem znaleźć tego w dokumentacji, ale po wielu próbach i błędach ustaliłem (przetestowałem na Ant 1.7), że wszystkie "atrybutowe" nazwy 'macrodef' ** muszą * * być małymi literami, a nie wielbłądami, np '", inaczej skrypt (testowany przy użyciu JavaScript) nie powiedzie się z 'sun.org.mozilla.javascript.internal.WrappedException: Wrapped Unknown attributes [attributeOne] ...' - –