Самый простой способ получить настоящие & # 8220; файловые задачи & # 8221; в АНТ

StackOverflow https://stackoverflow.com/questions/1622860

  •  06-07-2019
  •  | 
  •  

Вопрос

Я все еще хорошо изучаю, как использовать ANT, и я хотел понять, есть ли в нем какой-то разумный способ выполнять файловые задачи, аналогично Rake и Make:

http://martinfowler.com/articles/rake.html#FileTasks

" С файлом вы ссылаетесь на реальные файлы, а не на имена задач. Таким образом, «build / dev / rake.html» и «dev / rake.xml» являются фактическими файлами. HTML-файл - это результат этой задачи, а XML-файл - это входные данные. Вы можете думать о файловой задаче, как о том, как сообщить системе сборки, как создать выходной файл - действительно, это именно то, что нужно сделать в make - вы перечисляете нужные выходные файлы и говорите make, как их создать.

Важной частью файловой задачи является то, что она не запускается, если вам не нужно ее запускать. Система сборки просматривает файлы и запускает задачу только в том случае, если выходной файл не существует или его дата модификации предшествует входному файлу. Таким образом, файловые задачи работают очень хорошо, когда вы думаете о чем-то отдельно для каждого файла.

Другими словами, допустим, я хочу запустить собственный двоичный файл, и я хочу, чтобы этот двоичный файл запускался только в том случае, если какой-либо из файлов изменился. Это связано с этим вопрос, но я вообще не хочу запускать бинарный файл, а не только пропустить часть набора файлов (т.е. в наборе файлов есть только один, и я вообще не хочу, чтобы инструмент запускался).

Идеальное решение также было бы не слишком простым, а могло бы быть легко применено к любой цели - возможно, с использованием некоторого ANT JavaScript или пользовательской задачи?

Это было полезно?

Решение

Используйте задание ant-contrib outofdate . Он имеет именно те свойства, которые вы запрашиваете. Вот веб-сайт, посвященный публикации муравьев .

Вот шаблон того, как интегрировать его в вашу сборку:

<taskdef
  resource="net/sf/antcontrib/antlib.xml"
>
  <classpath>
    <pathelement location="${ant-contrib.jar}"/>
</taskdef>

<outofdate>
 <sourcefiles path="dev/rake.xml"/>
 <targetfiles path="build/dev/rake.html"/>
 <sequential>
   ... do your work here ...
   ... will only run if rake.html is older than rake.xml ...
 </sequential>
</outofdate>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top