Запуск сценария perl для нескольких файлов с использованием Ant - PullRequest
0 голосов
/ 22 июня 2011

У меня есть набор файлов, для которых я хочу запустить скрипт perl.Проблема в том, что они не находятся в одном каталоге.Фактически все они являются частью упорядоченной, но сложной иерархии каталогов.

Я написал скрипт Bash, который делает то, что я хочу:

if [ ${HOME:+1} ]; then
    for A in ${HOME}/a/b/*; do
        for B in ${A}/c/*; do
            for C in ${B}/*; do
                if [ -f $C/somefile ]; then
                    some_perl_script $C/somefile;
                fi
            done;
        done;
    done;
fi

Так что это работает, и это не слишком сложно.Однако мне нужно, чтобы эта функциональность была доступна с помощью Ant.Конечно, я мог бы просто вызвать этот сценарий из Ant, но я хочу знать, есть ли у Ant возможность сделать это в первую очередь, что кажется более простым способом выполнения действий.По сути, я хочу что-то похожее на следующий build.xml:

<project name="application" basedir=".">
    <target name="apply_to_all">
      <exec executable="perl" dir="${basedir}">
        <arg value="some_perl_script.pl"/>
        <arg value="a/b/**/c/**/**/somefile"/>
      </exec>
    </target>
</project>

Я нашел это SO сообщение .Тем не менее, я хотел бы сделать это без ant-contrib.

1 Ответ

3 голосов
/ 23 июня 2011

Используйте задачу применения, чтобы вызвать ваш perlscript для всех файлов, включенных во вложенные наборы файлов:

<apply executable="perl">
  <arg value="-your args.."/>
  <fileset dir="/some/dir">
    <patternset>
      <include name="**/*.pl"/>
    </patternset>
  </fileset>
  <fileset refid="other.files"/>
</apply>

При желании использовать атрибут parallel = true, означает запуск команды только один раз, добавление всех файлов в качестве аргументов. Если false, команда будет выполняться один раз для каждого файла, по умолчанию = false => см. Руководство по применению Ant
Вы можете использовать включить / исключить шаблоны и один или несколько наборов файлов. F.E. Вы можете использовать **/*.pl для все ваши скрипты на Perl.

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