Как заставить проект Eclipse-Maven автоматически обновлять путь к классам при изменении зависимости в моем pom.xml-файл?

Я использую Eclipse Mars с Maven (v 3.3). Когда я обновляю зависимость в моем pom (изменить версию), мой проект Eclipse-Maven не поднимает его, даже когда я щелкните правой кнопкой мыши мой проект и выберите "Maven" -> "обновить проект."Я знаю это, потому что я не вижу ошибок компиляции в Редакторе Eclipse Java, которые я вижу, когда я строю проект в командной строке с помощью

mvn clean install

когда я удаляю проект из рабочей области и повторно импортирую его, все возвращается к нормальный. Однако этот процесс является громоздким. Как заставить мой проект Maven-Eclipse автоматически обнаруживать изменения в моем pom и соответствующим образом обновлять библиотеки проектов?

и да, в меню" проект "проверяется" построить автоматически".

5 ответов


при импорте проекта в Eclipse используйте встроенную поддержку Maven Eclipse (aka, m2e). Я рекомендую не использовать mvn eclipse:eclipse поскольку это не дает лучших результатов (как вы видите). Maven-это инструмент управления сборкой и зависимостями, а не IDE; ожидать, что он будет управлять IDE-конкретными вещами, на мой взгляд, глупо (я понимаю, что команда Maven думает иначе, что Maven должен отвечать за управление вашей IDE, но это ерунда).

так что если у вас есть проект доступные в вашей системе, удалите все файлы Eclipse (обычно просто .classpath, .project и ), они были порождены mvn eclipse:eclipse и вы не хотите, чтобы они мешали" правильному " процессу импорта, описанному здесь. Затем внутри Eclipse используйте файл > импорт > Maven > существующие проекты Maven для импорта проекта. Это должно привести к лучшей интеграции между Eclipse и maven, включая автоматическое обновление пути сборки Eclipse, когда pom измененный.

как быстро проверить, после выполнения импорта таким образом, вы должны увидеть группу под названием Зависимостей Maven на вкладке библиотеки пути сборки проекта (в диалоговом окне Свойства). Вот так:

enter image description here

если вы хотите, чтобы конфигурация проекта Eclipse автоматически обновлялась каждый раз, когда POM изменяется, для этого есть (экспериментальная) настройка предпочтения > Maven. Имейте в виду, что это может быть нежелательно, хотя - как упоминалось в эта функция запрос, это несколько длительный процесс, который затрагивает кучу вещей в проекте Eclipse; делать это автоматически на каждом pom.xml изменение может в конечном итоге быть больше проблем, чем это стоит.

enter image description here


три обязательные проверки вы должны сделать для автоматического обновления в вашем classpath

  1. ваш репозиторий не синхронизирован с вашей Eclipse IDE, пожалуйста, проверьте следующие настройки в вашей IDE. External Maven
  2. щелкните правой кнопкой мыши любой POM.xml из вашей IDE и проверьте профиль Maven, который должен быть автоматически активирован. Также не должен быть включен флажок offline и Force update. Пожалуйста см. ниже изображение.autoactivated
  3. всегда проверяйте настройки пользователя, которые должны отражать ваши локальные настройки maven.XML, как показано на рисунке. enter image description here
  4. после выполнения всех этих проверок обновите рабочее пространство Eclipse, чтобы отразить эти изменения.

Eclipse должен обновлять ваш путь к классам. Если нет, значит, что-то идет не так.

трудно сказать, что проблема может быть точно, не зная больше о pom вашего проекта.XML. Дополнительная информация может потребоваться для решения проблемы, но я просто сделаю удар в темноте:

открыть .файл проекта в корневой папке вашего проекта и проверить порядок строителей и природы там. Возможно, что какая-то другая природа проект также вызывает сбой maven2Nature. Переместите Maven nature и посмотрите, поможет ли это.

в качестве альтернативы вы можете быть мышление что Eclipse не обновляет ваши зависимости, потому что он не добавляет некоторые индикаторы ошибок в проект, который должен быть там с новыми зависимостями. Если это так, попробуйте очистить текущий проект (project>clean...). Maven в Eclipse не обязательно запускает полную перестройку, когда зависимости усовершенствованный.

Если ничего из этого не работает, закрытие/открытие проекта может решить проблему быстрее, чем реимпорта.


то, что вы написали, должно работать. Вы проверили это:

  • не "чисто" mvn install из терминала см. ваши изменения в POM?

  • может быть, какой-то плагин может быть багги, кэшируются некоторые зависимости в target и mvn clean install нужен

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

  • вместо импорта Maven проект в Eclipse через m2eclipse, вы можете попробовать создать файлы Eclipse через старый mvn eclipse:eclipse и посмотреть, что произойдет тогда

  • хорошо ли это работает, когда вы пытаетесь импортировать свой проект Maven в другую IDE, например, бесплатную версию сообщества IntelliJ?


в крайнем случае, вы можете удалить текущую установку Eclipse и установить новую версию. Когда вы добавляете несколько плагинов, они могут мешать друг другу и создавать странное поведение. После этого не импортируйте проект Maven в рабочую область, а создайте новый и скопируйте и вставьте файлы, которые у вас были.