У меня есть цель в ANT, которая должна запускать компилятор для данного набора файлов дважды: один раз для отладки, один раз для производства. Я хочу запускать компилятор только в том случае, если исходный файл изменился, поэтому я установил селектор <modified>
. Однако, поскольку мне нужно, чтобы для заданного измененного файла выполнялись задачи отладки и prod, я установил для свойства update
значение false при первом запуске. У меня есть что-то вроде:
<!-- Do the debug build -->
<apply executable="compiler">
<fileset dir="${js.src.dir}" includes="*.js">
<!-- don't update the cache so the prod build below works -->
<modified update="false"
seldirs="true"
cache="propertyfile"
algorithm="digest"
comparator="equal">
<param name="cache.cachefile" value="cache.properties"/>
<param name="algorithm.algorithm" value="md5"/>
</modified>
</fileset>
<args for debug build/>
</apply>
<!-- Do the production build -->
<apply executable="compiler">
<fileset dir="${js.src.dir}" includes="*.js">
<modified update="true"
seldirs="true"
cache="propertyfile"
algorithm="digest"
comparator="equal">
<param name="cache.cachefile" value="cache.properties"/>
<param name="algorithm.algorithm" value="md5"/>
</modified>
</fileset>
<args for prod build/>
</apply>
Однако это не работает. Мой первый вызов компилятору заканчивается обновлением кэша в любом случае, а второй вызов пропускается. Что мне здесь не хватает?
ОБНОВЛЕНИЕ : я обошел проблему, используя вместо этого селектор <depend>
, но все же любопытно, как сделать то же самое, используя <modified>