В Ant я пытаюсь выполнить простую задачу: если несколько файлов модифицированы, компилятор должен запускаться. Я видел множество решений, использующих OutOfDate, UpToDate и Modified. Я не хочу использовать OutOfDate и UpToDate, потому что я не смогу использовать эту задачу, если файлы были изменены в тот же день. Я могу использовать измененный, но нет способа вызвать другую задачу - мою задачу компилятора из задачи модификатора. Есть ли еще какое-то другое решение?Выполнение задачи муравья только при изменении файла
1
A
ответ
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
Смежные вопросы
- 1. Запретить выполнение задачи jar при изменении только манифеста
- 2. Выполнение функции? работает только при изменении размера
- 3. Выполнение финговой цели при изменении файла
- 4. Task.WaitAll() при выполнении задачи только задерживает выполнение исходной задачи?
- 5. Выполнять тесты Karma только при изменении файла
- 6. SSIS Выполнение задачи процесса Подвешивание при изменении стандартной ошибки
- 7. Нант-эквивалент задачи замены муравья
- 8. Флаг поля при изменении задачи задачи AtTask
- 9. Выполнение задачи maven first thing
- 10. Gradle: вызов муравья из пользовательской задачи
- 11. Rx и задачи - отменить выполнение задачи при создании новой задачи?
- 12. Выполнение муравья зависит от maven
- 13. Выполнение действия при изменении tabBarController
- 14. Выполнение команды wmic в цели муравья
- 15. Выполнение скрипта муравья с измененным именем
- 16. Цель муравья зависит от задачи gulp
- 17. Выполнение при изменении форматирования источника?
- 18. Выполнение действия при изменении переменной
- 19. Выполнение задачи только при запуске приложения для Android
- 20. Выполнение задачи асинхронного вызова Gulp, но только при необходимости
- 21. Выполнение задачи в TestNG при генерации файла testng-result.xml
- 22. Выполнение задачи SQL при импорте файла Excel на SQL-сервер
- 23. необязательные задачи муравья не доступны на CentOS
- 24. Netbeans 6.7 пользовательская переменная для задачи муравья
- 25. Как обеспечить выполнение одной задачи только после завершения другой задачи
- 26. Обновление Hbase только при изменении
- 27. Gulp: запустить jshint при изменении одного файла
- 28. Выполнение муравья Ant зависит от местоположения атрибута
- 29. Выполнение задачи рейка из файла войны
- 30. Выполнение .bat-файла из задачи-накладчика
OutOfDate не ограничивается файлы, измененные до сегодняшнего дня. Он будет определять, являются ли целевые файлы секундами, днями или годами устаревшими. –
@ChadNouis Я не знал об этом, но если не ошибаюсь OutOfDate от ant-contrib, я не хочу использовать ant-contrib. Спасибо, можете ли вы придумать какое-либо другое решение? – Madz