Что такое программное обеспечение для автоматизации сборки (например, Ant)? - PullRequest
20 голосов
/ 04 марта 2009

Я часто вижу ссылки на муравья, но не понимаю, что именно он должен делать? из того, что я слышал, должно было скомпилировать ваши проекты, но я не могу просто сделать это, нажав Run-> Run in eclipse?

Редактировать: Я думаю, я должен перефразировать мой вопрос. Я уже знаю, что ant - это «программное обеспечение для автоматизации сборки», мой вопрос: что такое «автоматизация сборки»? Я думал, что вы должны протестировать свое приложение, и когда оно запускается, вы нажимаете кнопку «build» в eclipse или через java командной строки, и из него получается файл .jar? Так зачем вам «автоматизировать» этот процесс?

Ответы [ 12 ]

23 голосов
/ 05 марта 2009

Я уже знаю, что ant - это «программное обеспечение для автоматизации сборки», мой вопрос: что такое автоматизация сборки? Я думал, что вы должны протестировать свое приложение, и когда оно запускается, вы нажимаете кнопку «build» в eclipse или через java командной строки, и оно делает файл .jar из него? Так зачем вам «автоматизировать» этот процесс?

Не вся Java-разработка выполняется с помощью Eclipse, и не все JAR-файлы могут быть собраны из командной строки (или должны быть собраны из командной строки).

Вам может потребоваться дополнительно запустить тестовые наборы, модульные тесты и многие, многие другие процессы.

Что муравей делает, так это предоставляет механизм для автоматизации всей этой работы (так что вам не нужно делать это каждый раз), и, возможно, вы можете запускать этот скрипт ant каждый день в 18:00.

Например, в некоторых проектах требуется ежедневная сборка, следующие задачи могут быть автоматизированы с помощью ant, поэтому они могут выполняться без вмешательства человека.

  • Подключение к серверу Subversion.
  • Загрузка / обновление с последней версией
  • Скомпилируйте приложение
  • Запустить контрольные примеры
  • Упакуйте приложение (в банке, войне, на ухо или что-то еще)
  • Передайте этот сборочный файл в Subversion.
  • Установка приложения на удаленный сервер
  • Перезагрузите сервер
  • Отправить письмо с краткой информацией о работе.

Конечно, для других проектов это излишне, но для некоторых других очень полезно.

17 голосов
/ 04 марта 2009

rogeriopvl абсолютно правильно, но ответить на ваш вопрос: «Разве я не могу просто сделать это, нажав Run-> Run in Eclipse?» вопрос: это хорошо для проекта, над которым вы работаете самостоятельно, и вам не требуется повторяемая сборка сценариев в нескольких средах.

Однако, если вы работаете над проектом с открытым исходным кодом или профессиональным программным обеспечением, которое должно быть в состоянии собираться на сервере сборки и т. Д., Требующее, чтобы конкретная IDE была запущена, не очень хорошая идея.

11 голосов
/ 04 марта 2009

Ant используется для автоматизации процесса сборки, но процесс сборки часто намного больше, чем компиляция. У Ant есть «задачи», которые можно использовать для выполнения разных полезных функций. Вы можете создать свою собственную задачу, чтобы делать что угодно, написав класс Java и указав муравью, где его найти. Затем вы можете смешивать и сопоставлять эти задачи для создания целей, которые будут выполнять набор задач.

Вы также можете настроить динамическую среду, в которой будет создаваться ваше приложение. Вы можете настроить файлы свойств для хранения переменных, которые могут использоваться в процессе сборки, то есть для хранения путей к файлам, путей к классам и т. Д. Это полезно, например, для разграничения между тестовой и рабочей сборками, где пути развертывания, экземпляры базы данных и т. Д. может измениться Ant также включает управление потоком (если и т. Д.)

Некоторые вещи, которые я видел, делают муравьи:

  • Код компиляции
  • Использование контроля версий для извлечения последней версии или для пометки версии, которая создается
  • Запуск сценариев sql для создания или перестройки тестовой базы данных
  • Копирование файлов с внешнего ресурса для включения в проект
  • Объединить код в файл jar, war или ear
  • Развертывание веб-приложения на сервере приложений
  • Перезагрузите сервер приложений
  • Выполнить тестовый набор
  • Статический анализ, т.е. CheckStyle или PMD
  • Отправьте команды по электронной почте, чтобы предупредить их о сборке.
  • Создание файлов на основе информации из сборки.
    • Пример: в моем приложении есть jsp, который не отображает информацию о версии / сборке. Он генерируется ant при запуске сборки, и команда производственных операций проверяет эту страницу при развертывании приложения, чтобы убедиться, что развернула правильную сборку.
8 голосов
/ 04 марта 2009

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

Команда сборки в отдельной (чистой) области - возможно, на каком-то безголовом сервере (т. Е. Без графического интерфейса) - затем проверит код и запустит скрипт сборки. Сценарий сборки будет полностью независимым от среды рабочего стола / IDE .

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

То есть большинство используемых вами программ никогда не будут когда-либо создаваться с рабочего стола разработчика.

PS. Вы также можете взглянуть на идею Непрерывная интеграция

6 голосов
/ 04 марта 2009

Короткий ответ: Ant - отличный способ создать полную сборку проекта, независимую от какого-либо конкретного инструмента, который может использовать любой разработчик. Без независимой сборки все может быстро выйти из строя - особенно для больших проектных команд.

А теперь для длинного ответа ... Я был вовлечен в несколько проектов без какого-либо чувства самостоятельной сборки. В одном проекте был один парень, который не был разработчиком, которому было поручено создавать и развертывать программное обеспечение. Он создал 147 отдельных пакетных файлов Windows для компиляции каждого EJB, каждого сервлета и каждого клиентского компонента. Не было никакой проверки ошибок для этой сборки. Все сообщения журнала, включая сообщения об ошибках, вышли в стандартный формат. При чтении этого журнала он должен был вручную распознать, какое напечатанное исключение или сообщение было нормальным, а какое - ошибкой. Он также должен был развернуть это программное обеспечение, которое он только что создал. Развертывание было столь же сложным, поскольку было несколько уровней с балансировкой нагрузки. Каждый модуль должен был быть размещен в нужном месте вручную с настройкой параметров в соответствии с уровнями ниже и ниже. Построение и развертывание этого программного обеспечения заняло у него не менее 3 дней, используя этот метод. Конечно, только тогда кто-нибудь может определить, «работала» ли сборка. Обычно по истечении этого периода все программисты боролись за отладку сборки. Программисты сказали бы, что мой модуль отлично работает в моей IDE. Я просто нажимаю «запустить» вот так, понимаете?

Действительно, отдельные программные модули обычно работали, но сборка и развертывание были ужасно неэффективными. И столь же плохо, что было одинаково трудно для любого развернуть сборку более чем в одной среде. Менеджмент сказал бы: хорошо, теперь у вас есть эта сборка, работающая в нашей среде регрессионного тестирования. Теперь разверните эту же сборку в этой другой среде, чтобы продавцы могли демо-версию и готовое программное обеспечение. Это должно быть просто сделать, но это также заняло бы по крайней мере 2 дня, после чего последовал период «отладки сборки». Сборки и развертывания никогда не были простыми и никогда не точными. Это действительно замедлило проект.

В любом случае, мы заменили всю эту процедуру полным механизмом сборки и развертывания на основе Ant. Конечный результат состоял в том, что полная сборка могла быть создана и развернута менее чем за 30 минут, полностью автоматизирована. Специалист по контролю качества, управляющий сборками и развертываниями, может хранить на доске информацию о том, какая среда, какая сборка развернута на нем и какая группа использует эту среду. Это было то, что было просто невозможно со старой системой.

5 голосов
/ 04 марта 2009

Ant предназначен для автоматизации процессов сборки программного обеспечения:

http://en.wikipedia.org/wiki/Apache_Ant

4 голосов
/ 04 марта 2009

Ant позволяет строить CRISP (полные, повторяемые, информативные, планируемые, переносимые). Вы можете найти отличную информацию об этом в этой презентации Майка Кларка и в его книге Pragmatic Project Automation .

2 голосов
/ 04 марта 2009

Если кто-то рядом с вами, я думаю, вы получите много пользы от CITCON , конференции по непрерывной интеграции и тестированию. Вы можете поговорить со многими людьми о преимуществах автоматизации, применяемой для создания и тестирования программного обеспечения.

Обычно люди используют Ant (с другими инструментами) для автоматизации всего, что они хотят, чтобы происходило после коммита. Основные преимущества такой автоматизации - быстрее, лучше и дешевле.

Быстрее потому что все происходит сразу, не дожидаясь, пока человек дойдет до него.

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

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

2 голосов
/ 04 марта 2009

Ant - это инструмент сборки, похожий на make-файлы (хотя и с совершенно другим синтаксисом в XML). Если вы используете только Eclipse, хорошо придерживаться этого, и вы всегда можете преобразовать файл сборки Ant в проект Eclipse (тогда конфигурации запуска Eclipse, если я правильно помню, эквивалентны целям сборки Ant).

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

Ant также можно использовать для регулярных автоматических сборок (вы не хотели бы нажимать Run in Eclipse каждую ночь, верно?: -))

0 голосов
/ 04 марта 2009

У Джоэла (Спольски) есть отличная статья на тему "Тест Джоэла". Многие из них вращаются вокруг возможности делать важные вещи часто, быстро и надежно. Одной из таких вещей является ваша сборка.

...