Maven, много модулей в проекте, импорт всего этого в IDE

Замечал несколько раз такое: если в большом проекте на Java есть несколько модулей (проект, созданный под сборку в Maven), то при импорте его в IDE (например, в Idea) возникают какие-то проблемы. Не видит часть классов, которые где-то есть — в проекте (в одном из модулей) или в библиотеках, ещё по каким-то причинам IDE отказывается собирать проект.
Обычно помогали подсказки коллег, которые этот проект видят уже давно.

Если у вас бывали такие проблемы, то в чём обычно дело было, — это недоработки IDE (классы не добавляются в пути автоматически, и нужно вручную настраивать проект после импорта), глюки плагинов IDE, глюки плагинов Maven’а?

Есть какая-нибудь стратегия решения таких проблем?

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Нужно импортировать в IDE как Maven проект, чтобы IDE сама собрала и подтянула как ей нужно, не как существующий и не просто классы. Проверить сам помник главный и во всех модулях, что нет циклических зависимостей например, хотя IDEA и сама подскажет. В IDEA 12 было куча проблем со snapshot-ами, в 13-й пофиксили.

Также постройте дерево зависимостей, у вас случайно нету конфликтующих? допустим есть Commons.io 2.4 в вашем помнике, а есть транзитивная 2.1, и если транзитивная попадет в classpath раньше, то классы, использующие новый функционал не будут компилится и вы получите замечательный: NoSuchMethodError

Мне когда-то помогала полная очистка мавен-репозитория под ноль и билд с нуля на старом дремучем легаси-проекте, примерно раз в 2 недели.

Не забудьте поставить галочку auto-import и build-automatically.

Стратегия заключается в том, чтобы использовать стандартные инструменты maven-а и не накручивать по возможности колбасу поверх. Ну а для фиксов есть локальные костыли и work-around-ы.

Нужно импортировать в IDE как Maven проект,

Так и делалось.

В итоге в том случае оказалось, что надо было импортировать корневой проект, и только его, не отмечая подпроекты. Это для Idea, — так оно стало его импортировать без ошибок. А вот Eclipse (в сборке Scala IDE) его не берёт вообще.
В прошлые разы, с другими проектами, решения (для Idea) бывали другими. С транзитивными зависимостями проблем вроде не возникало.

Стратегия заключается в том, чтобы использовать стандартные инструменты maven-а и не накручивать по возможности колбасу поверх.

Это стратегия не для темы вопроса, а для процесса разработки, — для предыстории, так сказать. Тут я полностью согласен, конечно.
А то бывает, понакрутят там всяких профайлов, модулей, плагины разнообразные попрописывают в pom.xml, — потом после checkout’а проект импортировать задолбаешься.

Подписаться на комментарии