Это из документации ANT и объясняет это довольно хорошо.
Почему другой инструмент сборки, когда есть уже делают, gnumake, NMAKE, варенье и другие ? Потому что у всех этих инструментов есть ограничения , которые оригинальный автор Ant не мог жить при разработке программного обеспечения на нескольких платформах. Инструментарий Make-like по существу shell-based: они оценивают набор зависимостей , а затем выполняют команды , не похожие на то, что вы бы выпустили на оболочке . Это означает, что вы можете легко расширить эти инструменты, используя или записывая любую программу для ОС, которую вы работающий; однако это также означает, что вы ограничиваете себя ОС или , по крайней мере, тип ОС, например Unix, , над которым вы работаете.
Makefiles по своей сути являются злыми. Любой, кто работал над ними для любого времени, столкнулся с опасной вкладкой проблемой. «Моя команда не выполняет , потому что у меня есть место перед моей вкладкой ? !!" сказал оригинал автора Муравьиный путь слишком много раз. Такие инструменты, как Jam , позаботились об этом в значительной степени, , но все еще имеют еще один формат для использования .
Муравей отличается. Вместо модели , где она расширена командами на основе оболочки, Ant расширяется с использованием классов Java . Вместо написания команд оболочки файлы конфигурации: На основе XML, вызывая целевое дерево , где выполняются различные задачи. Каждая задача выполняется объектом, который реализует конкретный интерфейс Задачи .
Конечно, это устраняет некоторые выразительной силы , которая присуща возможность построить команду оболочки , такую как find . -name foo -exec rm {}
, но это дает вам возможность быть кросс-платформенной - работать везде и всюду , И эй, если вам действительно нужно выполнить команду оболочки , Ant имеет задание, которое позволяет выполнять разные команды , выполненные на основе ОС, это , выполняющие.
Эффективен дубликат http://stackoverflow.com/questions/610732/what-is-build-automation-software-for-example-ant –
(в том, что ответы на этот вопрос ответить на этот вопрос напрямую.) –