Как выполнять задачи ANT только для файлов, которые были изменены - PullRequest
15 голосов
/ 31 января 2009

У меня есть скрипт сборки, который делает несколько вещей (свести к минимуму javascript, загрузить в amazon s3 и т. Д.). Задача свертывания ANT работает только с измененным яваскриптом и игнорирует остальные (я не писал этот скрипт). Я хотел бы сделать что-то похожее для задачи amazon s3, когда в задачу загружается только обновленный контент. Любые указания о том, как это сделать, будут с благодарностью.

Ответы [ 4 ]

8 голосов
/ 18 апреля 2009

Вы можете выбрать набор файлов с измененным тегом даты. Модифицированный тэг безумно силен, поэтому проверьте его: Муравьиные селекторы - Изменено .

Чтобы сообщить, что изменилось, он может хранить кэш в файле свойств, который обновляется после каждой успешной сборки, если только вы не используете атрибут delayupdate - так что, возможно, для его проверки вы можете иметь:

<param name="commitUpdate" value="false" />
[...]
<ftp ...>
    <fileset dir="src">
        <modified delayupdate="${commitUpdate}" />
    </fileset>
</ftp>

И, конечно, вы можете установить этот commitUpdate через параметр командной строки или что-то в этом роде.

1 голос
/ 25 мая 2011

Вы можете рассмотреть задачу Ant OutOfDate , предоставляемую библиотекой Ant-contrib. Это позволяет вам установить последовательную / параллельную задачу для выполнения для каждого исходного файла в наборе файлов. Вы можете применить сопоставитель файлов, чтобы определить целевые файлы для проверки исходных файлов, чтобы только те файлы, которые были изменены, выполняли определенную последовательную / параллельную задачу.

Проверить эту тему:

Как выполнить задачу Ant только после изменения исходных файлов?

0 голосов
/ 12 февраля 2009

Если вы не хотите изменять / переписывать задачу S3 и хотите оставаться в чистом XML, вы можете использовать задачу Uptodate и теневой каталог, чтобы имитировать это поведение - например, сохраните копию ваших загрузок (потенциально огромных) или просто пустой файл с датой создания последней загрузки. Примеры на странице руководства должны содержать много подсказок, куда идти.

Конечно, вы можете написать свою собственную задачу S2Uptodate, подключившись к S3, чтобы сравнить даты. Предпочтительное решение зависит от того, сколько существует файлов (например, несколько огромных, в которых вы сможете проверить каждый в отдельной операции, или почти бесконечное количество маленьких, которые вы по-разному решите.

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

0 голосов
/ 31 января 2009

Как правило, вы можете сделать это для задач, которые имеют исходные и целевые файлы, используя File Mappers , так что задача применяется только к исходным файлам, которые изменились. Я не знаю, есть ли способ сделать что-то, где Ant не может видеть файлы назначения, например, загрузить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...