воскресенье, 25 апреля 2010 г.

Введение в ANT

ANT - это аббревиатура от Another Neat Tool ( Еще один необходимый документ). Это инструмент для автоматической сборки трудных, часто повторяющихся задач таких как настройка classpath, компиляцию кода или упаковку откомпилированных файлов и много других действий. которые вы только можете представить.
ANT разработан на Java и по этому он платформа-независимый. ANT получает инструкции в виде XML-Документа, поэтому он легко расширяемый и удобный в использовании. Вам не нужны какие-нибудь специальные редакторы для того что-бы создать конфиг для ANT-а, сойдет самый обычный текстовый редактор.



Установка ANT-а:
Если вы используете какое-нибудь IDE типа Eclipse тогда вам не нужно скачивать никаких дополнительных библиотек, они по-дефолту встроены туда.


Если же вы не используете IDE и делаете все в текстовом редакторе, тогда вам нужно сделать кое-что:
Steps to set path cmd if you are not using any IDE:
  1. Скачать файлы из http://jakarta.apache.org/ant/index.html и распаковать их где вам удобно. and unzip them to some directory.
    В нашем случае мы назовем папку - ant.
  2. Добавьте путь  /%ПУТЬ_ К_ПАПКЕ%/ant/bin в переменную PATH. (например export PATH=/usr/bin/ant;$PATH )
  3. Добавьте .jar файлы из /%ПУТЬ_ К_ПАПКЕ%/ant/lib в переменную окружения CLASSPATH. Переменную окружения JAVA_HOME установите путь к папке с установленной JDK. В переменную CLASSPATH добавьте /%ПУТЬ_ К_JDK%/lib
Формат файла настройки ANT-а (build.xml) :
Это XML файл, обычно по-умолчанию ант использует файл с именем build.xml. Ниже представлен скриншот билд файла, он настроен на сборку кода из папочки src
 Это об]явление XML файла, с его версией. Все файлы должны начинаться с этого.
 Этот элемент содержит три атрибута.
     1. name:  Тут вы указываете имя проекта для которого вы пишите этот билд файл
     2. default:  Это действие по-умолчанию которое будет выполнено антом.
     3. basedir: Это базовая(корневая) директория для вашего проекта. В фале . означает текущая директория. Если        этот атрибут не будет указан - будет использована родительская, то есть на каталог выше.




  Догадайтесь сами.
  Этот элемент позволяет вам описывать свои собственные свойства и их значения. Пара свойство-значение, где вы можете получить значение обратившись к свойству  This element allows you to write your own variable with their values. You can define as many properties as you need. This is a name-value pair where you can access the value of a property by writing it in $ {propertyName}.
        МЕЖДУ $ И { } НЕТ ПРОБЕЛА.
 Этот пункт имеет два элемента.
1. Target:  Этот элемент может быть описан как функция которая содержит набор инструкций к исполнению. Он содержит атрибут name который используется для вызова данного таргета ( не знаю как это по русски).
2. mkdir: Этот элемент используется для создания директории. Он содержит атрибут dir который принимает значение имени директории которая будет создана. 
 Этот пункт компилирует код.
This target compiles the code. Здесь в атрибуте depends указано что данный элемент зависит он элемента init. В качестве компилятора используется javac из переменной окружения PATH, если он явно не указан в отдельном атрибуте. Итак, что бы запустить все это, у вас уже должны быть настроены переменные окружения JAVA_HOME и CLASSPATH. srcdir  - директория с исходниками .java; destdir- директория для скомпилированных файлов .class

Создание Build файла для компилирования проектп:

Сейчас мы напишем билд файл который выполни чистую сборку проекта.В нашем проекте все исзодники находятся в директории и там есть один файл HelloWorld.java для компиляции.






01.xml version="1.0" encoding="UTF-8"?>
02. 
03.
04.<project name="HelloWorld" basedir="." default="compile">
05. 
06.
07.<property name="bin" value="bin" />
08. 
09.
10.<target name="init" depends="clean">
11.<mkdir dir="${bin}" />
12.target>
13. 
14.
15.<target name="clean">
16.<delete dir="${bin}" />
17.target>
18. 
19.
20.<target name="compile" depends="init">
21.<javac srcdir="src" destdir="${bin}" />
22.target>
23.project>




Я надеюсь что в примере выше все понятно и мы двинемся дальше к  такое веще как dependency (зависимости).
Когда элемент target содержит атрибут depends - это означает что текущий блок будет исполнен только после елемента от которого он зависит.


В нашем случае зависимости идут в таком порядке:
1. Запуск елемента по-умолчанию compile, который зависит от init.
2. Запуск елемента init, который зависит от таргета clean.
3. Итак, сначала зупустится на исполнение clean затем init и далее compile.


Имейте в виду:
Вы можете указывать несколько параметров в атрибуте depends, например depends="clean,init" и его исполнение будет происходит с лева направо. Будьте осторожны с описанием зависимостей.


Запуск ant файла


Если выиспользуете IDE например Eclipse, вы можете просто кликнуть правой кнопкой и выбрать Run As --> ANT build.




Если с вашим CLASSPATH и кодом все в порядке, вы увидите в консоле следущее :





Всего хорошего!

Комментариев нет:

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

Постоянные читатели