Автоматизированная сборка проектов на Delphi с помощью WANT

© 2006 Игорь Фомин

WANT – Open Source система для автоматизированной сборки, тестирования и упаковки проектов, написанных на Borland Delphi (замена make). Система WANT сама написана на Delphi и является аналогом Jakarta Ant для Java.

WANT позволяет выполнять следующие задачи:

Описание процесса сборки хранится в файле want.xml.

Проект состоит из задач (targets), каждая из которых имеет свое имя и может зависеть от других задач, в таком случае сначала выполняются задачи, необходимые для ее завершения.

Задачи запускаются на исполнение из командной строки:

want.exe <имя_задачи>

Рассмотрим пример использования WANT.

Создайте папку, в ней должны располагаться файлы want.exe и want.xml, проект Delphi с именем Test положите в папку source.

Что же содержит файл описания процесса сборки - want.xml?

Первый тэг – описание проекта и его свойств, корневой папки проекта (basedir) и задачи по умолчанию (default).

<project name="test"
   basedir="."
   default="help">
описываем свойство "дата сборки проекта"
<tstamp>
   <format property="date.build" pattern="yyyy_mm_dd" />
</tstamp>
Перечисляем необходимые свойства. Все свойства задаются в формате имя (name) и значение (value). Можно использовать значения свойств, определенных выше, для это существует формат записи ${имя_свойства}
<property name="src" value="${basedir}/source" />
<property name="tmp" value="${basedir}/tmp" />
<property name="dist.dir" value="${basedir}/dist" />
<property name="dist.name" value="${dist.dir}/test_${date.build}.zip" />
<property name="dist.src.name" value="${dist.dir}/test_src_${date.build}.zip" />
Описываем задачу. Внутри перечисляем, что нужно выполнить. Здесь осуществляется только вывод текста на экран.
<target name="help">
   <echo message="this builds test" />
</target>
Еще одна задача – создание каталогов (mkdir), ее параметр – имя создаваемого каталога (dir).
<target name="prepare">
   <mkdir dir="${dist.dir}" />
   <mkdir dir="${tmp}" />
</target>

Задача компиляции проекта (compile) зависит (depends) от задачи prepare. Порядок исполнения – сначала prepare, потом compile. Задача компиляции включает в себя два этапа: dcc (консольный компилятор) и exec (запуск приложения).

У dcc следующие параметры:

Параметры exec:

<target name="compile" depends="prepare">
   <dcc basedir="${src}" source="test.dpr">
     <dcuoutput path="${tmp}" />
     <warnings value="True" />
   </dcc>

   <exec basedir="${src}" defaultfilters="true" executable="upx.exe">
     <arg value="--best" />
     <arg value="-q" />
     <arg value="test.exe" />
   </exec>
</target>

Задачи формирования архивов с исходниками проекта и скомпилированного приложения:

   <target name="dist_src" depends="prepare">
     <delete file="${dist.src.name}" />
     <zip zipfile="${dist.src.name}">
       <include name="${src}/*.pas" />
       <include name="${src}/*.dfm" />
       <include name="${src}/*.dpr" />
       <include name="${src}/*.dof" />
       <include name="${src}/*.res" />
       <include name="${src}/*.cfg" />
       <include name="${src}/*.todo" />
       <include name="want.xml" />
     </zip>
   </target>


   <target name="dist" depends="prepare,compile">
     <delete file="${dist.name}" />
     <zip zipfile="${dist.name}">
       <include name="${src}/*.exe" />
       <include name="${src}/*.mdb" />
       <include name="${src}/*.dbf" />
       <include name="${src}/*.fr3" />
       <include name="${src}/*.ini" />
     </zip>
   </target>

   <target name="all" depends="dist,dist_src">
   </target>
  </project>

Сохраняем файл и в консоли набираем want all. В результате должны выполнится все перечисленные задачи (см. рис).

В случае ошибки при выполнении любой из задач выводится сообщение об ошибке и сборка прекращается.

Остальные действия в WANT описываются аналогично.

На данный момент документации по WANT немного, поэтому лучшим вариантом будет изучение исходников с sourceforge, а также документации на Ant.

Файл примера

Copyright© 2006 Игорь Фомин
Специально для Delphi Plus


Пожалуйста, оцените статью

Отлично
Хорошо
Средне
Плохо
Очень плохо

2011123456789101112
2010123456789101112
2009123456789101112
2008123456789101112
2007123456789101112
2006123456789101112
2005123456789101112
2004123456789101112
2003123456789101112
2002123456789101112
2001123456789101112
2000123456789101112
1999123456789101112

Последние статьи
Литература