Apache Ant

Поделись знанием:
Перейти к: навигация, поиск
Apache Ant
(Another Neat Tool)
Тип

Автоматизация сборки

Разработчик

Apache Software Foundation

Операционная система

Кроссплатформенное программное обеспечение

Лицензия

Apache 2.0 License

Сайт

[ant.apache.org/ che.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 Ant"

Примечания

См. также

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

Ссылки

  • [ant.apache.org/ Официальный сайт Ant] (англ.)
  • [wiki.apache.org/ant/FrontPage Ant-Wiki] (англ.)
  • Мэтт Чепмен. [www-128.ibm.com/developerworks/ru/edu/j-dw-java-apant-i.html Apache Ant 101: Моментальная компоновка Java-программ] (рус.) (html pdf zip). IBM developerWorks Россия (17 декабря 2003). Проверено 14 октября 2008. [www.webcitation.org/61FtnsOUd Архивировано из первоисточника 27 августа 2011].
  • [constantiner.blogspot.com/2006/02/flash-apache-ant-new-media.html Разработка Flash-проектов с использованием Apache Ant] (рус.)
  • [sourceforge.net/projects/antro Antro] Профайлер для build-скриптов
  • [www.opennet.ru/base/dev/ant_10.txt.html Ant за 10 шагов]. Краткое введение в ant c сайта [www.opennet.ru/ OpenNET]
  • [www.quizful.net/post/ant-tutorial Большое пособие по Apache Ant]

Отрывок, характеризующий Apache Ant

Народ беспокойно сновал по улицам.
Наложенные верхом возы с домашней посудой, стульями, шкафчиками то и дело выезжали из ворот домов и ехали по улицам. В соседнем доме Ферапонтова стояли повозки и, прощаясь, выли и приговаривали бабы. Дворняжка собака, лая, вертелась перед заложенными лошадьми.
Алпатыч более поспешным шагом, чем он ходил обыкновенно, вошел во двор и прямо пошел под сарай к своим лошадям и повозке. Кучер спал; он разбудил его, велел закладывать и вошел в сени. В хозяйской горнице слышался детский плач, надрывающиеся рыдания женщины и гневный, хриплый крик Ферапонтова. Кухарка, как испуганная курица, встрепыхалась в сенях, как только вошел Алпатыч.
– До смерти убил – хозяйку бил!.. Так бил, так волочил!..
– За что? – спросил Алпатыч.
– Ехать просилась. Дело женское! Увези ты, говорит, меня, не погуби ты меня с малыми детьми; народ, говорит, весь уехал, что, говорит, мы то? Как зачал бить. Так бил, так волочил!
Алпатыч как бы одобрительно кивнул головой на эти слова и, не желая более ничего знать, подошел к противоположной – хозяйской двери горницы, в которой оставались его покупки.
– Злодей ты, губитель, – прокричала в это время худая, бледная женщина с ребенком на руках и с сорванным с головы платком, вырываясь из дверей и сбегая по лестнице на двор. Ферапонтов вышел за ней и, увидав Алпатыча, оправил жилет, волосы, зевнул и вошел в горницу за Алпатычем.
– Аль уж ехать хочешь? – спросил он.
Не отвечая на вопрос и не оглядываясь на хозяина, перебирая свои покупки, Алпатыч спросил, сколько за постой следовало хозяину.
– Сочтем! Что ж, у губернатора был? – спросил Ферапонтов. – Какое решение вышло?
Алпатыч отвечал, что губернатор ничего решительно не сказал ему.
– По нашему делу разве увеземся? – сказал Ферапонтов. – Дай до Дорогобужа по семи рублей за подводу. И я говорю: креста на них нет! – сказал он.
– Селиванов, тот угодил в четверг, продал муку в армию по девяти рублей за куль. Что же, чай пить будете? – прибавил он. Пока закладывали лошадей, Алпатыч с Ферапонтовым напились чаю и разговорились о цене хлебов, об урожае и благоприятной погоде для уборки.
– Однако затихать стала, – сказал Ферапонтов, выпив три чашки чая и поднимаясь, – должно, наша взяла. Сказано, не пустят. Значит, сила… А намесь, сказывали, Матвей Иваныч Платов их в реку Марину загнал, тысяч осьмнадцать, что ли, в один день потопил.
Алпатыч собрал свои покупки, передал их вошедшему кучеру, расчелся с хозяином. В воротах прозвучал звук колес, копыт и бубенчиков выезжавшей кибиточки.
Было уже далеко за полдень; половина улицы была в тени, другая была ярко освещена солнцем. Алпатыч взглянул в окно и пошел к двери. Вдруг послышался странный звук дальнего свиста и удара, и вслед за тем раздался сливающийся гул пушечной пальбы, от которой задрожали стекла.
Алпатыч вышел на улицу; по улице пробежали два человека к мосту. С разных сторон слышались свисты, удары ядер и лопанье гранат, падавших в городе. Но звуки эти почти не слышны были и не обращали внимания жителей в сравнении с звуками пальбы, слышными за городом. Это было бомбардирование, которое в пятом часу приказал открыть Наполеон по городу, из ста тридцати орудий. Народ первое время не понимал значения этого бомбардирования.
Звуки падавших гранат и ядер возбуждали сначала только любопытство. Жена Ферапонтова, не перестававшая до этого выть под сараем, умолкла и с ребенком на руках вышла к воротам, молча приглядываясь к народу и прислушиваясь к звукам.
К воротам вышли кухарка и лавочник. Все с веселым любопытством старались увидать проносившиеся над их головами снаряды. Из за угла вышло несколько человек людей, оживленно разговаривая.
– То то сила! – говорил один. – И крышку и потолок так в щепки и разбило.
– Как свинья и землю то взрыло, – сказал другой. – Вот так важно, вот так подбодрил! – смеясь, сказал он. – Спасибо, отскочил, а то бы она тебя смазала.
Народ обратился к этим людям. Они приостановились и рассказывали, как подле самих их ядра попали в дом. Между тем другие снаряды, то с быстрым, мрачным свистом – ядра, то с приятным посвистыванием – гранаты, не переставали перелетать через головы народа; но ни один снаряд не падал близко, все переносило. Алпатыч садился в кибиточку. Хозяин стоял в воротах.
– Чего не видала! – крикнул он на кухарку, которая, с засученными рукавами, в красной юбке, раскачиваясь голыми локтями, подошла к углу послушать то, что рассказывали.
– Вот чуда то, – приговаривала она, но, услыхав голос хозяина, она вернулась, обдергивая подоткнутую юбку.
Опять, но очень близко этот раз, засвистело что то, как сверху вниз летящая птичка, блеснул огонь посередине улицы, выстрелило что то и застлало дымом улицу.
– Злодей, что ж ты это делаешь? – прокричал хозяин, подбегая к кухарке.
В то же мгновение с разных сторон жалобно завыли женщины, испуганно заплакал ребенок и молча столпился народ с бледными лицами около кухарки. Из этой толпы слышнее всех слышались стоны и приговоры кухарки:
– Ой о ох, голубчики мои! Голубчики мои белые! Не дайте умереть! Голубчики мои белые!..
Через пять минут никого не оставалось на улице. Кухарку с бедром, разбитым гранатным осколком, снесли в кухню. Алпатыч, его кучер, Ферапонтова жена с детьми, дворник сидели в подвале, прислушиваясь. Гул орудий, свист снарядов и жалостный стон кухарки, преобладавший над всеми звуками, не умолкали ни на мгновение. Хозяйка то укачивала и уговаривала ребенка, то жалостным шепотом спрашивала у всех входивших в подвал, где был ее хозяин, оставшийся на улице. Вошедший в подвал лавочник сказал ей, что хозяин пошел с народом в собор, где поднимали смоленскую чудотворную икону.