В чем удобство Maven (зачем оно нужно)?
От: 0K Ниоткуда  
Дата: 15.04.11 10:08
Оценка: -2 :))) :))) :))) :))
Вот никак не могу понять нафига вообще нужен этот Maven?

За 6 мес. работы с Java часто его слышал, но так и не понял каков в нем смысл. Я себе клепаю потихоньку в эклипсе -- и больше ничего мне не понадобилось.

Посмотрел описание на http://www.apache-maven.ru/:

Мавен это инструмент для сборки Java проекта: компиляции, создания jar, создания дистрибутива программы, генерации документации. Простые проекты можно собрать в командной строке.


А нафига в командной строке, если есть Eclipse? Вот за все время работы с C#, мне ни разу не пришлось ничего собирать из командной строки. Ни разу. Той же тактики я придерживаюсь и в Java -- зачем лесть на рожон?

Если собирать большие проекты с коммандной строки то комманда для сбоки будет очень длинной, поэтому её иногда записывают в bat/sh скрипт. Но такие скрипты зависят от платформы. Для того чтобы избавиться от зависимости от платформы и упростить написание скрипта используют инструменты для сборки проекта.


А! Наверное они не знают что есть такая удобная штуковина как Ecipse? Т.е. походу это "старые пердуны", которые кроме командной строки ничего не знают?
Re: В чем удобство Maven (зачем оно нужно)?
От: LeonidV Ниоткуда http://vygovskiy.com
Дата: 15.04.11 10:28
Оценка:
Здравствуйте, 0K, Вы писали:

0K>А! Наверное они не знают что есть такая удобная штуковина как Ecipse? Т.е. походу это "старые пердуны", которые кроме командной строки ничего не знают?

Для меня старые пердуны не делают разделения между IDE и платформой. Потому как в моем представлении "старые пердуны" работали лишь с Delphi, где IDE это и есть платформа.

mvn удобен, просто удобен.
http://jvmmemory.com — простой способ настройки JVM
Re[2]: В чем удобство Maven (зачем оно нужно)?
От: 0K Ниоткуда  
Дата: 15.04.11 10:36
Оценка:
Здравствуйте, LeonidV, Вы писали:

LV>Для меня старые пердуны не делают разделения между IDE и платформой. Потому как в моем представлении "старые пердуны" работали лишь с Delphi, где IDE это и есть платформа.


IDE -- нужна не просто для подсветки кода, но и для сборки проекта. На то она и IDE.

LV>mvn удобен, просто удобен.


А его правда используют? Чем не устраивает сборка проекта с помощью Eclipse, без всяких там Maven?
Re[3]: В чем удобство Maven (зачем оно нужно)?
От: vitabrevis  
Дата: 15.04.11 10:48
Оценка: 1 (1)
Здравствуйте, 0K, Вы писали:

0K>Здравствуйте, LeonidV, Вы писали:


LV>>Для меня старые пердуны не делают разделения между IDE и платформой. Потому как в моем представлении "старые пердуны" работали лишь с Delphi, где IDE это и есть платформа.


0K>IDE -- нужна не просто для подсветки кода, но и для сборки проекта. На то она и IDE.


LV>>mvn удобен, просто удобен.


0K>А его правда используют? Чем не устраивает сборка проекта с помощью Eclipse, без всяких там Maven?


Вы наверное не в курсе, что есть проекты которые собираются автоматом, ежедневно, еженощно?
Re[3]: В чем удобство Maven (зачем оно нужно)?
От: ScarryDen  
Дата: 15.04.11 10:56
Оценка:
0K>А его правда используют?
Пользуют, еще и как.

>Чем не устраивает сборка проекта с помощью Eclipse, без всяких там Maven?


было бы очень странно собирать проект на интегрейшен сервере с помощью эклипса, ну и как минимум dependency hell никто не отменял.
система сборки != IDE, я раньше антом пользовался, в принципе все хорошо, но с зависимостями не оч удобно работать, хотя жить можно, мавен это лечит нараз. Ну а еще есть не только эклипс, я вот напрмер нетбинс пользую, кто то идею любит, а кто то вообще юзает просто какойто отдельный редактор типа джейэдит, для всего этого зоопарка единаная система сборки — как раз то что надо.
Re: В чем удобство Maven (зачем оно нужно)?
От: Donz Россия http://donz-ru.livejournal.com
Дата: 15.04.11 10:59
Оценка: 1 (1)
Здравствуйте, 0K, Вы писали:

0K>Вот никак не могу понять нафига вообще нужен этот Maven?


Непонятно назначение именно Maven'а, или для чего нужны сборщики проектов в целом? Под .NET вроде есть MSBuild — его тоже принципиально не использовал?

0K>За 6 мес. работы с Java часто его слышал, но так и не понял каков в нем смысл. Я себе клепаю потихоньку в эклипсе -- и больше ничего мне не понадобилось.

0K>А нафига в командной строке, если есть Eclipse? Вот за все время работы с C#, мне ни разу не пришлось ничего собирать из командной строки. Ни разу. Той же тактики я придерживаюсь и в Java -- зачем лесть на рожон?
0K>А! Наверное они не знают что есть такая удобная штуковина как Ecipse? Т.е. походу это "старые пердуны", которые кроме командной строки ничего не знают?

Значит у тебя жесткая завязка проекта на одну конкретную IDE, что очень плохо. В .NET мире это может и нормально, но в яве вообще никак. Потому что:

1)Регулярно выходят новые версии популярных фреймворков и новые фреймворки. Любая IDE банально не успевает за ними, тому же реализация поддержки новых технологий может быть реализована очень специфично.

2)Есть такая штука как Continious Integration и Build Server. Любая альфа-, бета-версия или релиз должны браться только с билдсервера. Билдсервер не только собирает проект, но и прогоняет юнит- и интеграционные тесты, может иметь свой план сборки, чтобы полученный артефакт был заточен на использование на продакшн площадке, может сразу деплоить его на нужную площадку и т.д., и т.п. Как ты подключишь Эклипс, я не знаю.

3)Заставлять всех разработчиков в команде и всех, кто будет работать над проектом за пределами твоей компании, использовать одну конкретную нравящуюся тебе IDE — это эгоистично и в корне неправильно

4)При сборке могут понадобиться операции, которые нельзя совершить в процессе сборки из Эклипсе или другой IDE. И тут либо ставим уже написанный плагин, если он есть, и боремся с его багами и особенностями. Либо пишем свой плагин и заставляем других бороться с его багами и особенностями. Либо используем сборщик проектов. Отличный пример — сборка J2ME приложения с несколькими десятками билдов с разными ресурсами и кодом на выходе.

5)Мне лень вручную выкачивать все зависимости и проверять совместимость версий. Пусть за меня это сделает мавен.
сборщик проектов ant maven
Re[4]: В чем удобство Maven (зачем оно нужно)?
От: 0K Ниоткуда  
Дата: 15.04.11 10:59
Оценка:
Здравствуйте, vitabrevis, Вы писали:

V>Вы наверное не в курсе, что есть проекты которые собираются автоматом, ежедневно, еженощно?


Почему же? Использовал TeamCity для автоматической сборки (для проектов VS 2010 sln править не приходилось).

Maven нужен исключительно для автоматической сборки?
Re: В чем удобство Maven (зачем оно нужно)?
От: Mr.Delphist  
Дата: 15.04.11 11:04
Оценка:
Здравствуйте, 0K, Вы писали:

Если не ошибаюсь, для эклипса есть Maven-плагин
Зачем оно вообще надо — выше объяснили.
Re[3]: В чем удобство Maven (зачем оно нужно)?
От: Аноним  
Дата: 15.04.11 11:04
Оценка:
Здравствуйте, 0K, Вы писали:

0K>Здравствуйте, LeonidV, Вы писали:


LV>>Для меня старые пердуны не делают разделения между IDE и платформой. Потому как в моем представлении "старые пердуны" работали лишь с Delphi, где IDE это и есть платформа.


0K>IDE -- нужна не просто для подсветки кода, но и для сборки проекта. На то она и IDE.


LV>>mvn удобен, просто удобен.


0K>А его правда используют? Чем не устраивает сборка проекта с помощью Eclipse, без всяких там Maven?


И как же чудо-Eclipse находит зависимости? jar'ы в проект положите? И в svn добавите их? А сколько времени потребуется обновить версию одной из зависимостей? А если она сама с зависимостями? А если новую зависимость добавил ваш коллега по команде, эклипс-то её найдёт сразу?
А как сэкономить время настроики проекта если в команде половина работает с Intellij IDEA?
А как запускать автоматические тесты на линукс-сервере, который без иксов, эклипса?
Как управлять релизами?

Вам проще с IDE и без maven'a — ваш проект ещё не дорос до нужной фазы.
Re[3]: В чем удобство Maven (зачем оно нужно)?
От: Skipy Россия http://www.skipy.ru
Дата: 15.04.11 11:08
Оценка: +2
Здравствуйте, 0K, Вы писали:

0K>А его правда используют? Чем не устраивает сборка проекта с помощью Eclipse, без всяких там Maven?


Организуйте с помощью Eclipse интеграционную сборку с реакцией на коммиты в репозиторий (плюс ночную) — и мы продолжим это увлекательное обсуждение.
С уважением,
Евгений aka Skipy
www.skipy.ru
Re[4]: В чем удобство Maven (зачем оно нужно)?
От: Sorc17 Россия  
Дата: 15.04.11 12:01
Оценка:
Здравствуйте, Skipy, Вы писали:

S>интеграционную сборку с реакцией на коммиты в репозиторий


Объясните нубу что это?
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
Re[5]: В чем удобство Maven (зачем оно нужно)?
От: Blazkowicz Россия  
Дата: 15.04.11 12:08
Оценка: +1
Здравствуйте, Sorc17, Вы писали:

S>>интеграционную сборку с реакцией на коммиты в репозиторий

S>Объясните нубу что это?
Есть такое сервер — Version Control System, в нем хранится исходный код и с ним работает большая команда.
Когда кто-то что-то меняет локально и доводит до ума он "коммитит" в VCS, чтобы сделать код доступным всем.
И вот я такой аболтус закомитил код, который не компилируется и ушел домой.
В результате вся команда не может продолжать работу потому что они не могут проверить свой код и как он работает с моим кодом.
Для решения этой проблемы создается билд-сервер, который собирает проект при каждом коммите.
Если сборка сломается, то все получат соответствующее письмо с именем автора последнего коммита. И я получу по шапке ещё до того как покину офис. :)
http://rsdn.org/File/13923/ukliam3.gif
Re[6]: В чем удобство Maven (зачем оно нужно)?
От: Sorc17 Россия  
Дата: 15.04.11 12:12
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, Sorc17, Вы писали:


S>>>интеграционную сборку с реакцией на коммиты в репозиторий

S>>Объясните нубу что это?
B>Есть такое сервер — Version Control System, в нем хранится исходный код и с ним работает большая команда.
B>Когда кто-то что-то меняет локально и доводит до ума он "коммитит" в VCS, чтобы сделать код доступным всем.
B>И вот я такой аболтус закомитил код, который не компилируется и ушел домой.
B>В результате вся команда не может продолжать работу потому что они не могут проверить свой код и как он работает с моим кодом.
B>Для решения этой проблемы создается билд-сервер, который собирает проект при каждом коммите.
B>Если сборка сломается, то все получат соответствующее письмо с именем автора последнего коммита. И я получу по шапке ещё до того как покину офис.

Класс, спасибо
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
Re[6]: Добавлю
От: Skipy Россия http://www.skipy.ru
Дата: 15.04.11 12:18
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>И вот я, такой оболтус, закомитил код, который не компилируется и ушел домой.


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

В общем, регулярные сборки призваны снизить до минимума время от момента внесения проблемного кода в репозиторий до момента его обнаружения. Без системы тестирования ловят только ошибки компиляции, т.е. совершенное раздолбайство.
С уважением,
Евгений aka Skipy
www.skipy.ru
Re[7]: Добавлю
От: Blazkowicz Россия  
Дата: 15.04.11 12:28
Оценка:
Здравствуйте, Skipy, Вы писали:

S>Код может даже компилироваться. Но вот тесты он ломает безнадежно. Такое случается гораздо чаще — полный цикл юнит-тестирования, занимает, скажем, пару часов, не все их прогоняют целиком. А есть и интеграционные тесты еще, их чаще всего на локальных машинах вообще не гоняют, они требуют окружения соответствующего.

S>В общем, регулярные сборки призваны снизить до минимума время от момента внесения проблемного кода в репозиторий до момента его обнаружения. Без системы тестирования ловят только ошибки компиляции, т.е. совершенное раздолбайство.
Ну, да. Это уже найтли билды. Но интеграционные многочасовые тесты не запускаются ведь на каждый коммит?
http://rsdn.org/File/13923/ukliam3.gif
Re: В чем удобство Maven (зачем оно нужно)?
От: elmal  
Дата: 15.04.11 12:39
Оценка:
Здравствуйте, 0K, Вы писали:

0K>Вот никак не могу понять нафига вообще нужен этот Maven?

У меня из мавен проектов:
1) Делается сборка на CI сервере, прогоняются все тесты, собираются метрики, проверяется покрытие тестами, проверяются соответствие code convention;
2) Делается деплой на тестовый прямо из GUI CI сервера, делается production сборки прямо с CI сервера, для деплоя которых достаточно нажать одну клавишу, и все обновится как положено;
3) Запуск интеграционных тестов, проверка всего функционала, эмуляция клиента;
4) Есть куча разных таргетов, сборка проекта с различными опциями, в результате получается именно нужный мне war с нужными значениями в конфигах, именно нужным набором jar в либах;
5) Создание базы делается тоже мавен таргетом, как и обновление;
6) Новичку, подключенному к проекту, достаточно сказать url к исходникам. Он сразу же откроет это в IDE, все зависимости скачаются, никаких проблем со сборкой у него не будет;
7) Генерация кода для обращения к чужим вебсервисам на основе WSDL.
8) Про то, насколько стало подключить стороннюю либу (или собственную) через зависимости, даже говорить не буду. Мне не надо качать никакой спринг и хибернейт, за меня все самостоятельно скачается, положится куда надо.

Все это я с равным успехом могу делать как из командной строки, так и непосредственно из IDE, так как там есть maven plugin.
Re: В чем удобство Maven (зачем оно нужно)?
От: vsb Казахстан  
Дата: 15.04.11 12:51
Оценка:
Для "простого программиста" maven удобен тем, что управляет зависимостями. Вот взять Hibernate. Он требует помимо своих .jar-ников ещё десяток других, и ещё другой десяток опциональны. Ещё Spring есть, с такими же аппетитами. Если тупо в lib скидывать всё, то в конечном счёте может получиться хаос, в котором уже никто не разберётся. А в maven всё попроще выходит, подключил hibernate нужной версии и всё, остальное само подтянется.

Ещё для командной разработки maven удобен тем, что не привязывает разработчика к определённой IDE. Например я предпочитаю Idea. Делать два набора файлов проекта в одном проекте? Их надо будет синхронизировать, да и вообще неудобно это. А так — все изменения делаются в конфигах maven-а, а остальные IDE их подхватывают.

CI на мой взгляд тут не при чём, можно и Eclipse-овские проекты собирать из командной строки.
Re: В чем удобство Maven (зачем оно нужно)? Ну и зачем?
От: StanislavK Великобритания  
Дата: 15.04.11 12:59
Оценка:
Здравствуйте, 0K, Вы писали:

0K>Вот никак не могу понять нафига вообще нужен этот Maven?


Че-то народ флудит, а на вопрос так и не ответил
Конкретно Мейвен-то зачем нужен? Только, плз, не надо говорить, что для того, чтобы собирать проект и трекать зависимости. Для этого тулзы погибче и приятнее есть.
Интерестно, что разные люди на этот счет думают... Мне кажется, что сильно потиворечивая тулза.
Re[2]: В чем удобство Maven (зачем оно нужно)? Ну и зачем?
От: Cyberax Марс  
Дата: 15.04.11 13:02
Оценка: +2
Здравствуйте, StanislavK, Вы писали:

SK>Конкретно Мейвен-то зачем нужен?

1) Зависимости.
2) Зависимости.
3) Зависимости.

SK>Только, плз, не надо говорить, что для того, чтобы собирать проект и трекать зависимости. Для этого тулзы погибче и приятнее есть.

Нету. Есть совместимые с форматом репозиториев Maven'а недоделки на всяких Groovy, которые надо нафиг закопать вместе с их авторами.

SK>Интерестно, что разные люди на этот счет думают... Мне кажется, что сильно потиворечивая тулза.

Это было "противоречиво" 5 лет назад. Сейчас почти весь софт собирается Maven'ом.
Sapienti sat!
Re[2]: В чем удобство Maven (зачем оно нужно)? Ну и зачем?
От: LeonidV Ниоткуда http://vygovskiy.com
Дата: 15.04.11 15:01
Оценка:
Здравствуйте, StanislavK, Вы писали:

SK>Конкретно Мейвен-то зачем нужен? Только, плз, не надо говорить, что для того, чтобы собирать проект и трекать зависимости. Для этого тулзы погибче и приятнее есть.

Например? Какая конкретно еще тулза позволяет описать проект, а не процесс сборки?
http://jvmmemory.com — простой способ настройки JVM
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.