Общие сведения о введении Apache Ant

#java #ant

#java #ant

Вопрос:

Во введении Apache Ant говорится, что

Зачем нужен другой инструмент сборки, когда уже есть make, gnumake, nmake, jam и другие? Потому что все эти инструменты имеют ограничения, с которыми первоначальный автор Ant не мог смириться при разработке программного обеспечения на нескольких платформах. Инструменты, подобные Make, по своей сути основаны на оболочке: они оценивают набор зависимостей, затем выполняют команды, мало чем отличающиеся от тех, которые вы бы выдавали в оболочке. Это означает, что вы можете легко расширить эти инструменты, используя или написав любую программу для ОС, над которой вы работаете; однако это также означает, что вы ограничиваете себя ОС или, по крайней мере, типом ОС, таким как Unix, над которым вы работаете.

Я не понимаю этого утверждения:

«Это означает, что вы можете легко расширить эти инструменты, используя или написав любую программу для ОС, над которой вы работаете»

И

«Конечно, это устраняет некоторую выразительность, которая присуща возможности создавать команды оболочки, такие как find . -name foo -exec rm {}

Если бы кто-нибудь мог помочь мне разобраться в этом, пожалуйста. Спасибо

Ответ №1:

В качестве примера предположим, что я разрабатываю для unix, и мне нужно rot13 создать файл, полный секретов, как часть моего процесса сборки. В make правило было бы примерно таким:

 kfc-spices.rot13.txt: kfc-spices.txt
    tr 'A-Za-z' 'N-ZA-Mn-za-m' < kfc-spices.txt > kfc-spices.rot13.txt
  

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

Строка «предоставлено» относится к тому факту, что ant она расширяется за счет написания классов Java, а не за счет выполнения команд операционной системы. Итак, чтобы перенести файл rot13 в ant, вам пришлось бы написать пользовательскую задачу на java. Это требует больше работы и может в конечном итоге оказаться менее гибким. make Пример может быть тривиально изменен для выполнения двойного Rot13. Но может быть сложно использовать задачу ant способами, которые первоначальный разработчик не предполагал.