Pull to refresh

Comments 17

Недавно столкнулся с Мавеном и он отпугнул меня. Вы в самом начале пишете, что Мавен навязывает структуру проекта, но это не наибольшая проблема. Я с этой проблемой до сих пор уживаюсь с большим зубовным скрежетом (: Отчасти потому, что мавеновская структура проекта делает очень не удобной работу в Eclipse, потому что у него стандартная структура проекта сильно отличается. У Вас скрины из Eclipse. Вот теперь, собственно, вопрос: как вы подружили Maven и Eclipse?
PS я пробовал плагины для интеграции, но это не решает многих проблем. К примеру, если создавать в Eclipse Dynamic Web-project то вообще случается беда и совершенно не понятно как подружить структуры.
Простите за вопрос несколько не по теме. Заранее спасибо за ответ
C Dynamic Web приложениями там действительно по умолчанию генерируется невразумительный проект, поскольку по умолчанию мавен не ориентируется на WTP и не генерирует его подержку. Чтобы включить WTP нужно выставить параметр wtpversion в значение 2.0 (по умолчанию none) через командную строку или в конфигуреции мавена

mvn eclipse:eclipse -Dwtpversion=2.0

сгенерирует поддержку wtp в проекте, но на картинке этой поддержки нету, поскольку это не есть веб-проект.

Что до разных структур, мавен генерирует для eclipse папки для быстрого перехода к исходникам, ресурсам и тестам. Чего нету так это такой же папочки для src/main/webapp, аля WebContent, это действительно напрягает. Можно попытаться прикрутить самостоятельно
Ну не знаю, в том же Эклипс я просто обожаю мавен. Да, проблемы с фейсетами, но нужны ли они… Мне, например, нет. Для мавена есть куча плагинов и поддерживать, дебажить, ранить тоже веб приложение в томкате/джейбоссе это совершенно тривиальное дело. А то что мевен навязывает свою структуру, это же просто огромный плюсище. И мне очень приятно осознавать то, что я могу сейчас взять и поменять свою IDE не особо вникая в какие-то там нюансы с миграцией и особенности IDE. Блин, а найти и добавить зависимость с помощью m2eclipse, ну это же просто кайфище… Просто, как раз-два… Эх, поработать бы Вам немного в разношерстной команде и вы бы поняли все прелести мавена.
ну кстати, несколько раз таки пересаживался с eclipse на idea и обратно без особых проволочек, а в особо тяжелых случаях, так как мы на виртуалках работаем, вообще работал в текстовом редакторе )
Кстати, спасибо за статью. Чудесно проделанная работа. Никогда не задумывался над созданием собственных архетипов. Видать не так часто приходится проекты создавать)
Как подсказали знающие люди (unkind и по электропочте), есть плагин для eclipse m2eclipse, который поддерживает человеческий импорт проектов и удобный поиск зависимостей, Сам долго ковырял его, не мог заставить работать, оказывается нужно ставить и extras тоже, без него многие фишки не работают, включая поиcк зависимостей.

Сходите на сюда, установите плагин и дополнения к нему (из extras) и попробуйте, надеюсь, будете приятно удивлены.
спасибо. я его пробовал. на сколько мне хватило прямости рук — он не решает проблему с веб-проектом ):
ну не знаю, он мне даже папочку для webapp создал, на которую я выше жаловался, клево в общем, я уж думал что до смерти буду по уровням ходить
Отсутствие свободы в структуре проекта это жирнейший плюс мавена. Такие проекты, как мавен, ведут индустрию разработки ПО от «ремесленничества» к «промышленному производству».
Во многом согласен.
Но это скорее обусловлено тем, что среднестатистический программист не знает о паттернах организации структуры проекта.
В значительном количестве случаев преимущества Maven'а не используются, естественно при наличии хорошей команды.
У меня тут есть такая задача, надо часть DAO одного проекта использовать в другом. Каким бы образом мне это в maven описать или как это там можно сделать?
создаете отдельный maven-проект с типом jar, делаете install в репозиторий (ваш локальный или локальный для вашего проекта — например сервер nexus), потом в нужном вам проекте прописываете dependency на созданный вами jar.
У меня уже проект то есть, я думаю создать отдельную цель для сборки jar и дальше уже в репозиторий и использовать.
если я правильно понимаю, то это будет не совсем true-way. Вам надо одинаковые DAO из обоих проектов вынести в отдельный проект с packaging jar и прописать dependencies на него в этих проектах. У вас получается правильная структура. Потом ее будет также проще подключить в тот же continuous integration
для создания архетайпа можно пойти более простым путем с помощью mvn archetype:create-from-project — т.е. вы создаете пустой проект с нужной вам структурой, настройками и т.п., потом выполняете этот goal и получаете созданый в нужном виде архетайп.

Подробнее тут: maven.apache.org/archetype/maven-archetype-plugin/advanced-usage.html и maven.apache.org/archetype/maven-archetype-plugin/create-from-project-mojo.html
В общем да, но это все равно что использовать сгенерированные приложения — вроде работает, а непонятно как. Мне хотелось как раз разобраться как оно работает. Хотя про него сказать все же стоит, добавил в статью
Спасибо тебе за статью )

Мне мавен как раз и понравился тем, что в нём навязывается структура проекта.

Так как в этом случае остаётся выбрать архетип от компетентного автора, и ваять приложение с правильной архитектурой.
Sign up to leave a comment.

Articles