Apache Ant: Попытка использовать списки карт для аргументов, используя вложенные циклы for. Что мне ДЕЙСТВИТЕЛЬНО делать? - PullRequest
1 голос
/ 12 мая 2011

Итак, у меня есть список $ {locales} и $ {externs}, и я пытаюсь это сделать.Это не работаетМуравей говорит, что java doesn't support the nested "for" element. Я подозреваю, что мой подход неверен.Как я должен пытаться сделать это?

<for list="${locales}" param="locale">
  <sequential>
    <java jar="whatever.jar" fork="true">
      <for list="${externs}" param="extern-file">
        <arg line='-f "--externs=${extern_dir}/@{extern-file}"' />
      </for>
      <arg line="... more stuff" />
    </java>
  </sequential>
</for>

Ответы [ 2 ]

2 голосов
/ 13 мая 2011

Ant командная строка line args поддерживает префиксы и суффиксы, которые могут помочь в этом.

Если ${externs} - это список, разделенный запятыми, вам нужно разделить его пробелами, возможно, используя ant-contrib propertyregex task .

В общих чертах:

<propertyregex property="externs.arg"
               input="${externs}"
               regexp="," replace=" " />

<for list="${locales}" param="locale">
  <sequential>
    <java jar="whatever.jar" fork="true">
      <arg line="${externs.arg}"
           prefix='-f "--externs=${extern_dir}/'
           suffix='"' />
      <arg line="... more stuff" />
    </java>
  </sequential>
</for>
2 голосов
/ 13 мая 2011

Вот несколько альтернативных вариантов, которые вы могли бы рассмотреть.

  1. Реализуйте пользовательскую задачу Ant, чтобы сделать то, что вам нужно.

  2. Если у вас есть Java-код, который вы вызываете, обновите его, чтобы он более соответствовал вашим требованиям, например,

    2,1. Проходящий список локалей и экстерьеров.

    2,2. Принятие ввода из файла или стандартного ввода (оба из которых вы можете писать из Ant)

  3. Если у вас нет Java-кода, реализуйте свой собственный скрипт или Java-код, чтобы предоставить адаптер от чего-то простого для передачи из Ant в требуемые аргументы цели.

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