Ant - итерация в папке для получения аргументов запуска - PullRequest
2 голосов
/ 29 ноября 2011

У меня есть ant-скрипт, который компилирует мою программу, собирает jar и затем запускает его. Моя программа принимает один аргумент, который является файлом.

В моей цели запуска я хотел бы иметь возможность выполнить jar со всеми файлами, которые находятся в указанной папке, один за другим, в качестве аргумента.

Должен ли я писать все разные случаи вручную, например:

<target name="run" depends="jar">
     <mkdir dir="${output.dir}" />
     <java jar="${myjar}.jar" output="${output.dir}/${test1}" fork="true">
          <arg value="${test.dir}/${test1}" />
     </java>
     <java jar="${myjar}.jar" output="${output.dir}/${test2}" fork="true">
          <arg value="${test.dir}/${test2}" />
     </java>

     #and so on

</target>

или есть ли способ перебрать по моей тестовой директории и спасти меня от написания 20 других случаев?

Спасибо.

Ответы [ 2 ]

1 голос
/ 29 ноября 2011

Я нашел свое решение, используя тег <apply> ( doc ).

Мой скрипт теперь выглядит так, и каждое исполнение выводится в отдельных файлах благодаря тегу <redirector>:

<target name="run" depends="jar">
    <mkdir dir="${output.dir}" />
    <apply executable="java">
         <fileset dir="${test.dir}" />
         <arg value="-jar"/>
         <arg path="${jar.dir}/${myjar}.jar" />
         <srcfile />
         <redirector>
              <outputmapper id="out" type="glob" from="*" to="${output.dir}/*" />
         </redirector>
    </apply>
</target>
0 голосов
/ 29 ноября 2011

Тег foreach в ant-contrib делает то, что вы хотите. Дайте ему набор файлов и наведите его на цель, на которой работает ваш кувшин.

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