Массовое добавление всех библиотек Maven в classpath в IntelliJ

#java #maven #intellij-idea

#java #maven #intellij-idea

Вопрос:

Недавно я клонировал проект и запустил mvn clean install , который установил все зависимости, перечисленные в моем pom.xml . Всякий раз, когда я открываю класс, я вижу множество инструкций import, которые пытаются импортировать сторонний класс, выделяются с ошибкой cannot resolve symbol Foo . Когда я нажимаю Alt Enter, появляется возможность добавить библиотеку в classpath, которая полностью решает проблему — для этой библиотеки:

введите описание изображения здесь

Это было бы прекрасно, но у меня есть много библиотек, для которых мне нужно это сделать. Есть ли способ, которым я могу сделать это массово?

Редактировать

До моего сведения было доведено, что мне не нужно делать это после mvn clean install , если эта команда успешно завершится. Таким образом, это ошибка, которую я получаю в самой последней части моих журналов:

 Exception in thread "Thread-9" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils
        at org.apache.tomcat.maven.plugin.tomcat7.run.RunMojo$1.run(RunMojo.java:140)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.FileUtils
        at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
        at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
        at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
        at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
        ... 1 more
  

Ответ №1:

IntelliJ имеет хорошую поддержку Maven. Вам не нужно добавлять эти зависимости в IntelliJ project вручную, если вы импортировали проект из Maven pom.xml . Убедитесь, что вы выбрали Import project from external model опцию при импорте.

Выполняется ли сборка вашего проекта с mvn clean install ? Если нет, убедитесь, что это так, прежде чем что-либо менять в IntelliJ. После этого повторно импортируйте проект в IntelliJ и дважды проверьте File | Settings | Build, Execution, Deployment | Build Tools | Maven конфигурацию, например, убедитесь, что вы используете одну и ту же установку Maven в командной строке и IntelliJ.

Возможно, в вашей settings.xml конфигурации есть что-то дополнительное, что позволяет ей работать в командной строке, но не работает в IntelliJ при запуске со встроенным Maven?

Комментарии:

1. mvn clean install завершается с кодом выхода 0, и все модули помечаются как успешные, но это приводит Exception in thread "Thread-8" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils к завершению в последнюю очередь. Возможно, это могло бы быть так.

2. @Nanor всегда безопаснее исправлять ошибки и предупреждения при сборке из командной строки перед использованием IDE. В любом случае это должно работать «из коробки», если только вы не совершаете какую-то магию, например, распаковываете банки зависимостей из ZIP-файла, загруженного по HTTPS.

3. Это имеет смысл. Я посмотрю, устраняет ли исправление ошибки NoClassDefFoundError эту проблему, и если это произойдет, я приму ваш ответ.

4. @Nanor ваша ошибка связана с плагином Tomcat maven, который не является частью стандартного жизненного цикла сборки. На этом этапе я бы предпочел удалить .idea и .iml файлы и явно повторно импортировать проект.