Ответы на вопросы на собеседование Apache Ant (часть 1).

  • Что такое Apache Ant?

Apache Ant - это основанный на Java набор инструментов для сборки приложений. Большое преимущество Ant в его платформонезависимости. Все инструкции командной строки, используемые для развертывания приложения, представляются простыми XML-элементами. Ant можно использовать на любой операционной системе, на которой работает Java. Ant, в отличие от другого сборщика проектов Apache Maven, обеспечивает императивную, а не декларативную сборку проекта.

  • Как начать использовать ant?

Это очень просто.
  • Загрузите последнюю версию ant из Apache. Распакуйте в папку на Вашей машине.
  • Установите Java SDK (последнюю версию).
  • Пропишите переменные окружения, JAVA_HOME и ANT_HOME.
  • Добавте в Path %JAVA_HOME%/bin;%ANT_HOME%/bin в Windows, или ${JAVA_HOME}/bin:${ANT_HOME}/bin в UNIX.
  • Напишите "Hello world" build.xml
  • В каталоге где расположен build.xml в командной строке введите ant.

  • Для чего нужен build.xml, из чего он состоит?

build.xml - файл сборки, данный файл обычно называют сценарии сборки, он должен находиться в базовой директории проекта (однако не существует никаких ограничений на имя файла или его расположение).
Файл build.xml содержит внутри себя корневой элемент project, наполнением которого являются элементы, относящиеся к одному из следующих понятий:
  • Цели (Targets)
  • Задачи (Tasks)
  • Ресурсы (Resources)
  • Свойства (Properties)
Каждый build-файл содержит один проект (project) и хотя бы одну цель (target). Цель содержит задачи (tasks), задачи могут использовать для своей работы отдельные ресурсы (resources) (например, файл) или коллекцию ресурсов (множество файлов). Кроме целей, задач и ресурсов есть свойства (properties). К свойствам можно относится как к переменным, а точнее константам. У свойства есть имя и значение в виде строки. Значение свойства устанавливается один раз и любая попытка изменить это значение игнорируется.
 Каждая задача, встречающаяся в build-файле, может иметь id атрибут и может быть позже вызвана по нему. Идентификаторы должны быть уникальными. Здесь можно привести аналогию с языком программирования, где цель - это функция, а задача - это операция. Между целями можно проставлять зависимости, что позволяет определить порядок вызова.
Ant позволяет задавать глобальные переменные, которые можно использовать в любом месте проекта. Необходимо запомнить одно правило, значения переменной можно задавать один раз.

  • Напишите команду чтобы запустить процесс сборки, из командной строки.

Откройте командную строку и перейти в каталог где расположен файл build.xml. Введите в "ant" или "ant -f build.xml", чтобы начать процесс сборки.
 Если ви назвали свой файл по-другому, к примеру, "mybuild.xml", то для запуска задач из этого файла всегда нужно будет указывать его название "ant -f mybuild.xml".

  • Что вы знаете о теге Project.

Все XML-элементы файла должны быть размещены внутри тега <project></project>.
Тег project имеет три атрибута:
  • name  - имя проекта, этот атрибут не обязателен.
  • default - цель по умолчанию, которая будет использоваться, если явно не указанно, какую цель выполнять, это обязательный атрибут.
  • basedir - основная директория, из которой будут выходить все пути, использующиеся при работе (если она не указана, то будет использоваться текущая директория, в которой находится build-файл), этот атрибут не обязателен.
Каждый проект содержит одну или несколько целей. Цель представляет собой набор задач, которые необходимо выполнить. При запуске Ant можно выбрать цель, которую(ые) следует выполнить. Если цель не указывать, будет выполнена установленная по умолчанию.

  • Что вы знаете о теге Target.

В файле build.xml должно быть хотя бы одно задание (цель). Задания могут зависеть от других заданий. Например, имеются два задания: для компиляции и для изъятия файлов с базы данных. Соответственно скомпилировать файлы можно только после того, как они будут извлечены. Ant учитывает такие зависимости.
Target имеет следующие атрибуты:
  • name - имя цели, это обязательный атрибут.
  • depends - разделённый запятыми список имён целей, от которых эта цель зависит, этот атрибут не обязателен. 
  • if - имя параметра, который должен быть установлен, чтобы эта цель выполнялась, это не обязательный атрибут.
  • unless - имя параметра, который не должен быть установлен, чтобы эта цель выполнялась, этот атрибут не обязателен.
  • description - небольшое описание функции function цели, это не обязательный атрибут.
  • extensionOf - добавляет текущую цель в список зависимостей extension-point, это не обязательный атрибут.
  • onMissingExtensionPoint - что делать, если эта цель пытается расширить отсутствующею в extension-point списоке. Не допускается, если extensionOf не присутствует. это не обязательный атрибут.
Если не установлены if и unless атрибуты, цель будет выполняться всегда. Опциональный атрибут description может быть использован как описание цели и будет выводиться при команде - projecthelp.

  • В каком порядке выполняются цели объявление в атрибуте depends?

Следует отметить, что depends-атрибут Ant только обозначает порядок, в котором цели должны быть выполнены. Ant пробует выполнить цели в порядке, соответствующем порядку их появления в атрибуте depends (слева направо). Пример:
Пусть нужно выполнить цель D. Из её атрибута depends можно узнать, что первой выполнится цель C, затем B и, наконец, A. Неверно: C зависит от B, a B зависит от A, таким образом, первой выполнится цель A, затем B, потом C, а после D.
Цель будет исполнена только один раз, даже если более чем одна цель зависит от неё.

  • Что вы знаете о теге Property.

Свойства в Ant задаются с помощью тега <property>. Свойства очень похожи на константы в языках программирования: задав один раз, вы больше не сможете поменять их во время исполнения сценария. Обращаться к свойствам следует через конструкцию ${property_name}. Свойства можно задавать не только внутри <project>, но и внутри <target>.
Установка значения может происходить в самом файле build.xml или во внешнем properties-файле, что очень удобно и позволяет менять процесс сборки не изменяя build.xml.

  • Являются ли имена свойств чувствительными к регистру?

Да.

  • Как использовать ant-contrib задачи?

Просто скопируйте ant-contrib.jar  в ваш ant*/lib каталог, и добавьте эту строку в ваш  ant-скрипт, все ant-contrib задачи теперь будут доступны для вас.

  • Какие символы разделители используются в path-like структурах в ant?

Можно определить типы ссылок path и classpath, используя как «:» (unix-style), так и «;» (windows-style) как разделитель символов. Ant скорректирует их в требуемые текущей операционной системой.

  • Как установить classpath в ant скрипт?

Следующий фрагмент кода демонстрирует как установить classpath в ant:

  • Расскажите о задачах в ant.

Задачи представляют действия, которые могут осуществляться с какими-либо ресурсами или без их участия.
Ниже приведу простейшие примеры использования задач.
  • Создание каталога:
  • Копирование файла:
  • Компиляция файлов с кодом java:
Иногда для выполнения некоторых задач хватает лишь указания правильных атрибутов, но кроме этого внутри тега задачи могут находиться и вложенные элементы, которые, могут описывать ресурсы с которыми необходимо работать задаче.
Ant предоставляет слишком много задач, чтобы дать полное описание того, что каждая из них делает. Следующий список дает представление о категориях, на которые можно разделить все задачи:
  • Archive Tasks
  • Audit/Coverage Tasks
  • Compile Tasks
  • Deployment Tasks
  • Documentation Tasks
  • EJB Tasks
  • Execution Tasks
  • File Tasks
  • Java2 Extensions Tasks
  • Logging Tasks
  • Mail Tasks
  • Miscellaneous Tasks
  • Pre-process Tasks
  • Property Tasks
  • Remote Tasks
  • SCM Tasks
  • Testing Tasks

Рассказать друзьям:

0 коментарі :

Отправить комментарий