Устранение неполадок "не удалось создать задачу или тип foreach" при использовании <foreach> - PullRequest
13 голосов
/ 09 апреля 2010

Я пытаюсь использовать цикл foreach в сценарии Ant, но получаю сообщение: Проблема: не удалось создать задачу или ввести foreach Причина: имя не определено.

Я не понимаю, почему это не работает. Это не сторонняя библиотека. Это стандартное задание, которое будет частью последней версии 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>

Ответы [ 5 ]

20 голосов
/ 09 апреля 2010

Это стандартная задача, которая будет часть последней версии Ant (1,8).

Нет, это не так. По крайней мере, я не могу найти его в списке основных и дополнительных задач в руководстве ant . Похоже, что он является частью проекта ant-contrib и поэтому должен быть установлен отдельно.

4 голосов
/ 08 августа 2011

Вы когда-нибудь рассматривали <script>? В этом теге вы можете использовать некоторые известные скриптовые языки, такие как javascript и python. они также могут взаимодействовать с Project, Task ... Object of Ant, что означает, что вы можете устанавливать / получать свойства и даже выполнять другую задачу. посмотрите на этот пример из книги "Java-разработка с муравьем"

    <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 голосов
/ 17 августа 2011

Вы не определили цель для вызова:

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

альтернативно:

<for param="instance" list="a,b,c,d,e" >
  <sequential>
    <!-- Do Something with @{instance} -->
  </sequential>
</for>
3 голосов
/ 13 апреля 2010

У меня была такая же проблема при затмении с различными версиями муравья.

Добавьте это в свой код БЕЗ добавления параметров в eclipse (не указывайте путь к классу):

<taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="/path/to/ant-contrib/ant-contrib-1.0b3.jar"/>
3 голосов
/ 09 апреля 2010

Я не могу найти задачу foreach в руководстве по Ant 1.8 - где это? Я знаю задачу только из ant-contrib, и для этого требуется указать атрибут 'target': http://ant -contrib.sourceforge.net / tasks / tasks / foreach.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...