У меня есть скрипт сборки, который выполняет ряд действий (свести к минимуму javascript, загрузить на amazon s3 и т. Д.). Задача минимизации ANT работает только на javascript, который я модифицировал, и игнорирует остальные (я не писал этот скрипт). Я хотел бы сделать что-то подобное для задачи amazon s3, в которую загружается только обновленный контент. Любые выводы о том, как это сделать, будут очень признательны.Как выполнить ANT-задачи только для файлов, которые были изменены
ответ
В общем случае вы можете сделать это для задач, имеющих исходные и целевые файлы, используя File Mappers, так что задача применяется только к исходным файлам, которые были изменены. Я не знаю, есть ли способ сделать что-то, где Ant не может видеть файлы назначения, такие как загрузка.
Если вы не хотите изменять/переписывать задачу S3 и хотите оставаться чисто в XML, вы можете использовать Uptodate Task и теневую директорию для имитации этого поведения - например, сохраните копию своих загрузок (потенциально огромную) или просто пустой файл с датой создания в последний раз, когда вы загрузили. Примеры на странице руководства должны содержать много подсказок, куда идти.
Конечно, вы можете написать свою собственную задачу S2Uptodate, подключив ее к S3, чтобы сравнить даты. Предпочтительное решение зависит от количества файлов (например, нескольких огромных, в которых вы могли бы проверить каждый из них в отдельной операции или почти бесконечное количество маленьких, которые вы бы решали по-разному).
Вы также может быть вдохновлен использованием и элементами Xjc task, хотя это, конечно, работает исключительно с локальными файлами.
Вы можете выбрать набор файлов с измененным тегом даты. Модифицированный тег безумно мощный, поэтому проверьте его : Ant Selectors - Modified
Чтобы сообщить, что изменилось, он может хранить кеш в файле свойств, который обновляется после каждой успешной сборки, если только вы не использовать атрибут delayupdate - так что, возможно, чтобы проверить это, вы можете иметь:
<param name="commitUpdate" value="false" />
[...]
<ftp ...>
<fileset dir="src">
<modified delayupdate="${commitUpdate}" />
</fileset>
</ftp>
И, конечно, вы можете установить эту commitUpdate с помощью командной строки паров или что-то.
Возможно, вы захотите рассмотреть задачу OutOfDate Ant, предоставленную библиотекой Ant-contrib. Это позволяет вам выполнить последовательную/параллельную задачу для каждого исходного файла в наборе файлов. Вы можете применить файл mapper для определения целевых файлов для проверки исходных файлов, так что только файлы, которые были изменены, запускают определенную последовательную/параллельную задачу.
Проверить эту SO нить:
How to execute an Ant task only when source files have been modified?
В случае, если задачи не включают набор файлов, как, селектора мусора не помогают. –
- 1. Как обрабатывать только файлы, которые были изменены?
- 2. Объединение файлов, которые были изменены двумя разработчиками
- 3. Получить только строки, которые были изменены
- 4. Список файлов, которые были изменены/изменены сегодня одним пользователем
- 5. Grunt часы: загружать только файлы, которые были изменены
- 6. Выделите строки, которые были изменены
- 7. Как обновить только те поля, которые были изменены?
- 8. Как файлы файлов хэша не были изменены?
- 9. Как только обновить Scope значения, которые были изменены с Mongoose
- 10. Perforce - поиск файлов, которые были изменены, добавлены или удалены
- 11. Список файлов, которые были изменены до запуска программы в java
- 12. Сохранение переменных, которые были изменены вне класса
- 13. Вернуть список файлов, которые были изменены в определенной папке
- 14. Bash: Откат неисполняемых файлов, которые ошибочно были изменены
- 15. Найти файлы, которые были изменены рекурсивно
- 16. получить набор файлов, которые были изменены после определенной даты
- 17. Обновление атрибутов/полей, которые были изменены PHP
- 18. Git post-receive для проверки только тех файлов, которые были изменены/добавлены в push?
- 19. В Subversion перечислены файлы, которые были изменены на соединительной линии, но не на ветке, и которые были изменены как в
- 20. Обновить только те поля, которые были изменены или добавлены пользователем
- 21. Извлечь только те данные, которые были изменены - флажки
- 22. Git дифф, чтобы показать только те строки, которые были изменены
- 23. Как создать патч из одной ветки в другую, используя только подмножество файлов, которые были изменены?
- 24. Получение номеров строк, которые были изменены
- 25. Найти файлы, которые недавно были изменены
- 26. Как слить файлы, которые были изменены в GIT
- 27. Команда скопировать файлы в каталог, но только те, которые еще не были там или были изменены
- 28. Объекты, которые были изменены, не будут перерисовываться
- 29. SQL-аудит данных, которые были «изменены» напрямую
- 30. Bash отображает обычные файлы, которые были изменены
Если я использую URL для актива в сценарии сборки будет эту работу? – Akeem
Наверное, нет - я сомневаюсь, что Ant будет смотреть на удаленный пункт назначения, но тогда я этого не пробовал. –