Apply-Task помещает целевой файл в неправильный каталог - PullRequest
1 голос
/ 23 марта 2011

Я собираюсь создать цель Apache Ant, которая сжимает все мои файлы .js с помощью gzip.На данный момент я пришел к следующему:

<target name="compress-js" description="Compressed JS files">
    <echo>Compressing JS files...</echo>
    <apply executable="gzip" parallel="false">
        <arg value="-c" />
        <arg value="--best" />
        <srcfile />
        <arg value=">" />
        <targetfile suffix=".${extension}" />
        <fileset dir="${js.dir}" includes="**/*.js" />
        <mapper type="identity" />
    </apply>
    <echo>OK!</echo>
</target>

Чтение файлов работает правильно, но сгенерированный целевой файл имеет неправильный путь.

Учитывая, что $ {js.dir}: / var /htdocs / js и я запускаю свою цель ant в каком-то другом каталоге, скрипт выше производит следующую команду оболочки:

gzip -c /var/htdocs/js/a/b/1.js > ./a/b/1.js

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

gzip -c /var/htdocs/js/a/b/1.js > /var/htdocs/js/a/b/1.js

Может кто-нибудь сказать мне, как это сделать?

Ответы [ 2 ]

1 голос
/ 25 марта 2011

Используйте что-то вроде =

<tar destfile="./your.tar.gz" compression="gzip">
 <tarfileset dir="${js.dir}">
  <include name="**/*.js"/>
 </tarfileset>
 </tar>
</target>

см. Руководство по Ant для задачи tar

Помимо того, что есть также задача-обертка для задачи компрессора YUI, вотподробное описание, как его использовать = Сжатие JavaScript и CSS как часть вашего процесса сборки

1 голос
/ 23 марта 2011

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

<target name="compress-js">
  <apply executable="gzip" parallel="false">
    <srcfile/>
    <fileset dir="${js.dir}" includes="**/*.js"/>
  </apply>
  <move todir="${js.dir}">
    <fileset dir="${js.dir}">
       <include name="**/*.gz"/>
    </fileset>
    <globmapper from="*.gz" to="*"/>
  </move>
</target>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...