Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java tools & IDE's > Build automation |
Автор: LSD 26.11.2009, 16:56 |
Просьба отмечать, только те пункты которые реально используются. Т.е. если вы когда-то разбирались с Maven, а потом его забросили, то не надо отмечать этот пункт. |
Автор: powerOn 26.11.2009, 17:26 |
После Maven уже ничем не хочется пользоваться ![]() |
Автор: AlexeyVorotnikov 27.11.2009, 10:41 |
После Maven хочется закинуть его куда подальше и больше никогда не видеть. (ИМХО) ![]() |
Автор: AlexeyVorotnikov 27.11.2009, 12:02 |
Может, я просто уже постарел и закоснел мозгом ![]() А пользуюсь я для предварительной сборки и тестирования сборщиками IDE, которыми пользуюсь. Для финишной сборки Ant. |
Автор: Maksym 27.11.2009, 17:20 |
AlexeyVorotnikov Maven незаменим, если ты пишешь open-source - собственно для него он и был придуман. А Ant хорош всегда ![]() |
Автор: powerOn 27.11.2009, 17:30 | ||
А если исходники закрыты, то maven теряет свою силу? ![]() Думаю maven удачно ложиться на проекты где поддерживается Continuous Integration, избавляет от большого количества рутинной работы по написанию билд скриптов. Лично мне он нравится в связке с Hudson. |
Автор: LSD 27.11.2009, 17:32 | ||
![]() |
Автор: Maksym 29.11.2009, 14:11 |
Мне показалось, что мавен хорош, когда ты однозначно хочешь иметь всегда последние версии всех зависимостей, что характерно для опенсорса. Если же ты разрабатываешь свой коммерческий продукт (или дорабатываеш чужой продукт), то миграция на новые версии зависимостей -- это событие, которое идет отдельной задачей с ручным исправлением скриптов, перетестированием (в том числе и ручным) и т.п. Я использовал мавен только в одном небольшом проекте, возможно не вкурил в его сакральный смысл. С другой стороны, не вижу в работе с антом большой рутины. Вот на днях полную сборку (c вариантами дистрибутивов) для трех десятков проектов в которые входят earы и warы знающий человек написал за день.. Очень читабельно, гибко и прозрачно получилось. Кстати, тоже используем Hudson. Не мог бы ты уточнить каким образом мавен освобождает от написания билд скриптов (на фоне анта)? Действительно интересно услышать практическое мнение. |
Автор: powerOn 29.11.2009, 21:33 |
Не хотелось бы уходить в дискуссию Maven vs Ant, думаю таких в сети и так достаточно. Но на вопрос отвечу. ![]() Для того, что бы создать Java проект в maven мне нужно выполнить одну команду (archetype). Будь это просто Java Project, будь это Web Project или EJB Project, или что-то иное - всего одна команда в консоли для создания проекта. После этого любой проект будет компилироваться, тестироваться, упаковываться в архив и станет доступен другим проектам без какого-либо вмешательства в билд-скрипт. Просто добавляем новые классы, ресурсы и тесты в соответствующие папки, выполняем install и все. Мне не нужно прописывать где лежать исходники, где лежат ресурсы, что их нужно компилировать какой-либо командой, что их нужно скопировать из папки А в папку Б, а потом папку Б запаковать в архив Б.jar (war, ear и т.п.), а потом скопировать архив куда-либо (хотя я могу это все настроить, если захочу). Maven проект можно открыть в любой популярной IDE (Eclipse, NetBeans, IDEA) без каких-либо настроек начать работать (собирать, тестировать, отлаживать) в привычном ритме. Если в вашем проекте maven, то разработчики могут кодировать в любимой IDE, а не пересаживаться на одну (хотя и с ant это возможно, но телодвижений меньше с maven). И это лишь малая часть того что может сделать maven. Про управление зависимостями, мультимодульные проекты, большое количество самых разнообразных плагинов (для репортинга, код чекинга, сбора метрик, ковереджа, деплоинга и т.д.) я даже и не говорю. Еще есть важная для меня особенность maven: pom.xml имеет определенную структуру. А это означает, что если один человек напишет такой скрипт, то другой, зная maven, может с легкостью его модифицировать. Не тратить время на осознание креатива своего коллеги (какой таргет, для чего и когда выполняется), который целый день строчил ant-скрипт, и, который возможно, написан с ошибками. Вы конфигурируете билд скрипт, а не создаете его. Я считаю, что maven билд скрипты более контролируемые, и это несет с собой порядок. |
Автор: Maksym 30.11.2009, 13:56 | ||
powerOn Спасибо за развернутый ответ.
Согласен. Это ключевой момент. |
Автор: Zefick 18.12.2009, 18:56 |
А можно подробнее, зачем нужен сборщик проектов, чтобы в архив упаковать class-файлы? Тогда я использую либо IDE, либо сам руками пихаю, если бывает такая нужда (например, NetBeans не сжимает архивы, или я не знаю, как это сделать, а в Eclipse чтобы собрать проект надо в настройках покопаться). |
Автор: LSD 18.12.2009, 19:36 | ||
Это для приложений начального уровня, сборка ограничивается упаковкой классов. В более сложных проектах надо: - сгенерировать классы - скомпилировать классы - сгенерировать JavaDoc - упаковать скомпилированные классы в несколько разных jar (например API и реализация) - отфильтровать конфигурационные файлы - создать деплоймент архивы (war, ear) - создать инсталятор или distribution архив - прогнать Unit тесты - прогнать интеграционные тесты - загрузить артефакт на сервер - закомитить код в VCS и потегать его - и еще куча всего про что я забыл Делать это из под IDE: не удобно, т.к. у разных разработчиков она может быть разная, и нельзя автоматизировать этот процесс. |
Автор: Vaulter 18.12.2009, 20:30 |
Hudson - http://hudson-ci.org/ Extensible continuous integration server |
Автор: LSD 21.12.2009, 12:36 |
Hudson - это другое. Hudson сам по себе ничего не собирает, для сборки он использует ANT, Maven или shell script. |
Автор: powerOn 24.12.2009, 09:11 |
Мне вот интересно, те кто ответил "с помощью IDE" у вас командная разработка или индивидуальная (только изучаете, или фрилансингом занимаетесь)? Если командная, то сколько человек в команде и по какому процессу вы работаете? |
Автор: AlexeyVorotnikov 24.12.2009, 10:22 | ||
У нас в команде обычно от 2-х до 5-и человек. А что вы имеете в виду под "процессом"? |
Автор: powerOn 24.12.2009, 10:27 |
Имею ввиду процесс организации разработки, например Scrum или RUP, или еще какой-нибудь... Добавлено через 7 минут и 42 секунды Да, еще важный момент, опять же только для тех кто делает билд из IDE и работает в команде. Распределенная ли команда или все в одном офисе сидят? |
Автор: AlexeyVorotnikov 24.12.2009, 12:18 | ||
У нас никакие такие формализованные процессы не используются. Команды у нас бывают распределённые. |
Автор: serger 24.12.2009, 12:49 | ||
Странно. А IDE все одну используете? |
Автор: COVD 24.12.2009, 16:51 |
Мы компилируем "с помощью IDE". У нас много относительно мелких проектов. Большая часть из них используются в виде библиотек. Многие проекты для серверной части уже представляют собой самостоятельные приложения, которые по сути являются сервисами, обслуживающими одну задачу. Сейчас изменения в библиотеках случается затрагивают другие проекты и их приходится вручную перекомпилировать. Клиентское приложение загружается через веб-старт и представляет собой несколько десятков jar'ов. При изменениях на сервер выкладываются только обновленные jar'ы. Команда маленькая ( < 5 ), никаких "процессов" не знаем, сидим в офисе, хотя используем репозиторий и технически можно все делать удаленно. Пока я не чувствую острой необходимости отказываться от "помощи IDE". Мы продолжаем "дробить" систему на мелкие компоненты и есть желание перевести клиентское приложение на плагинно-модульную архитектуру. В общем, у нас пока не индустриальный масштаб, не цех и не конвейер, а "свечной заводик". ЗЫ. сейчас все используют одну IDE, но это не принципиально, потому что в репозитории сурс есть. При разных IDE форматирование кода иногда сбивается. |
Автор: AlexeyVorotnikov 24.12.2009, 18:14 |
Да, фактически одну - Eclipse. |
Автор: LSD 25.12.2009, 17:38 |
А мне вот интересно послушать людей которые ответили "руками (в консоли или bat/sh файлами)". Что за проекты они так собирают, сколько у них разработчиков и т.д. |
Автор: Dancer 17.3.2010, 14:11 |
выбрал руками, так как скриптовые вещи представленны были только там. Продукт собирается кучей Makefile и sh. Код разношорстный входит: Java/C/C++/sh получаем rpm продукта. Разработка удалённая, разработчиков полно по миру раскиданы. Но конечно выделены билдовые сервера, на которых по расписаниям, или по запросам, на выпуск релиза делается билд. Процесс разработки ПО строго формализован. По конечному продукту проходят обязательные циклы тестирования: интеграционное, системное, филд-тест. До того как изменения от разработчика попадут в интеграцию, разработчик гоняет юнит-тесты, и много ещё других процедур, чтобы подать свой код, как кандидат на интеграция в ту или иную ветку продукта. |
Автор: LSD 18.3.2010, 11:36 |
А Java компилируете javac-ом и Unit-тесты запускаете руками? |
Автор: Dancer 18.3.2010, 12:27 |
Да. Компилим javac-ом, скриптами пускаются и тесты. |
Автор: LSD 6.8.2010, 14:40 |
А есть ли люди которые используют Ant + Ivy? |
Автор: powerOn 6.8.2010, 20:02 |
у нас используют в компании достаточно активно. |
Автор: LSD 9.8.2010, 16:45 |
А репозиторий какой для него используете? |
Автор: powerOn 9.8.2010, 19:11 |
в локальной сети стоит сервер, на который ручками ставятся версии нужных библиотек. ivy использует его, без какого-либо доступа к внешним ресурсам. |