Ant. Автоматизация сборки и упаковки проектных файлов

max аватар
127
Находится в разделах:

Ант - утилита для автоматизации сборки java проектов. Является незаменимой в тех случаях, когда необходимо производить множество операций над файлами, собирать специфические конфигурации.

Для обычной сборки подойдет и eclipse.

 

И так, ситуация. 

Допустим, есть большой проект.  Он поддерживает плагины.  Нам необходимо скомпилировать и построить плагин, на основе не всех классов и файлов, а только отобранных . После этого мы хотим упаковать все это дело в jar файл.

 

Для использования анта, необходимо создать файл build.xml в корневой папке проекта. build.xml - отправная точка для ant.

 

Объявляем формат xml 

 

Проект описывается внутри тега <project>

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

 

Теперь укажем, где лежат библиотеки jar файлы, используемые в исходном коде, с помощью путей, объявленных выше

 

Далее описываем так называемые таргеты - то есть целевые блоки, которые имеют конкретное предназначение, например, скомплиировать некоторые файлы, создать папки, удалить папки, скопировать файлы, создать jar архив.

 

Если говорить абстракциями, то одно задание (target) для ant- можно представить в виде одного круга, из картинки выше.

 

И так, в данном примере будет 7 таргетов:

 

  • prepare (создание необходимых рабочих папок)
  • clean (удаление папок)
  • compile (компиляция всех классов)
  • build-plugin-jar  (постороение плагина в виде jar файла)
  • build-jar (экспорт всего проекта в jar архив)
  • deploy-plugin-jar (развертывание плагина)
  • all (выполнить все предыдущие действия как одно целое. Все подряд)
Опишем по порядку:
Здесь создаем папки, описанные в переменных-свойствах
Чистим за собой все
Компилируем весь отстой в исходниках:
Здесь делаем jar файл, предварительно задав, какие файлы включать в архив
Строим jar архив из всего проекта
Разворачиваем архив (deploy). В данном случае просто копируем в корневую папку проекта
Ну и в заключение, таргет для автоматического воспроизведения всех предыдущих заданий
В каждом таргете есть такой атрибут, как depends. 
info picture depends="blablabla" атрибут говорит о том, что текущее задание должно быть выполнено лишь после того, как выполнятся перечисленные в depends задания. Это может гарантировать автоматический запуск предыдущих заданий, от которых зависит выполнение текущего задания.
Ну и на завершение, полный листинг файла:

Конец
Уинстон Черчилль утверждает, что постоянные усилия, а не сила или ум, — вот ключ к раскрытию нашего потенциала.

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

CAPTCHA
Чтобы оставить комментарий, введите пожалуйста код, изображенный на картинке
Image CAPTCHA
Введите символы, изображенные на картинке