Ответы на вопросы на собеседование 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-файле, может иметь id атрибут и может быть позже вызвана по нему. Идентификаторы должны быть уникальными. Здесь можно привести аналогию с языком программирования, где цель - это функция, а задача - это операция. Между целями можно проставлять зависимости, что позволяет определить порядок вызова.
Ant позволяет задавать глобальные переменные, которые можно использовать в любом месте проекта. Необходимо запомнить одно правило, значения переменной можно задавать один раз.
- Напишите команду чтобы запустить процесс сборки, из командной строки.
Откройте командную строку и перейти в каталог где расположен файл build.xml. Введите в "ant" или "ant -f build.xml", чтобы начать процесс сборки.Если ви назвали свой файл по-другому, к примеру, "mybuild.xml", то для запуска задач из этого файла всегда нужно будет указывать его название "ant -f mybuild.xml".
- Что вы знаете о теге Project.
Все XML-элементы файла должны быть размещены внутри тега <project></project>.Тег project имеет три атрибута:
- name - имя проекта, этот атрибут не обязателен.
- default - цель по умолчанию, которая будет использоваться, если явно не указанно, какую цель выполнять, это обязательный атрибут.
- basedir - основная директория, из которой будут выходить все пути, использующиеся при работе (если она не указана, то будет использоваться текущая директория, в которой находится build-файл), этот атрибут не обязателен.
- Что вы знаете о теге Target.
В файле build.xml должно быть хотя бы одно задание (цель). Задания могут зависеть от других заданий. Например, имеются два задания: для компиляции и для изъятия файлов с базы данных. Соответственно скомпилировать файлы можно только после того, как они будут извлечены. Ant учитывает такие зависимости.Target имеет следующие атрибуты:
- name - имя цели, это обязательный атрибут.
- depends - разделённый запятыми список имён целей, от которых эта цель зависит, этот атрибут не обязателен.
- if - имя параметра, который должен быть установлен, чтобы эта цель выполнялась, это не обязательный атрибут.
- unless - имя параметра, который не должен быть установлен, чтобы эта цель выполнялась, этот атрибут не обязателен.
- description - небольшое описание функции function цели, это не обязательный атрибут.
- extensionOf - добавляет текущую цель в список зависимостей extension-point, это не обязательный атрибут.
- onMissingExtensionPoint - что делать, если эта цель пытается расширить отсутствующею в extension-point списоке. Не допускается, если extensionOf не присутствует. это не обязательный атрибут.
- В каком порядке выполняются цели объявление в атрибуте 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 коментарі :
Отправить комментарий