Апачский муравей

Инструмент сборки Java
Апачский муравей
Оригинальный автор(ы)Джеймс Дункан Дэвидсон
Разработчик(и)Фонд программного обеспечения Apache
Первоначальный выпуск19 июля 2000 г. ; 24 года назад ( 2000-07-19 )
Стабильный релиз
1.10.15 / 29 августа 2024 г. ; 5 месяцев назад [1] ( 2024-08-29 )
РепозиторийРепозиторий Ant
Написано вЯва
ПлатформаJava SE
ТипИнструмент сборки
ЛицензияЛицензия Apache 2.0
Веб-сайтant.apache.org 

Apache Ant — это программный инструмент для автоматизации процессов сборки программного обеспечения для приложений Java [2] , который возник из проекта Apache Tomcat в начале 2000 года как замена инструменту сборки Make из Unix . [3] Он похож на Make, но реализован с использованием языка Java и требует платформы Java. В отличие от Make, который использует формат Makefile , Ant использует XML для описания процесса сборки кода и его зависимостей. [4]

Ant — проект с открытым исходным кодом , выпущенный Apache Software Foundation под лицензией Apache .

История

Ant («Another Neat Tool») [5] был задуман Джеймсом Дунканом Дэвидсоном во время подготовки эталонного движка JSP и сервлетов Sun Microsystems , позднее Apache Tomcat , к выпуску с открытым исходным кодом . Для его сборки на платформе Solaris использовалась фирменная версия Make , но в мире открытого исходного кода не было возможности контролировать, какая платформа использовалась для сборки Tomcat; поэтому Ant был создан как простой платформенно-независимый инструмент для сборки Tomcat из директив в XML-«файле сборки». Ant (версия 1.1) был официально выпущен как отдельный продукт 19 июля 2000 года.

Было сделано несколько предложений по Ant версии 2, такие как AntEater Джеймса Дункана Дэвидсона, Myrmidon Питера Дональда [6] и Mutant Коннора МакНейла, ни одно из которых не нашло широкого признания в сообществе разработчиков. [7]

В свое время (2002 год) Ant был инструментом сборки, используемым большинством проектов по разработке Java. [8] Например, большинство разработчиков Java с открытым исходным кодом включали build.xmlфайлы в свои дистрибутивы. [ требуется ссылка ] Поскольку Ant сделал интеграцию тестов JUnit с процессом сборки тривиальной задачей, Ant позволил разработчикам использовать разработку через тестирование и экстремальное программирование .

В 2004 году Apache создал новый инструмент с аналогичным назначением под названием Maven .

Gradle , похожее программное обеспечение, было создано в 2008 году, но в нем, напротив, используется код Groovy (и нескольких других языков) вместо XML.

Расширения

WOProject-Ant [9] — это всего лишь один из многих примеров расширения задачи, написанного для Ant. Эти расширения устанавливаются путем копирования их .jarфайлов в каталог ant lib. После этого эти расширения задачи можно вызывать непосредственно в типичном build.xmlфайле. Расширения WOProject позволяют разработчикам WebObjects использовать ant при создании своих фреймворков и приложений вместо использования пакета Xcode от Apple .

Antcontrib[10] предоставляет набор задач, таких как условные операторы и операции над свойствами, а также другие полезные задачи. [11] [12]

Ant-contrib.unkrig.de[13] реализует задачи и типы для сетей, пользовательских интерфейсов Swing , обработки JSON и других.

Существуют и другие расширения задач для Perforce , .NET Framework , EJB и манипуляций с файловой системой. [14]

Пример

build.xmlНиже приведен пример файла для простого приложения Java "Hello, world". Он определяет четыре цели - clean, [15] и clobber, каждая из которых имеет связанное описание. Цель указывает цель как зависимость. Это говорит Ant, что перед тем, как он сможет запустить цель, он должен сначала завершить ее.compilejarjarcompilejarcompile

<?xml version="1.0"?> <project name= "Hello" default= "compile" > <target name= "clean" description= "удалить промежуточные файлы" > <delete dir= "classes" /> </target> <target name= "clobber" depends= "clean" description= "удалить все файлы артефактов" > <delete file= "hello.jar" /> </target> <target name= "compile" description= "скомпилировать исходный код Java в файлы классов" > <mkdir dir= "classes" /> <javac srcdir= "." destdir= "classes" /> </target> <target name= "jar" depends= "compile" description= "создать файл Jar для приложения" > <jar destfile= "hello.jar" > <fileset dir= "classes" includes= "**/*.class" /> <manifest> <attribute name= "Main-Class" value= "HelloProgram" /> </manifest> </jar> </target> </project>                                        

Внутри каждой цели есть действия, которые Ant должен выполнить для построения этой цели; они выполняются с помощью встроенных задач. Например, для построения compile цели Ant должен сначала создать каталог с именем classes(что Ant сделает только в том случае, если он еще не существует), а затем вызвать компилятор Java. Таким образом, используются задачи mkdirи javac. Они выполняют задачу, аналогичную утилитам командной строки с тем же именем.

Другая задача, используемая в этом примере, называется jar:

<jar destfile= "hello.jar" > 

Эта задача Ant имеет то же имя, что и обычная утилита командной строки Java, JAR, но на самом деле является вызовом встроенной поддержки файлов JAR/ZIP программы Ant. Эта деталь не имеет значения для большинства конечных пользователей, которые просто получают нужный им JAR с запрошенными ими файлами.

Многие задачи Ant делегируют свою работу внешним программам, как собственным, так и Java. Они используют собственные задачи Ant <exec>и <java>для настройки командных строк и обрабатывают все детали сопоставления информации в файле сборки с аргументами программы и интерпретацией возвращаемого значения. Пользователи могут увидеть, какие задачи это делают (например <csv>, <signjar>, , <chmod>, <rpm>), попытавшись выполнить задачу в системе без базовой программы на пути или без установленного полного комплекта разработки Java (JDK).

Портативность

Ant предназначен для работы со всеми системами, для которых доступны среды выполнения Java. Он чаще всего используется с Windows , Linux , macOS и другими операционными системами Unix , но также использовался на других платформах, таких как OS/2, OpenVMS, Solaris , HP-UX. [16]

Ant был разработан, чтобы быть более переносимым, чем Make. [4] По сравнению с Make, Ant использует меньше платформенно-зависимых команд оболочки . Ant предоставляет встроенную функциональность, которая разработана для одинакового поведения на всех платформах. Например, в примере build.xmlфайла выше, цель clean удаляет classesкаталог и все в нем. В Makefile это обычно делается с помощью команды:

rm -rf классы/

rm— это специфичная для Unix команда, недоступная в некоторых других средах. Например, Microsoft Windows будет использовать:

rmdir /S /Q классы

В файле сборки Ant та же цель может быть достигнута с помощью встроенной команды:

 <delete dir= "classes" /> 

Кроме того, Ant не различает прямой слеш или обратный слеш для каталогов и точку с запятой или двоеточие для разделителей пути. Он преобразует каждый из них в символ, соответствующий платформе, на которой он выполняется.

Ограничения

  • Файлы сборки Ant, написанные на XML , могут быть сложными и многословными, поскольку они иерархичны, частично упорядочены и повсеместно перекрестно связаны. Эта сложность может стать препятствием для обучения. Файлы сборки больших или сложных проектов могут стать неуправляемо большими. Хороший дизайн и модуляризация файлов сборки могут улучшить читаемость, но не обязательно уменьшить размер.
  • Многие из старых задач, такие как <javac>, <exec>и <java>— используют значения по умолчанию для опций, которые не соответствуют более поздним версиям задач. Изменение этих значений по умолчанию нарушит существующие скрипты Ant.
  • При расширении свойств в строковом или текстовом элементе неопределенные свойства не выдаются как ошибка, а остаются как нерасширенная ссылка (например, ${unassigned.property}).
  • Ant имеет ограниченные правила обработки неисправностей.
  • Ленивая оценка свойств не поддерживается. Например, при работе в <for>цикле Antcontrib свойство не может быть повторно оценено для подзначения, которое может быть частью итерации. (Некоторые сторонние расширения облегчают обходной путь; наборы задач управления потоком AntXtras предоставляют возможность переопределения курсора для циклов.)
  • В makefiles любое правило для создания одного типа файла из другого может быть записано в строке makefile. Например, можно преобразовать документ в какой-либо другой формат, используя правила для выполнения другого инструмента. Создание аналогичной задачи в Ant более сложно: отдельная задача должна быть написана на Java и включена в файл сборки Ant для обработки того же типа функциональности. Однако такое разделение может улучшить читаемость скрипта Ant, скрывая некоторые детали того, как задача выполняется на разных платформах.

Существуют сторонние расширения Ant (называемые antlibs ), которые обеспечивают большую часть недостающей функциональности. Кроме того, интегрированная среда разработки Eclipse (IDE) может создавать и выполнять скрипты Ant, в то время как IDE NetBeans использует Ant для своей внутренней системы сборки. Поскольку обе эти IDE являются очень популярными платформами разработки, они могут значительно упростить использование Ant. (В качестве бонуса скрипты Ant, созданные NetBeans, могут использоваться вне этой IDE как автономные скрипты.)

Смотрите также

Ссылки

  1. ^ "Apache Ant Project News" . Получено 11 декабря 2024 г. .
  2. ^ "Apache Ant - Добро пожаловать". ant.apache.org . Получено 2022-01-25 .
  3. ^ "Apache Ant - Часто задаваемые вопросы". ant.apache.org . Получено 2022-01-25 .
  4. ^ ab Moodie 2005, стр. 5–9, Глава §1 Введение в Ant.
  5. ^ «Почему вы называете его Ant? – Apache Ant FAQ».
  6. ^ Питер Дональд. «Мирмидон: Предложение Ant2.0».
  7. Макнил, Коннор (4 августа 2005 г.). «Ранняя история развития муравьев».
  8. ^ Wiley (2002). Инструменты Java для экстремального программирования . стр. 76.
  9. ^ "WOProject-Ant – WOProject / WOLips – Confluence". Архивировано из оригинала 2009-01-08.
  10. ^ "Ant-Contrib".
  11. ^ «Задачи Ant-Contrib».
  12. ^ Moodie 2005, стр. 266–267, Глава §10 Написание пользовательских задач — Использование сторонних пользовательских задач.
  13. ^ "ant-contrib.unkrig.de".
  14. ^ «Обзор задач Ant».
  15. ^ Moodie 2005, стр. 121–125, Глава §5 Создание проекта — Сборка проекта — Управление расположением файлов.
  16. ^ Руководство Apache Ant. Раздел «Системные требования».

Дальнейшее чтение

  • Логран, Стив; Хэтчер, Эрик (12 июля 2007 г.). Ant in Action (2-е изд.). Manning Publications . стр. 600. ISBN 978-1-932394-80-1.
  • Хольцнер, Стивен (13 апреля 2005 г.). Муравей – Полное руководство (2-е изд.). О'Рейли Медиа . п. 334. ИСБН 978-0-596-00609-9.
  • Муди, Мэтью (2005). Pro Apache Ant (1-е изд.). Apress . ISBN 1-59059-559-9.
  • Белл, Алексис Т. (7 июля 2005 г.). ANT Java Notes: Ускоренное вводное руководство по Java ANT Build Tool (1-е изд.). Virtualbookworm.com Publishing. стр. 268. ISBN 978-1-58939-738-5.
  • Хэтчер, Эрик; Логран, Стив (август 2002 г.). Разработка Java с Ant (1-е изд.). Manning Publications . стр. 672. ISBN 978-1-930110-58-8.
  • Нимейер, Гленн; Потит, Джереми (29 мая 2003 г.). Экстремальное программирование с Ant: создание и развертывание приложений Java с JSP, EJB, XSLT, XDoclet и JUnit (1-е изд.). SAMS Publishing . стр. 456. ISBN 978-0-672-32562-5.
  • Уильямсон, Алан (1 ноября 2002 г.). Ant – Справочник разработчика (1-е изд.). SAMS Publishing . стр. 456. ISBN 978-0-672-32426-0.
  • Мацке, Бернд (сентябрь 2003 г.). ANT: Java Build Tool на практике (1-е изд.). Charles River Media. стр. 280. ISBN 978-1-58450-248-7.
  • Официальный сайт
Retrieved from "https://en.wikipedia.org/w/index.php?title=Apache_Ant&oldid=1263303147"