Apache Ant
Последнее изменение этой страницы: 16:08, 21 января 2019.
![]() | |
Screenshot | |
Разработчики: | Apache Software Foundation |
---|---|
Постоянный выпуск: | 1.9.7 / 12 апреля 2016 |
Состояние разработки: | Retired |
Написана на: | Java |
Операционная система: | Кросс-платформенное программное обеспечение |
Тип ПО: | Автоматизация сборки |
Лицензия: | Apache 2.0 License |
Веб-сайт | http://ant.apache.org/ |
Apache Ant (англ. ant — муравей и акроним — «Another Neat Tool») — утилита для автоматизации процесса сборки программного продукта. Является платформонезависимым аналогом утилиты make, где все команды записываются в XML-формате.
Ant был создан в рамках проекта Jakarta, сегодня — самостоятельный проект первого уровня Apache Software Foundation.
Первая версия была разработана инженером Sun Microsystems Джеймсом Дэвидсоном (James Davidson (англ.)русск.), который нуждался в утилите, подобной make, разрабатывая первую референтную реализацию J2EE.
Ant, в отличие от другого сборщика проектов Apache Maven, обеспечивает императивную, а не декларативную сборку проекта.[Источник 1]
Содержание
Описание
В отличие от make, утилита Ant полностью независима от платформы, требуется лишь наличие на применяемой системе установленной рабочей среды Java — JRE. Отказ от использования команд операционной системы и формат XML обеспечивают переносимость сценариев.
Управление процессом сборки происходит посредством XML-сценария, также называемого Build-файлом. В первую очередь этот файл содержит определение проекта, состоящего из отдельных целей (Targets). Цели сравнимы с процедурами в языках программирования и содержат вызовы команд-заданий (Tasks). Каждое задание представляет собой неделимую, атомарную команду, выполняющую некоторое элементарное действие.
Между целями могут быть определены зависимости — каждая цель выполняется только после того, как выполнены все цели, от которых она зависит (если они уже были выполнены ранее, повторного выполнения не производится).
Типичными примерами целей являются clean
(удаление промежуточных файлов), compile
(компиляция всех классов), deploy
(развёртывание приложения на сервере). Конкретный набор целей и их взаимосвязи зависят от специфики проекта.
Ant позволяет определять собственные типы заданий путём создания Java-классов, реализующих определённые интерфейсы.
Принцип работы
Сценарий сборки – обычный XML-файл. Текст открывается (и закрывается) тегом project
, в котором можно указать имя проекта и цель по умолчанию. Далее он содержит определение целей (target
), зависимостей (depends
) и свойств (property
). Простейший сценарий должен иметь хотя бы одну цель. Для target
можно задать имя с помощью атрибута name
. Заданное имя становится командой для нашего сценария и вызвать соответствующий target
можно так:
ant name_of_target
В target есть возможность указать зависимость с помощью атрибута depends
. Зависимости связывают target
между собой. Например, есть target
c именем compile
, а есть – с именем run
, зависимый от compile
. И если мы захотим выполнить run
, сначала выполнится compile
.
Часто применяемые задания (Tasks)
В поставку входит множество библиотек, затрагивающие широкий набор задач. Кроме этого на веб-сайте проекта доступны дополнительные библиотеки, расширяющие функциональность продукта, например, для интеграции со сторонними системами. Стандартная версия содержит более 150 типов задач. Примеры таких команд представлены ниже.
Код | Действие |
---|---|
javac | компиляция Java-кода |
copy | копирование файлов |
delete | удаление файлов и директорий |
move | перемещение файлов и директорий |
replace | замещение фрагментов текста в файлах |
junit | автоматический запуск юнит-тестов |
exec | выполнение внешней команды |
zip | создание архива в формате Zip |
cvs | выполнение CVS-команды |
отправка электронной почты | |
xslt | наложение XSLT-преобразования |
Пример создания проекта
Для демонстрации возможностей, создается небольшой проект, который будет включать в себя html, css, js.[Источник 2]
Создание html-файла
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Dummy Project</title>
<link rel="stylesheet" href="css/reset.css" />
<link rel="stylesheet" href="css/grid.css" />
<link rel="stylesheet" href="css/custom.css" />
</head>
<body>
<div>
<h1> Demo Page </h1>
<p> There are three CSS files and three JavaScript files in this project.
<ul>
<li><a href="http://meyerweb.com/eric/tools/css/reset/">Eric Meyer's Reset</a></li>
<li><a href="http://www.blueprintcss.org/">Grid.css from the Blueprint CSS</a></li>
<li>A custom stylesheet</li>
</ul>
<ul>
<li> <a href="http://jquery.com">jQuery</a></li>
<li> <a href="http://javascript.crockford.com/tdop/index.html">Douglas Crockford's Top Down Operator Precedence files tokens.js and parse.js.</a></li>
</ul>
<p> All these files are uncompressed; that's the point of this tutorial, after all. </p>
</div>
<script src="js/jquery-latest.js"></script>
<script src="js/tokens.js"></script>
<script src="js/parse.js"></script>
</body>
</html>
Создание XML-файла
Далее создаем файл, который используется Ant по умолчанию. Он должен называться build.xml
:
<?xml version="1.0"?>
<project name="Compress, Concatenate, and FTP CSS and JS" default="initialize">
</project>
Создание свойств
Ant содержит свойства, которые похожи на обычные переменные. Создадим задачу для импорта свойств:
<target name="get_properties">
<property file="ant.properties" />
<echo>Imported Properties</echo>
</target>
Теперь создадим файл ant.properties:
css_dir = css
js_dir = js
assets_dir = assets
Создание задач
Теперь создаем задачи, которые будут выполняться сборщиком. Для этого нужно добавить в build.xml
следующий код, который будет собирать css и js - файлы:
<target name="concat_css">
<concat destfile="${assets_dir}/style.css">
<filelist id="files" dir="${css_dir}">
<file name="reset.css" />
<file name="grid.css" />
<file name="custom.css" />
</filelist>
</concat>
</target>
<target name="concat_js">
<concat destfile="${assets_dir}/script.js">
<filelist id="files" dir="${js_dir}">
<file name="jquery-latest.js" />
<file name="tokens.js" />
<file name="parse.js" />
</filelist>
</concat>
</target>
Запуск задачи
Теперь настроим автозапуск задач. Они будут запускаться изнутри задачи по умолчанию initialize:
<target name="initialize" depends="get_properties">
<mkdir dir="${assets_dir}" />
<antcall target="concat_css" />
<antcall target="concat_js" />
</target>
Установка и настройка Apache Ant
- Качаем Apache Ant с официального сайта, раздел Current Release of Ant.
Дополнительно устанавливаем JDK с официального сайта.
- Распаковываем архив в удобное для нас место.
В архиве apache-ant-1.9.3-bin.zip
лежит папка apache-ant-1.9.3.
Я закинул эту папку в корень диска C: и переименовал ее в ant.
Т.е. у меня Ant лежит в C:\ant
- это в дальнейшем понадобится.
- Настраиваем переменные среды.
!!! У вас путь до JDК и Ant может отличаться. Перед копипастом команд и настроек проверьте все пути и измените их под себя.
В моем случае Ant лежит в C:\ant
а JDK в C:\Program Files\Java\jdk1.7.0_51
Самый простой способ - набрать три команды в CMD:
set ANT_HOME=C:\ant set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_51 set PATH=%PATH%;%JAVA_HOME%\bin;%ANT_HOME%\bin
Ниже другой вариант настройки. Возможно так кому-то будет удобнее.
- Открываем
Мой компьютер - Свойства - Дополнительные параметры системы
. В открывшемся окне выбираем вкладкуДополнительно - Переменные среды
В разделе Системные переменные нажимаем кнопку Создать и добавляем две новые переменные:
первая переменная ANT_HOME
со значением C:\ant
вторая переменная JAVA_HOME
и ее значение: C:\Program Files\Java\jdk1.7.0_51
Нажимаем ОК
- Далее нужно добавить путь к Ant и JDK для переменной среды PATH. В списке системных переменных находим PATH и нажимаем кнопку Изменить.
Важный момент. Если в PATH, в поле Значение переменной уже что-то вписано, аккуратно ставим в конце строки точку с запятой и дописываем:
%JAVA_HOME%\bin;%ANT_HOME%\bin
У меня Значение переменной для PATH выглядит так:
C:\adb;%JAVA_HOME%\bin;%ANT_HOME%\bin
Если вы не нашли у себя PATH
, создайте новую переменную аналогично пункту 3.1.
- Проверяем работу Ant и JAVA.
Запускаем CMD и пишем в нем
ant -version java -version
В ответ должны получить что то вроде:
Источники
- ↑ ApacheAnt Documentation // Официальный сайт ApacheAnt [2013–2019]. Дата обновления: 26.11.2018. URL: https://ant.apache.org/manual/index.html (дата обращения: 05.01.2019)
- ↑ ApacheAnt Tutorial // Информационный портал Ruseller [2015–2019]. Дата обновления: 21.10.2018. URL: https://ruseller.com/lessons.php?rub=28&id=1051 (дата обращения: 05.01.2019)
ISSN 2542-0356
Следуй за Полисом
Оставайся в курсе последних событий
Лицензия
Если не указано иное, содержание этой страницы доступно по лицензии Creative Commons «Attribution-NonCommercial-NoDerivatives» 4.0, а примеры кода – по лицензии Apache 2.0. Подробнее см. Условия использования.