2014-11-10 2 views
0

Я работаю с IntelliJ 13.5.1, и я не понимаю механизм синхронизации maven. Мы переключили наш механизм регистрации с logback на log4j. Когда я удалял зависимости logback от моего pom, зависимости были удалены из maven, но не из проекта, даже если я пытаюсь повторно импортировать модуль maven. Другими словами, IntelliJ правильно синхронизирует добавление новых библиотек, но не удаление.Intellij - проблема с синхронизацией зависимостей maven

Является ли это ошибкой этой версии IntelliJ?

Примечание: Когда я удаляю зависимость от пом, банку все еще появляется в сгенерированном артефакте (взорванная война).

+0

Когда вы говорите, что вы удалили зависимость, сделали ли вы это, отредактировав файл pom.xml или щелкнув правой кнопкой мыши => удалить диалог проектов? см. Http://stackoverflow.com/questions/19568134/how-to-remove-modules-from-a-intellij-maven-project-permanently – 333kenshin

+0

Я имею в виду, редактируя pom. Собственно, я не знал другого способа сделать это. Редактирование помпы кажется более естественным. – viniciusjssouza

+0

комментарий от @mugbya: * Это могут быть и другие внешние зависимости. Исключение logback зависит от другой ситуации по умолчанию * – GameDroids

ответ

3

IDEA должен удалить любые зависимости, удаленные из POM при условии, что они были первоначально добавлены через POM (и только через POM). Если вы вручную добавили зависимость, она будет придерживаться. Вот несколько вещей, которые вы можете сделать для решения проблемы:

1) Запустите реимпорт enter image description here из окна инструмента maven. Подождите, пока он закончится (посмотрите ход выполнения в строке состояния внизу справа). Затем сразу запустите его второй раз. Хотя обычно мне не нравятся такие ответы, пару раз я видел случаи, когда для IDEA требуется двойной импорт, чтобы правильно разрешить измененный POM.

2) Перейти в диалоговое окно Project Structure и выберите 'Библиотеки' под этикетку, "Настройки проекта" на левой стороне. (а не «Глобальные библиотеки», а просто «Библиотеки»). Ищите нежелательные зависимости. В строке поиска должен работать. (Примечание: если зависимость не начинается с «Maven:», то она не была добавлена ​​maven). Выберите его и удалите. Как только все они уйдут, закройте и переименуйте проект maven. Посмотрите, вернутся ли они. Если это так, их куда-то тянет куда-то.

3) Вы упомянули, что вы запустили дерево зависимостей, чтобы показалось, что maven не тянет зависимость. Чтобы проверить это и быть абсолютно уверенным, я рекомендую использовать плагин Maven Helper. Установите его из диалога настроек плагина и перезапустите IDEA. После перезагрузки перейдите в файл pom. Внизу вы увидите вкладку «Анализ зависимостей». Выберите его. Затем выберите «Все зависимости» вверху. Поиск журнала. Если оно найдено, выберите его, а справа вы увидите обратное дерево того, как оно втягивается. Например, для hamcrest я вижу следующее, говоря, что junit потянул его в:

enter image description here

Сделайте это для всех ваших файлов pom.

+0

Плагин поддержки maven отлично! Это показало мне дорогу. У нас была странная зависимость от весенней загрузки, которая зависит от логики. Я удалил его и выполнил реимпорт. Теперь библиотека исчезла. Разумеется, это было сообщено mvn dependency: tree, но результат был настолько огромным, что я не смог найти logback. Теперь я перенаправил вывод в файл, и мне удалось его найти. Извините, ребята, моя ошибка. Спасибо! – viniciusjssouza

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