2010-04-09 16 views
13

Próbuję użyć pętli foreach w skrypcie Ant, ale pojawia się komunikat: Problem: nie udało się utworzyć zadania lub wpisać foreach Przyczyna: Nazwa jest niezdefiniowana .Rozwiązywanie problemów "nie udało się utworzyć zadania lub wpisz foreach" podczas korzystania z <foreach>

Nie rozumiem, dlaczego to nie działa. To nie jest biblioteka stron trzecich. Jest to standardowe zadanie, które będzie częścią najnowszej wersji Ant (1.8).

<target name="parse"> 
    <echo message="The first five letters of the alphabet are:"/> 

    <foreach param="instance" list="a,b,c,d,e"> 

    </foreach> 
</target> 

Odpowiedz

20

Jest to standardowe zadanie to byłoby część najnowszej wersji Ant (1.8).

Nie, nie jest. Przynajmniej nie mogę go znaleźć na liście podstawowych i opcjonalnych zadań w ant manual. Wydaje się być częścią ant-contrib project i dlatego należy zainstalować osobno.

+0

Aktualizacja do 1.9 [z 1,7] wydawało się to naprawić dla mnie [w tym przypadku musiałem ustawić ANT_HOME na mój katalog mrówki 1.9, to działa] – rogerdpack

3

Miałem ten sam problem w czasie zaćmienia z różnymi wersjami ant.

Dodaj to do kodu bez dodawania parametrów zgodnie zaćmienia (nie określają żadnej ścieżki klasy):

<taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="/path/to/ant-contrib/ant-contrib-1.0b3.jar"/> 
+0

Kiedy mówię różne wersje: tj. 1.6 i 1.7 ...^_^ale najpierw spróbuj tego jako trzecia impreza. – julia2020

4

czy kiedykolwiek za <script>? w tym znaczniku możesz użyć znanego języka skryptowego, takiego jak javascript i python. mogą również wchodzić w interakcję z Projektem, Zadaniem ... Obiektem Ant, co oznacza, że ​​możesz ustawić/uzyskać właściwości, a nawet wykluczyć inne zadanie. spojrzeć na ten przykład, który pochodzi z książki "Java Development z mrówki"

<project name="script_example" default="test-random"> 
     <description> 
     Use a script task to generate a random number, then 
     print it 
     </description> 
     <target name="random"> 
     <script language="javascript"><![CDATA[ 
      //NB: an unqualified Math is the JavaScript object 
      var r=java.lang.Math.random(); 
      var num = Math.round(r*10); 
      project.setNewProperty("random", num); 
      self.log("Generated random number " + num, project.MSG_DEBUG); 
     ]]> 
     </script> 
     </target> 
     <target name="test-random" depends="random"> 
     <echo>Random number is ${random}</echo> 
     </target> 
    </project> 
3

Nie określono cel zadzwonić:

<foreach param="instance" list="a,b,c,d,e" target="processListItem" /> 

alternatywnie:

<for param="instance" list="a,b,c,d,e" > 
    <sequential> 
    <!-- Do Something with @{instance} --> 
    </sequential> 
</for> 
Powiązane problemy