11 дек. 2007 г.

Delphi. Автоматизация сборки проектов Apache Jakarta Ant

Что такое Ant ?
Это написанное на Java средство автоматизации сборки программных проектов, подобное известной утилите «make», но избавленное ее недостатков и ограничений. Поскольку Ant написан на чистом Java, то отсюда вытекаят явная выгода его кросплатформности, тоесть независимости от операционной системы. Как большинство программы написанных на Java под эгидой Apache Foundation – Jakarta Ant является OpenSource ПО, следовательно вам не придется как минимум платить за лицензию, а как максимум вы имеете в распоряжении исходный код.

Возможности

  • Работа с файлами и каталогами(копирование, перемещение, удаление);
  • Работа с архивами(zip/bzip2);
  • Запуск внешних приложений;
  • Интеграция с системами контроля версий CVS, Subversion, SouceSafe, Perforce;
  • Чтение из файла и подстановки переменных;
  • Работа по HTTP и FTP протоколам;
  • Показ заставки в процессе выполнения цели(декоративная функция);
  • Поддержка мультиязычности в сообщениях интерфейса;
  • Масштабируемость, возможность создания собственных заданий;
  • Интерфейс командной строки и гибкая система файлов настроек;
  • Кросплатформенность;
  • Система логирования;
  • Работа с электронной почтой;
  • Возможность вызова заданий находящихся во внешних ant-файлах;
  • Связывание отдельных задач в цепочки зависимостей и получения однозначного ответа о выполнении;


Идеология:
Существует файл проекта в котором с помощью xml описаны цели [target]. Цели состоят из задач [task]. Результат выполнения цели зависит от результата выполнения задач из которых состоит цель. Цели могут объединяться в более крупные цели с помощью зависимостей [depends]. Результат таких составных целей зависит от выполнения всех составляющих цепочки. [Properties] определяют глобальные переменные проекта, такие как название, номер релиза, текущий каталог и т.д. Существуют еще условия [condition], но их использование не обязательно.

Поясню зачем я это излагаю.
«Написанный НА Java» - не эквивалентно «написанный ДЛЯ Java», верней «ТОЛЬКО для Java».
Теоретически мы можем использовать его для автоматизации практически любого процесса в системе.
Логика работы Ant такова, что на выходе мы 100% получить ответ: «Таки, ДА, достигли мы намеченной цели, или, таки, НЕТ».

Ревизия средств сборки проектов встроенных в Delphi.

Технические требования и установка
Sun JDK – установку рассказывать не буду их полно в интернете да и на сайте довольно доходчиво написано. Правда на английском, но если вы хотите программировать, то должны хотя-бы читать, иначе ваш удел строгать бухгалтерию в 1С.

Скачать дистрибутив с сайта и скопировать в каталог: d:\usr\local\ant
В файле autoexec.bat

SET JAVA_HOME=d:\usr\java\jdk1.6.0_03
SET JRE_HOME=d:\usr\java\jdk1.6.0_03\jre
SET PATH=%PATH%;%JAVA_HOME%\bin;d:\usr\local\ant\bin
SET CLASSPATH=%CLASSPATH%;d:\usr\local\ant\lib

тоесть поместить путь к каталогу ant\bin в переменную PATH и указать Java где ей искать библиотеки Ant В переменной CLASSPATH

Перегрузив систему набираем в консоли:
D:\>ant
Buildfile: build.xml does not exist!
Build failed

Все хорошо!!! Ant говорит, что не нашел build-файла, но все таки работает и значит мы все сделали правильно.

Следующий этап создание тестового проекта
Для написания файла проекта нам понадобиться текстовый редактор.
Внимание!!! Если вы планируете писать комментарии на русском языке, то вам понадобиться редактор с поддержкой Unicode. Подойдет например Notepad2, который имеет также встроенную поддержку раскраски xml синтаксиса. Для проектов повышенной степени сложности могу рекомендовать редактор Ant скриптов Eclipse IDE. Редактор поддерживает не только раскраску, но и проверку синтаксиса, дополнение кода, подсказки, средства запуска, так как Ant является штатным средством сборки проектов Eclipse.

Создадим тестовый проект и дадим ему очень «оригинальное» название HelloWorld.dpr.
Поставим себе за цель автоматизировать следующие рутинные операции:
формирование рабочего каталога проекта(configure);
компиляция проекта(compile);
создание билда проекта с автоинкрементальным счетчиком версии и внесением изменений в документацию(build);
очистка проекта от временных файлов(clean);
очистка каталога от необязательных каталогов и файлов(проще говоря, остаются только каталог исходных текстов, потому как бинарные данные и документация генерируются из них и не являются обязательной частью проекта)(purge);
архивация только исходных текстов программы с предварительной очисткой(distr.src);
подготовка архива билда программы, включая исходные тексты(distr.all);
диагностика скрипта с выдачей переменных окружения и текущих настоек(diagnostics);

Выбросил текст проекта. Некогда колдовать над вставкой тегов. Читайте в Архиве.

В общем-то на этом и все, как ни странно. Полный скрипт с подробными комментариями и проектом можно посмотреть в архиве. Целью данной статьи не являться обучение работы с Apache Jakarta Ant. Я хочу лишь обратить внимание аудитории на мощное, хорошо себя зарекомендовавшее и, что немаловажно, свободное средство с открытым кодом, способное существенно облегчить вам жизнь и труд.
При этом возможности не ограничиваются только функциями сборки проекта. Работа по протоколам FTP, HTTP может стать основой автоматической системы обновления, или инструментальным средством репликации. Возможно применение как корпоративного средства развертывания приложения, проще говоря, инсталятора и системы обновления внутри компании. Настраиваемой системы архивации. Выполнение SQL скриптов через JDBC также может существенно пригодится для разработки сервисных утилит обслуживания БД.
В общем не спешите разрабатывать велосипед, возможно он уже есть и давно ездит и нужно только подогнать его под ваш рост и вес ... цель же не разработать ... а просто доехать в пункт назначения.

Проект к статье:
helloworld_win32-build-11.zip


P.S. Архив не спрашивайте - утерян вместе с хостингом.

4 комментария:

Andy комментирует...

Не могу добраться до архива.

Aleksey комментирует...

Архив не загружается. =(

Abracadabr комментирует...

Ссылка битая. Архив не загружается. :(
А хотелось бы посмотреть.

Relax комментирует...

к сожаленю ссылка на архив битая, можете на емейл сбросить, или выложить новую ссылку?

relaxxx@ua.fm
Заранее спасибо!