2013-12-10 7 views
2

Мы используем Maven в большом корпоративном ИТ-магазине, в котором я работаю. Иерархия зависимостей кажется очень неуправляемой очень быстро, даже если мне просто нужно добавить одну новую зависимость. При небольших изменениях в базе кода я нахожу, что трачу больше времени на отладку проблем Maven, чем на фактический код. Я ищу некоторые направления о том, какСоветы по отладке проблем зависимости Maven

  1. быстрее отладить вопросы
  2. Как спроектировать новое программное обеспечение, чтобы избежать запутанной паутины циклических зависимостей, помещая исключения в pom.xml, и т.д ....

Спасибо!

ответ

0

Я бы порекомендовал вам использовать плагин eclipse maven (m2e) - он обладает отличным графическим средством просмотра зависимостей, которое должно позволить вам быстро отслеживать конфликты зависимостей. Он фактически предоставляет два вида - древовидное представление и представление «иерархия». Я предпочитаю представление иерархии, поскольку он позволяет вам искать и фильтровать транзитивные зависимости и выявлять конфликты.

+0

Это потрясающий инструмент. Благодаря! Инструмент «mvn dependency: tree» хорош, но не так прост в чтении, как это делает графический интерфейс. – Learnin

0

Эта команда должна быть вашим лучшим другом: Resolving conflicts using the dependency tree.

Как создать новое программное обеспечение, чтобы избежать запутанной сети круговых зависимостей?

Я боюсь, что нет четкого и простого ответа, и, конечно, есть много подходов, но я бы сказал, что лучше, если у вас есть специальная команда (/мини-команда/один человек?), который отвечает за заботясь о всех материалах Maven в вашей организации. Они должны анализировать зависимости, и если есть какие-либо просьбы о добавлении новой зависимости к проекту, они должны одобрить/отклонить ее.

+0

Я вроде как думал, что волшебной пули нет, и ответы на мой вопрос подтверждают это. Таким образом, в принципе не существует замены для организации процесса вне определенного шаблона проектирования, чтобы поддерживать порядок. Это в основном то, что вы говорите? – Learnin

0

Я хотел бы дать следующий совет для распутывания проблем зависимости maven. Прежде всего, я воспользуюсь целью mvn dependency:tree из командной строки. Это даст вам хорошее дерево ваших зависимостей и упростит определение определенных конфликтов версий (т. Е. Hibernate использует версию log4j, которая конфликтует с вашей зависимостью slf4j). Что касается хорошего способа визуализации круговых зависимостей, плагин m2eclipse для Eclipse имеет очень хорошие утилиты визуализации, которые помогут вам разобраться в этом. Наконец, я бы предложил определить версии зависимостей проекта в корневом pom.xml, используя функцию <dependencyManagement>, чтобы все версии управлялись в одном месте, и это позволит дочерним файлам pom.xml объявлять только <groupId> и <artifactId>.

Смежные вопросы