2012-06-13 3 views
1

В Ant я пытаюсь выполнить простую задачу: если несколько файлов модифицированы, компилятор должен запускаться. Я видел множество решений, использующих OutOfDate, UpToDate и Modified. Я не хочу использовать OutOfDate и UpToDate, потому что я не смогу использовать эту задачу, если файлы были изменены в тот же день. Я могу использовать измененный, но нет способа вызвать другую задачу - мою задачу компилятора из задачи модификатора. Есть ли еще какое-то другое решение?Выполнение задачи муравья только при изменении файла

+1

OutOfDate не ограничивается файлы, измененные до сегодняшнего дня. Он будет определять, являются ли целевые файлы секундами, днями или годами устаревшими. –

+0

@ChadNouis Я не знал об этом, но если не ошибаюсь OutOfDate от ant-contrib, я не хочу использовать ant-contrib. Спасибо, можете ли вы придумать какое-либо другое решение? – Madz

ответ

6

Использование <uptodate> с следующей <antcall> условному <target> даст вам то, что вы ищете:

<project name="ant-uptodate" default="run-tests"> 
    <tstamp> 
     <format property="ten.seconds.ago" offset="-10" unit="second" 
      pattern="MM/dd/yyyy hh:mm aa"/> 
    </tstamp> 

    <target name="uptodate-test"> 
     <uptodate property="build.notRequired" targetfile="target-file.txt"> 
      <srcfiles dir= "." includes="source-file.txt"/> 
     </uptodate> 

     <antcall target="do-compiler-conditionally"/> 
    </target> 

    <target name="do-compiler-conditionally" unless="build.notRequired"> 
     <echo>Call compiler here.</echo> 
    </target> 

    <target name="source-older-than-target-test"> 
     <touch file="source-file.txt" datetime="${ten.seconds.ago}"/> 
     <touch file="target-file.txt" datetime="now"/> 
     <antcall target="uptodate-test"/> 
    </target> 

    <target name="source-newer-than-target-test"> 
     <touch file="target-file.txt" datetime="${ten.seconds.ago}"/> 
     <touch file="source-file.txt" datetime="now"/> 
     <antcall target="uptodate-test"/> 
    </target> 

    <target name="run-tests" 
     depends="source-older-than-target-test,source-newer-than-target-test"/> 
</project> 
+0

Большое спасибо за ваш ответ, но я думаю, что я вас смутил, и, следовательно, это не то, что я искал. Есть ли способ получить время последнего изменения файла в ant? – Madz

Смежные вопросы