О работоспособности муравья сложено не мало сказок и басен… но в данной статье речь пойдет о Apache Ant – не менее работоспособной и гибкой утилиты для сборки проектов.
Все кто сталкивался с процессом сборки проектов на java, без использования IDE, знают насколько это трудоемкий и не удобный процесс, а особенно если приходится проводить эти сборки часто. К счастью есть одно замечательное средство от это болезни – это Apache Ant java утилита для сборки, и не только, проектов.
Необходимые инструменты
И так для работы нам понадобится:
jdk-1.5 (или выше)
Ant 1.6.5
Так как Apache Ant, является java приложением то для его работы требуется JVM, процесс установки которой я описал в своей статье Установка и настройка java.
Все необходимые дистрибутивы Apache Ant можно скачать с сайта - http://ant.apache.org/bindownload.cgi
Установка Ant
После распаковывания архива с дистрибутивом Ant получаем следующую структуру каталогов
ant
+--- bin // содержит крипты запуска
|
+--- lib // содержит Ant jars плюс необходимые ресурсы
|
+--- docs // содержит документацию
| +--- ant2 // краткое описание ant2
| |
| +--- images // для html документации
| |
| +--- manual // Ant документация (читать всем ;-)
|
+--- etc // содержит xsl чтобы:
// - создания различных отчетов xml (выход. задач).
// - переброски ваших build файлов и вывода предупреждающих сообщений
// - ... и многое другое ;-)
Теперь процесс установки будет зависить от ОС на которой будет работа ant.
Windows and OS/2
Подразумеваем что Ant установлен (распакован) по адресу c:\ant\. Следующем шагом устанавливаем переменные окружения:
set ANT_HOME=c:\ant set JAVA_HOME=c:\jdk1.2.2 set PATH=%PATH%;%ANT_HOME%\bin
Unix/Linux
Подразумеваем что Ant установлен (распакован) по адресу /usr/local/ant. Следующем шагом устанавливаем переменные окружения:
export ANT_HOME=/usr/local/ant export JAVA_HOME=/usr/local/jdk-1.2.2 export PATH=${PATH}:${ANT_HOME}/bin
setenv ANT_HOME /usr/local/ant setenv JAVA_HOME /usr/local/jdk-1.2.2 set path=( $path $ANT_HOME/bin )
На этом в принципе процесс установки заканчиваться. Теперь чтобы проверить, что все работает, в консоли выполните следующую команду :
> ant -version
Apache Ant version 1.6.5 compiled on June 2 2005
Версия и дата могут отличатся.
Написание простого build фала
Build файлы для Ant имеют xml структуру. Каждый build файл, должен содержать по крайней мере один проект, который описывается секцией project и должен содержать по крайней мере одно «здание» (task).
секция project имеет три атрибута:
| атрибут | Описание | Обязательный |
| name | Имя проекта. | нет |
| default | Цель (target), которая должна быть выполнена по умолчанию. | нет; с версии 1.6 все build файлы должна содержать одну задачу которая включает в себя вызовы остальных подзадач и реализует логику сборки. |
basedir | Базовая директория проекта в которой происходи сборка. | нет |
Секция target имеет следующие атрибуты:
| Attribute | Description | Required |
| name | Имя цели. | Yes |
| depends | Список имен «целей», разделенных запятыми, которые должны быть выполнены прежде выполнения данной задачи. | No |
| if | Имя свойства, которое должно быть заданно перед выполнением данной цели. Если свойство не заданно (не имеет значения) то цель не выполняется. | No |
| unless | Имя свойства, которое не должно быть заданно перед выполнением данной цели. Если свойство заданно (имеет значения) то цель не выполняется. | No |
| description | Короткое описание цели. | No |
task это часть кода который может быть выполнен.
task может иметь множество атрибутов (или аргументов как вы предпочитаете).Значения этих атрибутов могут быть ссылки на параметры (property).
Структура таска:
<name attribute1="value1" attribute2="value2" ... />Секция проекта модет иметь свойства Properties – это своего рода переменные, которые хранят значения необходимы для сборки, например: имя директории с исходными файлами, путь для скомпилированных кодов и тд.
Например:
<property name="service.name" value="SimpleService" />Ниже будет представлен простой пример build файла который позволяет откомпилировать java проект и собрать его дистрибутив в виде jar файла.
<project name="MyProject" default="dist" basedir="."> <description> simple example build file </description> <!-- Устанавливаем глобальные properties для этой сборки --> <property name="src" location="src"/> <property name="build" location="build"/> <property name="dist" location="dist"/> <target name="init"> <!-- Создадим штамп времени --> <tstamp/> <!-- Создадим build директория используемую для компиляции --> <mkdir dir="${build}"/> </target> <target name="compile" depends="init" description="compile the source " > <!-- Компилирует java код из ${src} в ${build} --> <javac srcdir="${src}" destdir="${build}"/> </target> <target name="dist" depends="compile" description="generate the distribution" > <!-- Создает директорию для дистрибуции --> <mkdir dir="${dist}/lib"/> <!-- Добавить все из ${build} в MyProject-${DSTAMP}.jar файл --> <jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/> </target> <target name="clean" description="clean up" > <!-- Удаляем ${build} и ${dist} деревья директориев --> <delete dir="${build}"/> <delete dir="${dist}"/> </target> </project>
Если пошагово описать процесс сборки, то это буде выглядить так:
- Указываем сборщику что имеем проект «MyProject» с текущей директорией из корня проекта (те на уровни папок src). Добавляем краткое описание проекта. Указываем что по умолчанию будет выполняться цель «dist»
- Указываем необходимые свойства – property
- Ant сборщик загружает цель по умолчанию – «dist» и определяет ее зависимость (depends) в данном случае это цель «compile»
- Ant сборщик загружает цель «compile» определяет ее зависимость (depends) в данном случае это цель «init»
- Ant сборщик загружает цель «init» и выполняет ее: создает необходимые директории и штамп времени
- Выполняется цель «compile»: вызывается компилятор javac, который компилирует исходные коды из «src» в папку «build»
- Выполняется цель «dist»: создается папка «dist», в которой создается jar архив.
Выполнение build скрипта
Для выполнения скрипта в командной строке, в папке с фалом build.xml необходимо выполнить следующую команду:
> antДля получения справочной информации о build скрипте, необходимо выполнить команду:
> ant -p
Для выполнения определенной «цели» зи build скрипта, необходимо выполнить команду вида:
> ant <имя цели>
выполните команду:
> ant -?В дальнейших статьях, примерах, посвященным java программированию, я планирую активно использовать Apache Ant, в которых я постараюсь описать другие его возможности.
Жду ваших пожеланий и комментариев.
1 комментарий:
понравилась статья,спасибо. еще тут почитать можно http://www.enterra.ru/blog/automation_builds_android_applications/
Отправить комментарий