Apache Ant — различия между версиями

Материал из devopswiki
Перейти к: навигация, поиск
(Расширенные сведения)
(нет различий)

Версия 14:33, 19 октября 2012

Apache Ant (англ. ant — муравей или акроним — Another Neat Tool) – вспомогательная компьютерная программа в составе общего программного обеспечения (утилита), разработанная организацией-фондом Apache Software Foundation (ASF). Данная утилита относится к кросс-платформенному программному обеспечению. Была разработана в рамка проекта под названием «Jakarta»,а сегодня это уже самостоятельный проект.

Общие сведения

Базовую информацию об Apache Ant Вы можете получить, перейдя по следующим ссылкам:

Apache Ant в Википедии

Официальный сайт Apache Ant

Пошаговое руководство по использованию Apache Ant

Расширенные сведения

С дополнительной информацией об этом понятии Вы можете ознакомиться ниже.

История

Впервые утилита Ant была разработана Джеймсом Дунканом Девисоном (James Duncan Davidson), как проект с открытым исходным кодом. Поначалу этот продукт принадлежал компании Sun Microsystems, но позже трансформировался в Apache Tomcat. Первая версия была создана на операционной системе Solaris. Утилита Ant была создана, как независимое от платформы программное обеспечение. Первая версия Ant (1.1), как автономный продукт, была официально представлена 19 июля 2000 года.

Особенности

Apache Ant обеспечивает императивную сборку проекта, то есть описывает процесс вычисления в виде инструкций, изменяющих состояние программы. Императивная программа очень похожа на приказы, выражаемые повелительным наклонением в естественных языках, то есть это последовательность команд, которые должен выполнить компьютер.

Для сборки используется файл XML, в котором хранятся задачи, относящиеся к каждому отдельному проекту. Находясь в этой директории с помощью командной строки можно запускать такие команды как: ant <имя задачи>, после чего соответствующая задача будет найдена в XML файле и выполнена. Файл XML, который использует утилита Apache Ant должен называться build.xml.

Возможности

  • может извлекать исходный код из системы контроля версий: CVS, Subversion, Synergy, Perforce, ClearCase и множества других.
  • может компилировать исходный код.
  • может запускать модульные тесты: JUnit3, JUnit4, TestNG.
  • возможности Ant позволяют поддерживать 80 основных команд-заданий и 60 дополнительных (опциональных).
  • может управлять зависимостями между целями (Targets)

Терминология

<project> - элемент верхнего уровня в скрипте Ant. Он имеет 3 опциональных атрибута:

name – название проекта

default - (по умолчанию) – используется, когда Цель не заведена

basedir – базовая функция, которая производит все вычисления.

Target

  • Для каждого проекта выбираются 0 и больше Целей.
  • Цель – это совокупность команд-заданий, которые необходимо выполнить.
  • Запуская программу Ant, можно выбрать из перечня необходимые для выполнения Цели.
  • Когда Цель не определена, срабатывает default.
  • Доступны условные функции (если/если не).
  • Одна Цель может зависеть от другой.

Пример Target

<target name=”A”/>
<target name=”B”/> depends=”A”/>
<target name=”C”/> depends=”A”/>
<target name=”D”/> depends=”B,C”/>

Предположим, мы хотим, чтобы была выполнена Цель D, которая зависит от Целей B и C. В то же время Цель С зависит от А; Цель В от А. Тогда сначала требует выполнения Цель А, потом В, после – C, и последняя выполняется Цель – D.

Команда-задание (Task)

  • Команда-задание – это часть кода, которая может быть выполнена.
  • Команда-задание состоит из множества атрибутов (также известных как аргументы).
  • Ant поддерживает 80 основных и 60 дополнительных команд-заданий.

Пример конфигурации

Ниже Вы можете знакомиться с примером добавления задач для Apache Ant в build.xml:

  <target name="update" depends="datanucleusenhance"
      description="Uploads the application to App Engine.">
    <appcfg action="update" war="war" />
  </target>

  <target name="update_indexes" depends="datanucleusenhance"
      description="Uploads just the datastore index configuration to App Engine.">
    <appcfg action="update_indexes" war="war" />
  </target>

  <target name="rollback" depends="datanucleusenhance"
      description="Rolls back an interrupted application update.">
    <appcfg action="rollback" war="war" />
  </target>

  <target name="request_logs"
      description="Downloads log data from App Engine for the application.">
    <appcfg action="request_logs" war="war">
      <options>
        <arg value="--num_days=5"/>
      </options>
      <args>
        <arg value="logs.txt"/>
      </args>
    </appcfg>
  </target>