Апач Муравей
Эта статья нуждается в дополнительных цитатах для проверки . ( июль 2020 г. ) |
Оригинальный автор(ы) | Джеймс Дункан Дэвидсон |
---|---|
Разработчик(и) | Фонд программного обеспечения Apache |
Первоначальный выпуск | 19 июля 2000 г |
Стабильная версия | 1.10.14
/ 20 августа 2023 г [1] |
Репозиторий | Муравьиный репозиторий |
Написано в | Ява |
Платформа | Ява SE |
Тип | Инструмент сборки |
Лицензия | Лицензия Апач 2.0 |
Веб-сайт | на |
Apache Ant — это программный инструмент для сборки программного обеспечения для приложений Java. автоматизации процессов [2] который возник из проекта Apache Tomcat в начале 2000 года как замена инструменту сборки Make в Unix . [3] Он похож на Make, но реализован с использованием языка Java и требует платформы Java. В отличие от Make, который использует формат Makefile , Ant использует XML для описания процесса сборки кода и его зависимостей. [4]
Выпущенный лицензии Apache по Apache Software Foundation , Ant представляет собой проект с открытым исходным кодом .
История
[ редактировать ]Муравей («Еще один аккуратный инструмент») [5] был задуман Джеймсом Дунканом Дэвидсоном при подготовке Sun Microsystems , эталонного механизма JSP и сервлетов позже Apache Tomcat , к выпуску с открытым исходным кодом . , но в использовалась проприетарная версия Make Для сборки Tomcat на платформе Solaris мире открытого исходного кода не было возможности контролировать, какая платформа использовалась для сборки 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 при создании своих платформ и приложений вместо использования Apple Xcode пакета .
Antcontrib
[10] предоставляет набор задач, таких как условные операторы и операции над свойствами, а также другие полезные задачи. [11] [12]
Ant-contrib.unkrig.de
[13] реализует задачи и типы для работы в сети, Swing пользовательские интерфейсы JSON , обработку и другое.
Существуют и другие расширения задач для Perforce , .NET Framework , EJB и манипуляций с файловой системой. [14]
Пример
[ редактировать ]Образец build.xml
приведен ниже для простого Java-приложения «Hello, world». Он определяет четыре цели: clean
, [15] clobber
, compile
и jar
, каждый из которых имеет связанное описание. jar
цель перечисляет compile
цель как зависимость. Это сообщает Ant, что прежде чем он сможет запустить jar
цель, он должен сначала завершить compile
цель.
<?xml version="1.0"?>
<project name="Hello" default="compile">
<target name="clean" description="remove intermediate files">
<delete dir="classes"/>
</target>
<target name="clobber" depends="clean" description="remove all artifact files">
<delete file="hello.jar"/>
</target>
<target name="compile" description="compile the Java source code to class files">
<mkdir dir="classes"/>
<javac srcdir="." destdir="classes"/>
</target>
<target name="jar" depends="compile" description="create a Jar file for the application">
<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, но на самом деле представляет собой вызов встроенной в программу Ant поддержки файлов JAR/ZIP. Эта деталь не важна для большинства конечных пользователей, которые просто получают нужный JAR-файл с запрошенными файлами.
Многие задачи Ant делегируют свою работу внешним программам, как собственным, так и Java. Они используют собственные <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
файл выше, чистая цель удаляет classes
каталог и все, что в нем. В Makefile это обычно делается с помощью команды:
rm -rf classes/
rm
— это специфичная для Unix команда, недоступная в некоторых других средах. Microsoft Windows , например, будет использовать:
rmdir /S /Q classes
В файле сборки Ant та же цель может быть достигнута с помощью встроенной команды:
<delete dir="classes"/>
Кроме того, Ant не различает прямую и обратную косую черту для каталогов и точку с запятой или двоеточие для разделителей путей. Он преобразует каждый из них в символ, соответствующий платформе, на которой он выполняется.
Ограничения
[ редактировать ]Возможно, этот раздел содержит оригинальные исследования . ( сентябрь 2011 г. ) |
- Файлы сборки Ant, написанные на XML , могут быть сложными и многословными, поскольку они иерархичны, частично упорядочены и имеют многочисленные перекрестные ссылки. Эта сложность может стать препятствием для обучения. Файлы сборки больших или сложных проектов могут стать неуправляемо большими. Хороший дизайн и модульность файлов сборки могут улучшить читаемость, но не обязательно уменьшить размер.
- Многие из старых задач, таких как
<javac>
,<exec>
и<java>
— использовать значения по умолчанию для параметров, не соответствующих более поздним версиям задач. Изменение этих значений по умолчанию приведет к поломке существующих сценариев Ant. - При раскрытии свойств в строке или текстовом элементе неопределенные свойства не возникают как ошибка, а остаются как нерасширенная ссылка (например,
${unassigned.property}
). - Ant имеет ограниченные правила обработки ошибок.
- Отложенная оценка свойств не поддерживается. Например, при работе в Antcontrib
<for>
цикле свойство не может быть переоценено для подзначения, которое может быть частью итерации. (Некоторые сторонние расширения облегчают обходной путь; наборы задач управления потоками AntXtras предусматривают переопределение курсора для циклов.) - В make-файлах любое правило для создания одного типа файлов из другого может быть записано внутри make-файла. Например, можно преобразовать документ в какой-либо другой формат, используя правила для запуска другого инструмента. Создать подобную задачу в Ant сложнее: необходимо написать отдельную задачу на Java и включить ее в файл сборки Ant, чтобы обрабатывать тот же тип функциональности. Однако такое разделение может улучшить читабельность сценария Ant, скрывая некоторые детали выполнения задачи на разных платформах.
Существуют сторонние расширения Ant (называемые antlibs ), которые предоставляют большую часть недостающих функций. Кроме того, (IDE) Eclipse интегрированная среда разработки может создавать и выполнять сценарии Ant, тогда как IDE NetBeans использует Ant для своей внутренней системы сборки. Поскольку обе эти IDE являются очень популярными платформами разработки, они могут значительно упростить использование Ant. (В качестве бонуса сценарии Ant, созданные NetBeans, можно использовать вне этой среды IDE как автономные сценарии.)
См. также
[ редактировать ]- Автоматизация сборки
- Apache Jelly , инструмент для превращения XML в исполняемый код
- Apache Ivy , менеджер зависимостей, тесно интегрируемый с Ant, подпроектом Ant.
- Apache Maven — инструмент управления проектами и автоматизации сборки, в первую очередь для Java.
- NAnt , Ant-подобный инструмент, ориентированный на среду .NET Framework, а не на Java.
- Gradle — инструмент сборки JVM, созданный с помощью Groovy.
Ссылки
[ редактировать ]- ^ «Новости проекта Apache Ant» . Проверено 30 августа 2023 г.
- ^ «Apache Ant — Добро пожаловать» . ant.apache.org . Проверено 25 января 2022 г.
- ^ «Apache Ant — часто задаваемые вопросы» . ant.apache.org . Проверено 25 января 2022 г.
- ^ Jump up to: а б Moodie 2005 , стр. 5–9, Глава §1. Знакомство с Ant.
- ^ «Почему вы называете это Ant? – Часто задаваемые вопросы по Apache Ant» .
- ^ Питер Дональд. «Мирмидон: Предложение Ant2.0» .
- ^ Макнил, Конор (4 августа 2005 г.). «Ранняя история развития муравьев» .
- ^ Уайли (2002). Инструменты Java для экстремального программирования . п. 76.
- ^ «WOProject-Ant – WOProject / WOLips – Confluence» . Архивировано из оригинала 8 января 2009 г.
- ^ «Муравей-Вклад» .
- ^ «Задачи Ant-Contrib» .
- ^ Moodie 2005 , стр. 266–267, Глава §10 Написание пользовательских задач — использование сторонних пользовательских задач.
- ^ «ant-contrib.unkrig.de» .
- ^ «Обзор задач Ant» .
- ^ Moodie 2005 , стр. 121–125, Глава §5. Создание проекта — Сборка проекта — Управление расположением файла.
- ^ Руководство по Apache Ant. Раздел «Системные требования» .
Дальнейшее чтение
[ редактировать ]- Логран, Стив; Хэтчер, Эрик (12 июля 2007 г.). Муравей в действии (2-е изд.). Публикации Мэннинга . п. 600. ИСБН 978-1-932394-80-1 .
- Хольцнер, Стивен (13 апреля 2005 г.). Муравей – Полное руководство (2-е изд.). О'Рейли Медиа . п. 334. ИСБН 978-0-596-00609-9 .
- Муди, Мэтью (2005). Про Apache Ant (1-е изд.). Апресс . ISBN 1-59059-559-9 .
- Белл, Алексис Т. (7 июля 2005 г.). Примечания к ANT Java: ускоренное вводное руководство по инструменту сборки Java ANT (1-е изд.). Издательство Virtualbookworm.com . п. 268. ИСБН 978-1-58939-738-5 .
- Хэтчер, Эрик; Логран, Стив (август 2002 г.). Разработка Java с помощью Ant (1-е изд.). Публикации Мэннинга . стр. 672 . ISBN 978-1-930110-58-8 .
- Нимейер, Гленн; Потит, Джереми (29 мая 2003 г.). Экстремальное программирование с помощью Ant: создание и развертывание приложений Java с помощью JSP, EJB, XSLT, XDoclet и JUnit (1-е изд.). Издательство САМС . п. 456. ИСБН 978-0-672-32562-5 .
- Уильямсон, Алан (1 ноября 2002 г.). Ant - Справочник разработчика (1-е изд.). Издательство САМС . п. 456. ИСБН 978-0-672-32426-0 .
- Мацке, Бернд (сентябрь 2003 г.). ANT: Инструмент сборки Java на практике (1-е изд.). Чарльз Ривер Медиа . стр. 280 . ISBN 978-1-58450-248-7 .
Внешние ссылки
[ редактировать ]- Проекты Apache Software Foundation
- Автоматизация сборки
- Инструменты компиляции
- Кроссплатформенное бесплатное программное обеспечение
- Бесплатное программное обеспечение, написанное на Java (языке программирования).
- Библиотеки Java (язык программирования)
- Инструменты разработки Java
- Программное обеспечение, использующее лицензию Apache
- XML-программное обеспечение