Apache Ant

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 16:08, 21 января 2019.
Apache Ant
(Another Neat Tool)
Apache-Ant-logo.svg.png
Разработчики: 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-команды
mail отправка электронной почты
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


Дополнительно устанавливаем 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

В ответ должны получить что то вроде:

Рисунок 1 - проверка корректности установки

Источники

  1. ApacheAnt Documentation // Официальный сайт ApacheAnt [2013–2019]. Дата обновления: 26.11.2018. URL: https://ant.apache.org/manual/index.html (дата обращения: 05.01.2019)
  2. ApacheAnt Tutorial // Информационный портал Ruseller [2015–2019]. Дата обновления: 21.10.2018. URL: https://ruseller.com/lessons.php?rub=28&id=1051 (дата обращения: 05.01.2019)