Введение
Java-инструмент Apache Ant — это программный инструмент для автоматизации сборки программного обеспечения для Java-приложений, который возник в начале 2000-х годов из проекта Apache Tomcat как замена утилите Make для Unix. Он аналогичен Make, но реализован на языке Java и требует наличия платформы Java. В отличие от Make, использующего формат Makefile, Ant использует XML для описания процесса сборки кода и его зависимостей. Ant — это проект с открытым исходным кодом, распространяемый Apache Software Foundation под лицензией Apache.
Apache Ant is a software tool for automating software build processes for Java applications which originated from the Apache Tomcat project in early 2000 as a replacement for the Make build tool of Unix. It is similar to Make, but is implemented using the Java language and requires the Java platform. Unlike Make, which uses the Makefile format, Ant uses XML to describe the code build process and its dependencies. Released under an Apache License by the Apache Software Foundation, Ant is an open source project.
История
Ant ("Another Neat Tool") был задуман Джеймсом Дунканом Дэвидсоном при подготовке JSP и сервлетного движка Sun Microsystems, впоследствии Apache Tomcat, к выпуску в качестве открытого исходного кода. Для сборки Tomcat на платформе Solaris использовалась проприетарная версия Make, но в мире открытого исходного кода не было возможности контролировать платформу, используемую для сборки Tomcat; поэтому Ant был создан как простой, платформенно-независимый инструмент для сборки Tomcat на основе директив в XML "файле сборки". Ant (версия 1.1) был официально выпущен как самостоятельный продукт 19 июля 2000 года. Было предложено несколько вариантов Ant версии 2, таких как AntEater от Джеймса Дункана Дэвидсона, Myrmidon от Питера Дональда и Mutant от Конора МакНилла, но ни один из них не получил широкого признания в сообществе разработчиков. В 2002 году Ant был инструментом сборки, используемым большинством Java-проектов. Например, большинство разработчиков Java с открытым исходным кодом включали файлы build.xml в свои дистрибутивы. Благодаря тому, что Ant упростил интеграцию JUnit-тестов в процесс сборки, разработчики получили возможность использовать разработку через тестирование и экстремальное программирование. В 2004 году Apache создал новый инструмент с аналогичной целью – Maven. Gradle, аналогичное программное обеспечение, было создано в 2008 году и, в отличие от Ant, использует код Groovy (и некоторые другие языки) вместо XML.
Расширения
WOProject Ant – это лишь один из множества примеров расширения задач, разработанных для Ant. Эти расширения устанавливаются путем копирования их JAR-файлов в каталог lib Ant. После этого эти расширения задач можно вызывать непосредственно в обычном build.xml файле. Расширения WOProject позволяют разработчикам WebObjects использовать Ant для сборки своих фреймворков и приложений, вместо использования пакета Xcode от Apple. Antcontrib предоставляет набор задач, таких как условные операторы и операции со свойствами, а также другие полезные задачи. Antcontrib.unkrig.de реализует задачи и типы для работы с сетями, графическими интерфейсами Swing, обработки JSON и другими функциями. Существуют и другие расширения задач для Perforce, .NET Framework, EJB и операций с файловой системой.
Ограничения
Файлы сборки Ant, написанные на XML, могут быть сложными и многословными, поскольку они иерархичны, частично упорядочены и тесно взаимосвязаны. Эта сложность может затруднить изучение. Файлы сборки больших или сложных проектов могут становиться непомерно большими. Хороший дизайн и модульность файлов сборки могут улучшить читаемость, но не обязательно уменьшить размер. Многие старые задачи, такие как , и , используют значения по умолчанию для параметров, которые не соответствуют более новым версиям этих задач. Изменение этих значений по умолчанию привело бы к неработоспособности существующих скриптов Ant. При раскрытии свойств в строке или текстовом элементе, неопределенные свойства не вызывают ошибку, а остаются нераскрытыми ссылками (например, ${unassigned.property}). Ant имеет ограниченные правила обработки ошибок. Отложенная оценка свойств не поддерживается. Например, при работе в цикле Antcontrib, свойство нельзя переоценить для подзначения, которое может быть частью итерации. (Некоторые сторонние расширения предлагают обходные пути; задачи управления потоком AntXtras обеспечивают переопределение курсора для циклов.) В makefile любое правило для создания одного типа файла из другого можно записать непосредственно в самом makefile. Например, можно преобразовать документ в другой формат, используя правила для запуска другого инструмента. Создание аналогичной задачи в Ant более сложно: необходимо написать отдельную задачу на Java и включить ее в файл сборки Ant для обработки той же функциональности. Однако такое разделение может повысить читаемость скрипта Ant, скрывая некоторые детали выполнения задачи на разных платформах. Существуют сторонние расширения Ant (называемые antlibs), которые предоставляют большую часть недостающей функциональности. Кроме того, интегрированная среда разработки Eclipse (IDE) может создавать и выполнять скрипты Ant, а NetBeans IDE использует Ant для своей внутренней системы сборки. Поскольку обе эти IDE являются очень популярными платформами разработки, они могут значительно упростить использование Ant. (В качестве бонуса, скрипты Ant, сгенерированные NetBeans, можно использовать за пределами этой IDE как автономные скрипты.)