Friday, May 13, 2011

Ant. Автоматизация. Самое начало.

Приветствую. По долгу своей службы, пришлось повышать свои знания, а именно, заняться рассмотрением системы под названием Ant. Ее цели, если вкратце, автоматизация каких-либо процессов.

И так, как шел процесс обучения и что же вышло в итоге, смотрим ниже.

Ant?
Верно, Ant. Ну вот честно признаюсь, никогда как то не углублялся в подобные вещи и сказать, что я знаю что лучше, а что хуже, значит, что я совру. Ну что сразу бросается в глаза:
  1. XML - конечно же, что может быть проще для человека, чтобы описать какое то действие с параметрами и включенными, внутри, действиями и/или параметрами. Однозначно плюс
  2. Java - сразу не понял причем тут Java к XML? Оказалось, с помощью Java собираются .jar пакеты и далее могут напрямую, как классы, использоваться в XML для выполнения действий, мало того, само собой XML и Java работают на любой платформе. Опять же, плюс
Дальше в принципе мелочи, которые касаются непосредственно самого Ant'a. Думаю, плюсы очевидны и система однозначно устраивает меня для решения поставленной задачи.

С чего же начать?
Немного отойду от темы. Очень часто на форумах встречаются вопросы: "Как начать?", "Где взять информацию?", разумеется это еще я мягко сказал. Ну честное слово, смех да и только, "старший брат" все знает и все сразу расскажет тебе и мне, задай только верный вопрос.
Возвращаясь к теме, логично предположить, что пойти мы должны сюда для проведения исследования. Долго не думая, скачиваем последний из дистрибутивов Ant'a, а еще идем сюда за JDK, я скачал jdk1.6.0_23 и радуюсь. Сразу запомните куда, в какую директорию, установили Ant и JDK, у меня E:\Install\apache-ant-1.8.2 и C:\Program Files\Java\jdk1.6.0_23 соответственно, в Windows.

Ну когда же?
Теперь можем начинать что-то выдумывать. Я использую Windows 7 x64 и первой проблемой, а как я ее только не пытался решить, стало установка локальных переменных среды, а именно: JAVA_HOME и ANT_HOME, которые как раз и указывают на путь к корневой директории дистрибутивов Ant и Java.
Из-за пресловутой юзабилити Windows я решил пойти более кардинальным путем, создал .bat скрипт, который все за меня делает каждый раз и после запускает Ant для выполнения ant-скрипта. Выглядит примерно так:
@set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_23
@set ANT_HOME=E:\Install\apache-ant-1.8.2
@call ant
@pause
Ничего сложного, устанавливаем переменные среды и запускаем Ant.

Поспешили?
Видимо да. Оговорился о каком то ant-скрипте, а может я его и не верно обзываю. Вообщем, основа Ant это исполнения того самого XML описанного в build.xml. Собственно все нужные для выполнения действия описаны именно в нем, по умолчанию. Чтобы снова не спешить, есть еще один файлик, build.properties (в принципе можно обозвать как угодно). Если и на сколько верно я понял он выступает контейнером настроек пользователя, можно сказать контейнером переменных, на пример путей к различным файлам, папкам или какая либо информация о том же SVN акаунте или еще чего. В принципе просторы необъятны.

Куда же без примера:
src.dir=src
build.dir=build

svn.account.name=vlad
svn.account.password=ne.skazhu
Т.е. все как обычно, параметр=значение, новая строка, новый_параметр=его_значение и т.д.

Наконец то
Перейдем непосредственно к build.xml. Мои познания не очень глубоки, сами понимаете всего пару дней изучал. Ну расстраиваться и делать поспешные выводы не стоит, в итоге все ведь заработало. Для облегчения жизни, а именно при написании build.xml я использовал Ant editor из пакета Eclipse, вполне удобно, я вам скажу, советую.

И так, пойдем по порядку. С чего начинается build.xml:

Как не трудно догадаться, root-элемент project, выступает описателем и инициатором всего того, что мы тут с вами затеяли. Так же, name - название проекта, далее может использоваться как переменная ${ant.project.name}. Вполне адекватное название, структурировано и логично, что не может радовать. Идем дальше, basedir - где "." обозначает текущую директорию как рабочую, для данного проекта. default - вот оно, стартовый актион, действие по своей сути, с которого все начнется.

*пока писал, всплыло в головушке, что по сути Makefile это все, но конечно же намного круче, почему?, ну вы могли прочитать в самом начале всего этого потока сознания.

Идем еще дальше. Как я уже упомянул о файлах *.properties, набор свойств, создать мы создали, как же подключить? Очень просто, и на сколько я понял, сколько угодно.

Как вам? Как по мне, прекрасно.

Как выглядит стартовый target, цель?

Да, так просто. Могли заметить новый параметр depends. По сути хранит список, разделяемый запятой, всех target'ов, которые должны быть выполнены прежде, чем выполниться сам main. По сути, создается такая цепочка действий, которые и приводят к успешному, а может и нет, завершению main target'a.

Для выполнения main target'a нам нужно описать doThat target. Пусть он создаст папку build. Как раз вспомним, что мы описывали такое вот свойство в build.properties: build.dir=build. Так что не будем писать имя папки в скрипте, а воспользуемся свойством из build.properties:

 

Теперь сохраняем build.xml, и запускаем, рядом лежащий, build.bat.

И что?
Ну а чего вы ожидали? Получили в итоге рабочий Ant, а именно представляем как работают основы. Файл свойств, построение проекта Ant, создание логической цепочки действий, создание директории с использованием свойств. Да, просто, но с чего же еще начинать.

Если было интересно, в следующий раз расскажу как создавать свое собственное действие (из .jar) и как его исполнять из build.xml.

Спасибо и до скорого.

No comments:

Post a Comment