Сборка проектов: Eclipse и Ant

Сборка Java-проектов производится либо из среды разработки, либо в пакетном режиме. Первый вариант используется в процессе кодирования для исправления ошибок компиляции и отладки. Второй вариант необходим для непрерывной интеграции (continuous integration), тестирования и сборки релизов. Если разработку вести в среде Eclipse, а для пакетной сборки пользоваться Ant, многие правила сборки приходится определять дважды: в Eclipse — каждое действие, которое необходимо выполнить, оформляется в виде билдера (builder), и в Ant — для каждой осмысленной группы действий определяется цель (target).


Частично избежать дублирования действий можно повторным использованием целей Ant в Eclipse — для этого существует специальный вид билдеров (Ant builders), которые запускают выполнение указанных целей из заданного Ant файла. Оказывается, про эту возможность знают далеко не все. Я же не представляю, как обойтись без нее в проектах, где используются генераторы кода (например, Antlr для лексических и синтаксических анализаторов) или другая нетривиальная обработка.

Конечно, для приличных инструментов плагины для Eclipse существуют (даже для TreeDL) и сборку в Eclipse настроить можно без использования Ant, но для пакетной сборки все равно придется повторно все описывать в Ant. Поэтому из возможностей плагинов я использую только редакторы, а вместо штатных билдеров подключаю Ant.

Простая возможность вызова Ant из Eclipse всех проблем не решает — все равно такая информация как classpath хранится в двух местах. Победить дублирование поможет ant4eclipse, который позволяет получить в Ant полный доступ к информации о проекте, билдерам, конфигурациям запуска и т.п.

О другой проблеме — управлении внешними зависимостями — я уже писал. Описанное решение оказалось очень уж ограниченным. Сам я с тех пор перешел на менеджер зависимостей Ivy, который несколько дней назад вылез из инкубатора Apache и получил статус подпроекта Ant. Собираюсь написать об Ivy подробнее, когда разберусь с некоторыми его тонкостями.

Вот только не могу справиться с небольшой проблемой: билдеры в Eclipse выводят информацию в Console View. Если запускается несколько билдеров, то вывод от всех, кроме последнего, теряется, что неудобно. Помогите!

18.10.2007  Метки: ,   Рубрики: Разработка

Написать комментарий