Лучшие практики для сборок из командной строки - PullRequest
3 голосов
/ 06 июля 2010

Пункт 2 теста Joel - это «Можете ли вы сделать сборку за один шаг», но каков наилучший (или общепринятый) способ добиться этого?Каковы преимущества и недостатки использования интерфейса командной строки IDE для создания безголовой сборки , в отличие от поддержки сценария сборки, полностью независимого от 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!

EDITED TO ADD: Я обнаружил, что могу настроить построитель Maven в Eclipse с конкретными целями, которые вызывают некоторые из подключаемых модулей Maven, которыеЯ использую (например, в моем случае цели «datanucleus: улучшить ресурсы процесса» заботятся об улучшении JDO, копировании ресурсов и преобразовании native2ascii).Это оставляет компиляцию Java до Eclipse, но все же достигает некоторой степени интеграции с Maven.

Ответы [ 2 ]

1 голос
/ 06 июля 2010

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

mvn package

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

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

0 голосов
/ 06 июля 2010

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

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

...