Запуск одной команды для нескольких файлов с помощью Ant - PullRequest
3 голосов
/ 12 марта 2012

Я пытаюсь собрать кучу шаблонов руля в один скомпилированный файл с помощью ant.У меня есть несколько папок, каждая из которых содержит около 4 шаблонов, и я хочу собрать их все в один файл.С такими папками:

folder01
  |- templates
       |- f1_01.handlebars
       |- f1_02.handlebars
       |- f1_03.handlebars
       |- f1_04.handlebars
folder02
  |- templates
       |- f2_01.handlebars
       |- f2_02.handlebars
       |- f2_03.handlebars
       |- f2_04.handlebars
build.xml

Я хочу запустить команду:

handlebars **/templates/*.handlebars -f compiled-templates.js

Я пробовал следующее, но, похоже, в выходной js-файл включен только 1 файл.

<macrodef name="handlebars">
    <attribute name="target"/>
    <sequential>
        <apply executable="${handlebars}" failonerror="false">
            <fileset dir="." includes="**/templates/">
                <include name="*.handlebars"/>
            </fileset>
            <arg value="-f compiled-templates.js"/>
        </apply>
    </sequential>
</macrodef>

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

Ответы [ 4 ]

2 голосов
/ 26 ноября 2013

После долгих поисков в stackoverflow и, что более важно, после прочтения документации я нашел это решение, которое работает.

<echo level="info" message="Pre Compiling templates" />
<apply parallel="true" failonerror="true" executable="node">
  <arg value="${webclient.dir.build}/node_modules/handlebars/bin/handlebars" />
  <srcfile />
  <fileset dir="${webclient}/app/templates" includes="**/*.handlebars"/>
  <arg line="-f ${webclient}/app/templates/handlebars.templates.js -m -a" />
</apply>
1 голос
/ 13 марта 2012

попробовать:

...
<arg line="-f compiled-templates.js"/>
...

вместо:

...
<arg value="-f compiled-templates.js"/>
...
0 голосов
/ 14 марта 2012

В итоге я использовал задачу <concat>, чтобы создать один файл из всех шаблонов и запустить исполняемый файл один раз для этого файла.

<concat destfile="all.handlebars" append="true">
    <fileset dir="." includes="**/templates/">
        <include name="*.handlebars"/>
    </fileset>
</concat>
0 голосов
/ 13 марта 2012

Используйте задачу <script>, где вы можете встроить код Javascript или Groovy, который выполняет итерацию.Рекомендуется вызывать некоторые короткие сценарии в качестве помощи при таких проблемах, поскольку они обычно более выразительны, чем хитрые нотации условия XML-цикла.

...