Импорт зависимостей Maven в IntelliJ IDEA

208

У меня небольшой вопрос о IntelliJ IDEA 11. Я только что импортировал проект из Subversion - это проект Maven. Но у меня есть проблема в зависимостях библиотеки maven, так что я не могу автоматически включить все зависимости maven - IDEA показывает ошибки зависимости только при открытии этого класса / Вот что я получаю:

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

Поэтому я хочу, чтобы все зависимости добавлялись автоматически - возможно ли это, или мне нужно пройти через все файлы классов, чтобы определить и добавить maven-зависимости ?!

ОБНОВЛЕНИЕ: После внесения некоторых изменений я нашел, как каким-то образом решить мою проблему. Вот что я сделал: введите описание изображения здесь

но я думаю, что логически он не будет включать и проверять новые зависимости впереди?! ... Есть ли какая-либо область настроек для этого в intelliJ - автоматический экспорт зависимостей в classpath ?!

Заур Гулиев
источник
9
Он загружает все зависимости, но не добавляет их в путь к классам ...
Заур Гулиев
3
и еще одна проблема заключается в том, что intelliJ показывает мне ошибки, подчеркнутые красным, только когда я открываю этот файл Java ...
Заур Гулиев
4
Один из случаев, когда вы получаете эту красную линию, - это если у вас есть зависимость SNAPSHOT с классификатором, где существует более новая версия зависимости без классификатора. Это абсолютно законно в Maven, но IntelliJ запутывается, пытаясь определить путь к физическому файлу в вашем локальном репозитории Maven.
RCross
4
К вашему сведению, это все еще может произойти в 15.0.2. Просто случилось со мной. Пришлось сдуть мой файл .iml и папку .idea и заново импортировать. Невероятно разочаровывающий ч / б я потратил 2 часа на борьбу с ним и в итоге потерял все свои тщательно продуманные конфиги бега.
Кевин Паули
3
@KevinPauli Для этого не нужно удалять файлы проекта IDEA, вы можете просто «Импортировать все проекты Maven» на вкладке «Проекты Maven» для повторного импорта вручную.
Заур Гулиев

Ответы:

282

IntelliJ должен автоматически загружать и добавлять все ваши зависимости в путь к классам проекта, если ваше POM совместимо и все зависимости доступны.

При импорте проектов Maven в IntelliJ обычно появляется информационное окно с вопросом, хотите ли вы настроить автоматический импорт для проектов Maven. Это означает, что если вы внесете какие-либо изменения в свой POM, эти изменения будут загружены автоматически.

Вы можете включить такую ​​функцию, выбрав «Файл»> «Настройки»> «Maven»> «Импорт», есть флажок «Импортировать проекты Maven автоматически».

Если это не поможет, то я бы предложил провести полную очистку и начать заново:

  • Закройте окно вашего проекта (и IntelliJ) и удалите все *.imlфайлы и все .ideaпапки (по одному на модуль)
  • Запустить mvn clean installиз командной строки
  • Повторно импортируйте проект в IntelliJ и обратите внимание, когда он просит включить автоматический импорт

Обновление IntelliJ 2016 :

Параметр Автоматически импортировать проекты Maven перенесен в « Построение, выполнение, развертывание»> «Инструменты сборки»> «Maven»> «Импорт» в настройках IntelliJ.

Алонсо Домингес
источник
Итак, ваше решение было пометить зависимости как экспортированные? это странно! Я часто использую IntelliJ и Maven, и ни в одном из моих проектов (некоторые из них являются мультипроектами) не включена функция экспорта ... Это Community Edition или Ultimate?
Алонсо Домингес
1
Это Ultimate Edition, но проект, который я импортировал, был построен на Eclipse - так что там был включен .classpath, но IntelliJ использует .iml - так что я считаю логичным впервые включить эти библиотеки, если этот проект не имел .iml файл до ..?!
Заур Гулиев
1
о, хорошо - вы пытались импортировать его как проект Maven, а не как проект Eclipse? Я привык не регистрировать связанные с IDE файлы в своих исходных репозиториях при работе с проектами Maven: если это проект Maven, то правила Maven
Алонсо Домингес
2
Вы можете включить автоматический импорт в настройках / настройках. Откройте настройки / настройки и найдите «Импортировать maven проекты автоматически». он находится в разделе Сборка, выполнение, развертывание> Инструменты сборки> Maven> Импорт
Сейед Джалал Хоссейни
2
@JustinBlank не удивлен этим, учитывая, что это ответ 2012 года. Настройки все еще там, они просто перенесены куда-то еще (ответ был обновлен).
Алонсо Домингес
66

Исправить до IntelliJ 14

Файл [меню] -> Настройки -> maven -> импорт и снимите флажок «использовать maven3 для импорта проекта»

ссылка: http://youtrack.jetbrains.com/issue/IDEA-98425 (которая может иметь и несколько других идей)

Исправить IntelliJ 15+

Вновь столкнулся с этим, на этот раз с IntelliJ 15, у которого больше нет опции «использовать maven3 для импорта». Причина заключалась в том, что иногда IntelliJ «неправильно разбирает maven-зависимости», и если он не может разобрать одну из них правильно, он , очевидно, разочаровывается во всех из них. Вы можете узнать, так ли это, открыв окно инструментов проектов Maven (меню «Вид» -> «Окна инструментов» -> «Проекты Maven»). Затем разверните один из ваших проектов Maven и его зависимости. Если все зависимости подчеркнуты красным, «Хьюстон, у нас проблема». введите описание изображения здесь

На самом деле вы можете увидеть реальный провал, наведя курсор мыши на название проекта.

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

В моем случае он сказал «Проблемы: нет доступных версий для XXX» или «Не удалось прочитать дескриптор для артефакта org.xy.z» ref: https://youtrack.jetbrains.com/issue/IDEA-128846 и https: // youtrack.jetbrains.com/issue/IDEA-152555

Кажется, в этом случае я имел дело с банкой, у которой не было связанного файла pom (в нашем репозитории maven nexus, а также в моем локальном хранилище). Если это также ваша проблема, то «обходите обходной путь»: если вам на самом деле не нужно использовать классы из этого jar-кода в вашем собственном коде (например, только для транзитивной зависимости maven), вы можете на самом деле уйти, комментируя его из pom (временно) перезагрузите проект maven, а затем раскомментируйте его. Каким-то образом после этого момента IntelliJ «запоминает» свои старые рабочие зависимости. Добавление временного исключения maven временно может также сделать это, если вы сталкиваетесь с ним из транзитивной цепочки зависимостей. "

Другая вещь, которая может помочь, - это использовать «более новую версию» maven, чем в комплекте 3.0.5. Чтобы настроить его на использование по умолчанию, закройте все окна intellij, затем откройте настройки -> сборка, выполнение и развертывание -> инструменты сборки -> maven и измените домашний каталог maven, он должен сказать «По умолчанию». проект "наверху, когда вы настраиваете это, хотя вы можете настроить его и для конкретного проекта, если вы" импортируете "его после настройки.

Очистить кеши

Удаление ваших папок кеша intellij (windows: HOMEPATH /. {IntellijIdea, IdeaC} XXX linux ~ / .IdeaIC15) и / или удаление и переустановка самого IntelliJ. Это также можно сделать, перейдя в File [menu] -> Invalidate Caches / Restart.... Нажмите invalidate and restart. Это позволит переиндексировать весь ваш проект и решить многие сложные проблемы с IntelliJ.

rogerdpack
источник
2
Как ни странно, почти каждый второй пост советует проверить опцию «Использовать Maven3 для импорта проекта», чтобы решить эту проблему, в то время как фактически сняв галочку, я решил эту проблему. Зачем? Я не знаю. Спасибо!
Janhink
3
В v14 ultimate я выбрал внешний maven и все вернулось к работе.
АликЭльзин-килака
@ AlikElzin-kilaka Изменение домашнего каталога maven на внешний maven home очень помогает. После того, как я обновил IDEA до версии v14 ultimate, я не смог запустить свой проект в IDEA из-за того, что «плагин tomcat6 не найден», но я могу запустить проект с помощью команды mvn, и изменение домашнего каталога maven на внешний решило его
JerseyGood
В IntelliJ 2016.2.1 отключение автоматического импорта с изменением Maven home directoryверсии, которую использует наш стек (3.3.9), исправило проблему для меня.
Уилер
1
Переход maven home directoryот Bundle (Maven 3)пути к тому месту, где установлен мой maven, .../maven/3.6.1/libexecсработал для меня
Марсело Ксавьер
37

При импорте проекта выберите pom.xmlвместо каталога проекта. Он должен работать.

претенциозность
источник
1
когда-нибудь нажмите на опцию «Reimport all maven projects» в окне Maven Projects
vikramvi
1
Возможно, это самое элегантное, чистое решение (и оно немного неуклюже, если вы не догадаетесь, что это не поможет)
matanster
Работаю и со мной, с IntelliJ Community Edition 2019.3.4. Спасибо за такое простое решение. :)
асимметрияФан
22

Попробуйте повторно импортировать проект из панели Maven Projects в IntelliJ IDEA. Он должен загрузить и настроить все зависимости, определенные в вашем pom.xmlавтоматически.

Если по какой-то причине загрузка не работает из IDEA, попробуйте mvn installиз командной строки и посмотрите, можно ли получить зависимости.

Конечно, все необходимые зависимости и любые пользовательские репозитории должны быть определены непосредственно в pom.xmlфайле.

CrazyCoder
источник
14

Для IntelliJ 2016-2.4 (и я полагаю, что другие новые версии):

Вид> Инструменты Windows> Проекты Maven

На недавно открытой панели инструментов выберите Maven settings (значок набора инструментов).

Когда откроется этот экран, разверните меню Maven и нажмите «Импорт».

Здесь нажмите «Импортировать проекты Maven автоматически». Также убедитесь, что опция «JDK for Importer» соответствует версии JDK, которую вы собираетесь использовать.

Нажмите ОК. Теперь перейдите к красной зависимости в вашем pom.xml, выберите красную лампочку и нажмите «Обновить индексы Maven».

Пол Бэк
источник
1
выбор правильного JDK для импортера помог мне. Мне также пришлось запустить mvn idea: чистая идея: идея закрыть последние выпуски.
Винсент Ф.
9

Что помогло мне:

Navigage: Настройки | Сборка, выполнение, развертывание | специалист

Укажите «Maven home directory» - место, где вы установили Maven

Анатолий Степанюк
источник
7

Если некоторые модули maven не компилируются, проверьте, находится ли их файл pom.xml в списке «игнорируемых файлов». В IntelliJ goto

настройки -> настройки проекта -> maven -> игнорируемые файлы

и проверьте, игнорируется ли связанный файл pom.xml.

Ты делаешь
источник
5

Откройте IntelliJ Idea, выберите «Файл»> «Другие настройки»> «Настройки по умолчанию»> «Maven» («Настройки»)> «Импорт» или «| Preferences > Maven > Importing

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

Нажмите Включить авто-импорт в консоли.

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

Прашант Самс
источник
4

Когда вы создаете новый проект, вам просто нужно выбрать опцию:

...
Импорт проекта из внешней модели
Создание структуры проекта IDEA поверх существующей внешней модели (Eclipse, Maven ...)
...

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

Маркус Кутзее
источник
Согласовано. Почти наверняка ОП просто неправильно импортировал проект.
'51
4

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

Например, если мой проект

hibernate
  src/main
  src/test

три пути могут быть импортированы как верхние узлы:

hibernate
src/main
src/test

Если это так, зависимости кажутся правильными, но они не будут использоваться, пока вы не удалите лишние пути (в данном случае src/mainи src/test). Как только вы это сделаете, обновите и нажмите Build> Rebuild Project. ИДЕЯ подберет зависимости.

Признаком этой проблемы является то, что IDEA предупреждает вас о дублированном пути, когда вы вручную проверяете библиотеку (второй снимок экрана в вопросе).

Есть несколько способов перечитать зависимости в случае необходимости. Если вы перейдете на вкладку «Проекты Maven», в левом верхнем углу вкладки появится значок «Импортировать все проекты Maven». Если вы подозреваете, что IDEA запуталась, вы можете нажать File> Invalidate Cache.

Яно
источник
3

Зайдите в структуру вашего проекта, в разделе «Настройки проекта», «Модули» выберите таблицу зависимостей. Для каждой зависимости измените область действия с «Тест» на «Компиляция».

Бутон
источник
3

Реимпортируйте проект. Если вы устанавливаете плагин Maven, вы можете использовать это.

Щелкните правой кнопкой мыши по проекту -> Maven -> Reimport

Дамит Ганегода
источник
3

Сначала проверьте путь, указанный для файла настроек пользователя: в Настройках -> Построение, Выполнение, Разработка -> Инструменты сборки -> Maven . Поле должно иметь путь к файлу settings.xml вашего maven. Также в файле settings.xml должен быть указан правильный путь к удаленному хранилищу.

amol13
источник
Это сработало для меня, в файле settings.xml запись для тега <url>, вложенная в тег <mirror>, устарела. Я посоветовался с моими коллегами, чтобы получить обновленную стоимость записи. Я сделал изменение в ~ / .m2 / settings.xml, закрыл intelliJ и запустил его снова. При перезапуске, ничего не делая, красные подчеркивания, появляющиеся в виде maven, исчезли. Как ни странно, большинство корневых зависимостей, которые были выделены, всегда присутствовали в записи «Внешние библиотеки» представления «Проект» как до, так и после того, как я выполнил это исправление.
Стив Т
3

У меня была похожая проблема, в моем случае я использую обычай, settings.xmlкоторый не был выбран из IntelliJ.

Решение:
File > Settings > Build, Execution, Deployment > Maven: User settings file (выберите здесь мои пользовательские settings.xml).

Petre
источник
3

У меня возникла та же проблема, и я попробовал все ответы, упомянутые здесь, но ни один не помог.

Простое решение - перейти в папку вашего проекта, удалить все файлы .idea и .iml и перезапустить IntelliJ ide. Оно работает. Не нужно ничего делать с настройками.

Яшасви Н.П.
источник
2

Я столкнулся с проблемой, что некоторые зависимости не могут быть решены в IntelliJ 2016.3.X. Это можно исправить, изменив Maven home directoryв> Настройки> Построение, Выполнение, Развертывание> Инструменты сборки> Maven с Bundled (Maven 3)на /usr/share/maven.

После этого все зависимости были разрешены, как и в предыдущих версиях IntelliJ.

Йоханнес Штадлер
источник
2

Maven - Reimport не работает для меня. У меня есть проект Spring в STS (Eclipse), и мое решение состоит в том, чтобы импортировать проект в IDEA следующим образом:

1) Файл - Новый - Проект из существующих источников ... - выберите каталог - выберите Eclipse.
2) Установите в настройках автоимпорта Maven значение true.
3) Затем щелкните правой кнопкой мыши в pom.xml и выберите «Добавить как проект Maven».

После этого он импортировал все.

Светлана Ониш
источник
2

У меня была похожая проблема с моим macbook, я просто внес небольшое изменение, pom.xmlи он начал загружать все зависимости:

Более ранние зависимости были написаны, как показано ниже для моей машины Windows:

<dependencies>
 <dependency>
  <groupId>javax.mail</groupId>
  <artifactId>mail</artifactId>
  <version>1.4</version>
</dependency>
</dependencies>

Я просто удалил <dependencies>и </dependencies>тег , и он начал загрузку всех зависимостей:

<dependency>
  <groupId>javax.mail</groupId>
  <artifactId>mail</artifactId>
  <version>1.4</version>
</dependency>

Я не уверен, что это сработает у вас или нет .. но у меня сработало нормально.

Спасибо

Амит Джоши
источник
1

Если в правом нижнем углу написано «2 процесса запущены ...» или что-то подобное, возможно, вам просто нужно подождать, пока это не закончится, так как загрузка всех банок может занять некоторое время.

djechlin
источник
1

Я решил эту проблему, обновив файл settings.xml с помощью правильной конфигурации зеркала. Кажется, intellij будет пытаться загружать метаданные из хранилища каждый раз, когда импортируется модуль maven.

Абель Жан
источник
1

Угоняю немного, чтобы добавить, что в итоге сработало для меня:

Перейдите на Maven Projectsбоковую панель справа от IDE и убедитесь, что ваши зависимости правильно указаны в вашем модуле. Предполагая, что это так, просто попросите IDEA выполнить повторный импорт (первая кнопка вверху выглядит как две синие стрелки, образующие круг против часовой стрелки).

Как только я сделал это, и позволил IDEA перезагрузить проект для меня, все мои зависимости были волшебным образом поняты.

Для справки: это было с IDEA 13.1.2

Sunspar
источник
1

Я столкнулся с той же самой проблемой и попробовал все предложенное, которое не решало проблему, я использовал версию 13.1.3 Intellij

Наконец, потратив более пары часов, пытаясь это исправить, я решил попробовать обновленную версию и открыл проект в версии 14.1.4, который в конечном итоге решил проблему. Я бы посчитал это вероятной ошибкой в ​​предыдущей версии.

Надеюсь, это поможет!

sjaiswal
источник
1

Я смог решить эту проблему, удалив ненужные модули из Настройки проекта -> Список модулей .

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

Оказывается, эти дополнительные модули были созданы IntelliJ IDEA автоматически, когда я создал проект IntelliJ путем импорта из папки проекта (вместо открытия pom.xml). Затем, после объявления проекта как проекта Maven, были созданы надлежащие модули, и существующие модули конфликтовали с ними. Также возможно исключить эти модули при создании проекта.

Elyor
источник
1

Удаление папки .idea из каталога проекта, а затем повторный импорт проекта как проекта Maven - вот что мне помогло.

Янак Мина
источник
1

В моем случае один из модулей по какой-то причине был проигнорирован. Чтобы решить эту проблему: щелкните правой кнопкой мыши проблемный модуль и выберите «Отклонить проекты».

игнорировать пример проекта

KernelMode
источник
1

В моем случае путь для JAVA, используемый MAVEN, не был установлен как JAVA_HOME, как настроено на машине. Следовательно, он даже не пытался загрузить зависимости. Шаги, которые я следовал, которые решили эту проблему,

  1. Проверен путь JAVA, Настройки >> Сборка >> Инструменты сборки >> Импорт >> JDK для импортера . Указал это на JAVA_HOME.

  2. mvn clean install -U

    Используемая выше команда для принудительной загрузки зависимостей.

  3. Ре импортированные проекты Maven

Аканша Шарма
источник
0

Если ничего не помогает, проверьте, действительно ли файл jar в вашем локальном репозитории .m2 действителен и не поврежден. В моем случае файл был загружен не полностью.

Маркус Бартлен
источник
0

В maven зависимости были включены для меня, когда я удалил раздел dependencyManagement xml и просто имел зависимости прямо в разделе проекта

конек
источник
0

Проблема заключается в том, что, несмотря на перечисление ваших зависимостей в pom.xml, IntelliJ IDEA не перестраивает эти зависимости при запуске вашего проекта.

Что сработало для меня это:

Перейдите в «Выполнить» -> «Редактировать конфигурации ...», найдите свое приложение, убедитесь, что раздел «Перед запуском:» развернут, нажмите зеленый знак плюс и выберите «Построить проект».

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

Майк Накис
источник
0

я смог исправить мой, добавив эти строки кода после тега сборки в файле pom.xml, я сравнил его с моим текущим проектом и обнаружил, что в этом разница, теперь все хорошо.

<repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>
ChibuezePaul ISoft
источник