?

Log in

No account? Create an account
nyaload

Журнал Пушыстого

Журнал Пушыстого

Previous Entry Share Next Entry
Run Maven, Use Maven, Write Maven, Improve Maven, Develop Maven
nyaload
_winnie
maven делает всё, но очень хреново.

Резолв версий библиотек: в теории хорошо, но на практике сторонние либы ставят слишком точные версии зависимостей и содержат копии классов чужих библиотек внутри, в результате в проекте оказывается несколько разных версий библиотек. Вообщем, полуавтоматический резолв версий - это единственное за что его можно терпеть, лучше так, чем совсем руками. Ну и клёво что они скачиваются из одного места, не надо прыгать по sourceforge и apache.org. Но это минор.

Компиляция: Работает тупо медленно, я уже писал об этом, не пытается за один os.stat/листинг директории выяснить про файл всё, спрашивает атрибуты по кусочкам, лезет в папки где исходников быть не может (.svn). IDEA пересборку проводит в 50 раз быстрей при типичных изменениях.
Не умеет многопоточную сборку. Спрашивается, зачем связывать пользователя по рукам и ногам, и не использовать это для оптимизации.

"Линковка"-сборка в jar: По мистическим причинам пересобирает jar когда это не надо. jar получаются бинарно разные, одну причину точно вижу - всовывает туда имя пользователя и компьютера, и самого себя, типа "собрано мавеном". Блин, да работай ты как простой зип, приходится деплоить 100 мегабайт jar, хотя исходники не поменялись.

Вывод логов - максимально grep-unfrendly, невозможно регулировать уровни INFO/WARNING.

Лезет в сеть (слава богу, в местный репо) за библиотеками. Можно настроить на офлайн, но блин, чую библиотеки вне контроля версий чувствую ещё станут поводом для ада.
Tags: ,


  • 1
> приходится деплоить 100 мегабайт jar, хотя исходники не поменялись.
Rsync!

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

А нахрена оно такое нужно? :) Неужели нет более других систем - скажем, Ant?

(Deleted comment)
Вроде нет разницы, скачать и перезаюзать чужой ant-код (который легко допиливатся, кстати!), или скачать и перезаюзать плагин (в котором черт ногу сломит, если надо дополнить).

Если проект имеет какую-то повторяемую простую структуру, то и билд на ant/whatever будет простой. Копипаста - рефакторится, можно выносить код в общие файлы, переменные, ant-таски и тд. Если билд сложный, запутанный, то он будет запутанным на любом языке, декларативном или нет.

Сейчас maven служит только для проектных файлов, медленной сборки и резолва библиотек (мокрые полотенца поверх jar-hell). Заодно я понял зачем и как манифесты и SxS в windows.

Всякое сложное "синхронизировать незаигноренные файлы из svn" делается через python. Кстати ant не смотря на свою xml-ность почти так же лаконичен и прост, пока хватает стандартных несложных тасков.

Edited at 2010-11-16 12:00 am (UTC)

Я помню, что потратил полнедели на попытки разобраться с этим монстром. Пока ты делаешь стандартные действия - все хорошо. Как только потребовался шаг в сторону - все, надо выискивать пути, лезть внутрь, и все становится очень нетривиально. Промучавшись, в итоге перевел проект на ant - и успокоился.

ОМГ расскажи чо вы там такое пишете. То какой-то питон ад. Теперь ява ад. Я вот в яве ант всегда юзал и не парился. Мавен-хуявен-декларативен это все для молодых, горячих

(Deleted comment)
Такой вот проект. 100 мегайбат jar внутреннего кода, написанного нашими программистами, и 50 мегабайт jar-библиотек. Простыней сгенерированного кода не вижу, только простыни рукописного. 50 мегабайт исходников java (интересно, почему запакованные *.class в два раза больше...). Блин, это же 20 штук "война и мир".

Его случайно не в чёсть Марвина назвали? http://en.wikipedia.org/wiki/Marvin_the_Paranoid_Android

Названия хоть и разные но уж очень поведение похоже :)

  • 1