2010-07-06 5 views
3

Пункт 2 из Joel Test: «Можете ли вы сделать сборку за один шаг», но какой лучший (или общепринятый) способ достичь этого? Каковы плюсы и минусы использования интерфейса командной строки IDE для выполнения headless build, в отличие от поддержки скрипта сборки, который полностью не зависит от IDE (например, с использованием Ant или Maven в случае Java-проекта).Рекомендации по построению командной строки

Я задаю этот вопрос, потому что я экспериментирую с Maven, и был немного удивлен, обнаружив, что даже при использовании плагина m2eclipse не всегда возможно отключить Java Builder от Eclipse и делегировать весь процесс сборки Maven во время работы над проект. Похоже, что если я хочу перенести проект на Maven, мне придется поддерживать два эквивалентных, но разных процесса сборки, например, сборка командной строки будет использовать плагин DataNucleus Maven для расширения классов JDO, а сборка IDE будет использовать плагин DataNuclues для Eclipse; в сборке командной строки будет использоваться плагин Tomcat Maven, в то время как среда IDE будет использовать платформу веб-инструментов Eclipse. Эта избыточность кажется неудачной.

Полагаю, что NetBeans использует Ant для его сборки, что звучит так, будто это решит эту проблему. Но, к сожалению, я не использую ни NetBeans, ни Ant!

отредактированы ADD: Я обнаружил, что я могу создать строитель Maven в Eclipse, с конкретными целями, которые вызывают некоторые из плагин Maven, которые я использую (например, в моем случае цель «DataNucleus: повысить Процесс- ресурсы "заботятся об улучшении JDO, копировании ресурсов и преобразовании native2ascii). Это оставляет компиляцию java до Eclipse, но все же достигает некоторой степени интеграции с Maven.

+0

Очень тщательно определяя «шаг» ... –

ответ

1

Застройщик eclipse дает вам промежуточное и повторное здание, но «тест Джоэла» действительно состоит в том, что он может перейти от источника к готовому к развертыванию что-то за один шаг. Если вы используете Maven, есть несколько способов обойти это, включая просто вызов Maven в качестве сценария командной строки из Eclipse.

mvn package 

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

В принципе, пусть затмение «сделай это» с его строителями и воспользуйтесь тем, что оно предоставляет, но когда вы будете готовы использовать конечный продукт, он вызывается из командной строки через сервер непрерывной интеграции (Hudson is хороший легкий, чтобы получить и настроить - бесплатно тоже: http://hudson-ci.org/). Предположительно, если вы посмотрите на использование Maven, у вас также будет экземпляр Archiva или Nexus, настроенный как ваш DSL для полученных библиотек. Вы можете заставить hudson вызывать «mvn deploy» для регулярных проверочных сборок или «mvn release: подготовить & & mvn release: выполнить», когда вы готовы сократить выпуск (отдельные сборки для работы в Гудзоне лучше всего подходят для этого)

+0

Хорошо, так что в основном это два разных процесса. Я подозревал, что мне, возможно, придется жить с этим, но сначала мне хотелось услышать от других разработчиков. (Это даже не проблема, если Eclipse просто «сделает это» прямо из коробки, но тот факт, что мне приходится вручную настраивать много вещей, таких как JDO-расширение, преобразование native2ascii и развертывание WAR, эффективно дублируя то, что уже объявлено в POM, просто заставило меня задуматься). –

+0

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

0

Вы можете сделать безголовую сборку в среде IDE. В eclipse вы можете выполнить произвольную команду оболочки в качестве «внешнего инструмента». Это справедливо и в IDEA и netbeans с небольшим усилием. По крайней мере, это удобный тест безголовой сборки, который вы должны запускать всякий раз, когда вы вносите изменения в конфигурацию сборки.

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

+0

Я думаю, что здесь подразумевается OP, а Eclipse Build безголовый (из командной строки), а не наоборот. И потому, что он может это сделать, зачем нужна сборка Maven с параллельным обслуживанием и т. Д. (Короткая версия)? –