Apache Ant

Перейти к навигацииПерейти к поиску
Apache Ant
(Another Neat Tool)
Логотип программы Apache Ant (Another Neat Tool)
Скриншот программы Apache Ant (Another Neat Tool)
ТипАвтоматизация сборки
РазработчикApache Software Foundation
Написана наJava[3][1]
Операционная система Кроссплатформенное программное обеспечение
Первый выпускиюль 2000 и 17 февраля 2006[1]
Аппаратная платформа Java Virtual Machine
Последняя версия
Репозиторийgit-wip-us.apache.org/re…
gitbox.apache.org/repos/…
ЛицензияApache 2.0 License
Сайт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, обеспечивает императивную, а не декларативную сборку проекта.

Описание

В отличие от make, утилита Ant полностью независима от платформы, требуется лишь наличие на применяемой системе установленной рабочей среды Java — JRE. Отказ от использования команд операционной системы и формат XML обеспечивают переносимость сценариев.

Управление процессом сборки происходит посредством XML-сценария, также называемого Build-файлом. В первую очередь этот файл содержит определение проекта, состоящего из отдельных целей (Targets). Цели сравнимы с процедурами в языках программирования и содержат вызовы команд-заданий (Tasks). Каждое задание представляет собой неделимую, атомарную команду, выполняющую некоторое элементарное действие.

Между целями могут быть определены зависимости — каждая цель выполняется только после того, как выполнены все цели, от которых она зависит (если они уже были выполнены ранее, повторного выполнения не производится).

Типичными примерами целей являются clean (удаление промежуточных файлов), compile (компиляция всех классов), deploy (развёртывание приложения на сервере). Конкретный набор целей и их взаимосвязи зависят от специфики проекта.

Ant позволяет определять собственные типы заданий путём создания Java-классов, реализующих определённые интерфейсы.

Часто применяемые задания (Tasks)

В поставку входит множество библиотек, затрагивающие широкий набор задач. Кроме этого на веб-сайте проекта доступны дополнительные библиотеки, расширяющие функциональность продукта, например, для интеграции со сторонними системами. Стандартная версия содержит более 150 типов задач. Примеры таких команд представлены ниже.

Код Действие
javacкомпиляция Java-кода
copyкопирование файлов
deleteудаление файлов и каталогов
moveперемещение файлов и каталогов
replaceзамещение фрагментов текста в файлах
junitавтоматический запуск юнит-тестов
execвыполнение внешней команды
zipсоздание архива в формате Zip
cvsвыполнение CVS-команды
mailотправка электронной почты
xsltналожение XSLT-преобразования

Пример сценария

Данный сценарий определяет две цели — clean и build. Первая выполняет удаление временных файлов, вторая — компиляцию и создание JAR-архива. Цель build зависит от clean, поэтому при её запуске будет сначала выполнена очистка и только затем — задания собственно сборки. Build также выбрана в качестве цели по умолчанию. Это означает, что она будет выполнена при обработке данного сценария без явного указания цели.

<?xml version="1.0"?>
<project default="build" basedir=".">
    <property name="name" value="AntBuildJar"/>
    <property name="src.dir" location="${basedir}/src"/>
    <property name="build" location="${basedir}/build"/>
    <property name="build.classes" location="${build}/classes"/>
    <path id="libs.dir">
	<fileset dir="lib" includes="**/*.jar"/>
    </path>
    <!-- Сборка приложения -->
    <target name="build" depends="clean" description="Builds the application">
        <!-- Создание каталогов -->
        <mkdir dir="${build.classes}"/>

        <!-- Компиляция исходных файлов -->
        <javac srcdir="${src.dir}"
               destdir="${build.classes}"
               debug="false"
               deprecation="true"
               optimize="true" >
            <classpath refid="libs.dir"/>
        </javac>

        <!-- Копирование необходимых файлов -->
        <copy todir="${build.classes}">
            <fileset dir="${src.dir}" includes="**/*.*" excludes="**/*.java"/>
        </copy>

        <!-- Создание JAR-файла -->
        <jar jarfile="${build}/${name}.jar">
            <fileset dir="${build.classes}"/>
        </jar>
    </target>

    <!-- Очистка -->
    <target name="clean" description="Removes all temporary files">
        <!-- Удаление файлов -->
        <delete dir="${build.classes}"/>
    </target>
</project>

Примечания

См. также

  • Apache Maven — альтернативный инструмент со схожими задачами
  • Gradle — альтернативный инструмент, поддерживающий задания (tasks) из ant

Ссылки