Імпортуйте залежності Maven в IntelliJ IDEA


208

У мене невелике запитання щодо IntelliJ IDEA 11. Я щойно імпортував проект із підривної роботи - його проект Maven. Але в мене є проблема в залежності від бібліотеки Maven, так що я не можу автоматично включати всі залежності maven - IDEA показує помилки залежності лише тоді, коли я відкриваю цей клас / ось що я отримую тут:

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

Тож я хочу, щоб усі залежності додавалися автоматично - це можливо чи потрібно мені пройти всі файли класів, щоб виявити та додати основні залежності ?!

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

але я думаю, що логічно це не буде включати і перевіряти нові залежності вперед ?!


9
Він завантажує всі залежності, але, схоже, не додає їх до classpath ...
Заур Гулієв,

3
і ще одна проблема полягає в тому, що intelliJ показує мені червоні підкреслені помилки лише тоді, коли я відкриваю файл java ...
Заур Гулієв

4
Один з випадків, коли ви отримуєте цю червону лінію, - якщо у вас є залежність SNAPSHOT від класифікатора, де існує новіша версія залежності без класифікатора. Це абсолютно законно в Maven, але IntelliJ плутається, намагаючись розробити шлях до фізичного файлу у вашому локальному сховищі Maven.
RCross

4
FYI це все ще може статися в 15.0.2. Щойно сталося зі мною. Довелося підірвати мій файл .iml та папку .idea та повторно імпортувати. Неймовірно розчарувавшись, ми витратили 2 години на боротьбу з нею, і врешті-решт втратили всі мої ретельно налаштовані конфігурації запуску.
Кевін Паулі

3
@KevinPauli не потрібно видаляти файли проектів IDEA для цього, ви можете просто "Повторно імпортувати всі проекти Maven" на вкладці "Maven Projects" для вручного повторного імпорту.
Заур Гулієв

Відповіді:


282

IntelliJ повинен завантажувати та додавати всі ваші залежності на класний шлях проекту до тих пір, поки ваш POM сумісний і всі залежності доступні.

При імпорті проектів Maven в IntelliJ зазвичай з'являється інформаційне вікно із запитом, чи потрібно налаштувати автоматичний імпорт для Maven-проектів. Це означає, що якщо ви внесете якісь зміни до свого POM, ці зміни завантажуватимуться автоматично.

Ви можете ввімкнути таку функцію у меню Файл> Налаштування> Maven> Імпорт, там встановлено прапорець "Імпортувати проекти Maven автоматично".

Якщо це не допоможе, я б запропонував зробити повне очищення та почати заново:

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

Оновлення IntelliJ 2016 :

Налаштування " Імпорт Maven Projects" автоматично переміщено в " Створення, виконання", "Розгортання"> "Інструменти збирання"> "Maven"> "Імпорт" у ваших налаштуваннях IntelliJ.


тож ваше рішення полягало в тому, щоб позначити залежності як експортовані? це дивно! Я багато використовую IntelliJ та Maven, і жоден з моїх проектів (деякі з них є багатопроектними) не ввімкнув функцію експорту ... це Community Edition чи Ultimate?
Алонсо Домінгуес

1
Його Ultimate Edition, але проект, який я імпортував, був побудований на Eclipse - так що .classpath був включений там, але IntelliJ використовує .iml - Тому я вважаю, що логічно включити ці лібри вперше, якщо цього проекту не було .iml файл до ..?!
Заур Гулієв

1
о, добре - ви намагалися імпортувати його як проект Maven, а не Eclipse? Я звик не перевіряти файли, пов'язані з IDE, у своїх сховищах джерел під час роботи з проектами Maven: якщо це проект Maven, то правила Maven
Alonso Dominguez

2
Ви можете ввімкнути автоматичний імпорт у налаштуваннях / налаштуваннях. Відкрийте налаштування / налаштування та знайдіть «Імпортувати проекти Maven автоматично». це в розділі Build, Execution, Deployment> Інструменти збирання> Maven> Імпорт
Seyed Jalal Hosseini

2
@JustinBlank не здивований цим, враховуючи, що це відповідь з 2012 року. Налаштування все ще є, вони просто були переміщені кудись ще (відповідь оновлена).
Алонсо Домінгуес

66

Виправити до IntelliJ 14

Файл [меню] -> Налаштування -> maven -> імпорт та зніміть прапорець "використовувати maven3 для імпорту проекту"

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

Виправити IntelliJ 15+

Знову зіткнулися з цим, на цей раз IntelliJ 15, у якого більше немає можливості використовувати "maven3 для імпорту". Причина полягала в тому, що іноді IntelliJ «не розбирає правильних залежностей правильно», і якщо він не може розібрати одну з них правильно , мабуть , він відмовляється від усіх . Ви можете дізнатись, чи це так, відкривши вікно інструменту проектів Maven (Меню Вид -> Інструмент Windows -> Maven Projects). Потім розгорніть один із своїх Maven проектів та його залежностей. Якщо всі залежності підкреслені червоним кольором, "Х'юстон, у нас проблема". введіть тут опис зображення

Насправді ви можете побачити справжній збій, подумавши над самою назвою проекту.

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

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

Здається, у цьому випадку я мав справу з баночкою, яка не мала асоційованого файлу пом (у нашому Maven nexus repo, а також у моєму локальному сховищі). Якщо це також ваша проблема, "нагальна робота: якщо вам фактично не потрібно використовувати класи з цієї jar у власному коді (наприклад, лише залежність від транзитивного Maven), ви можете фактично піти, коментуючи це з пом. (тимчасово), Maven проект перезавантажує, а потім відмежує його. Якимось чином після цього IntelliJ "запам'ятовує" свої старі робочі залежності. Додавання Maven tranitive виключити тимчасово може також зробити це, якщо ви стикаєтесь з ним з перехідного ланцюга залежностей. "

Інша річ, яка може допомогти, - це використовувати "більш нову версію" Maven, ніж пакетна 3.0.5. Для того, щоб налаштувати його на використання за замовчуванням, закрийте всі вікна Intellij, потім відкрийте налаштування -> побудувати, виконати та розгорнути -> інструменти побудови -> maven та змінити домашній каталог maven, він повинен сказати "За замовчуванням проект "вгорі, коли ви коригуєте це, хоча ви можете налаштувати його і для певного проекту, доки ви" повторно імпортуєте "після коригування.

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

Видалення папок кеша Intellij (windows: HOMEPATH /. {IntellijIdea, IdeaC} XXX linux ~ / .IdeaIC15) та / або видалення та перевстановлення самого IntelliJ. Це також можна зробити, перейшовши у меню Файл [меню] -> Invalidate Caches / Restart.... Клацніть invalidate and restart. Це дозволить переробити весь ваш проект і вирішити багато важко відстежувати проблеми з IntelliJ.


2
Як не дивно, майже кожен інший пост радить перевірити параметр "Використовувати Maven3 для імпорту проекту", щоб вирішити цю проблему, а фактично знявши прапорець, вона вирішила проблему для мене. Чому? Не знаю. Дякую!
janhink

3
У v14 ultimate я вибрав зовнішню Maven і все повернулося до роботи.
АлікЕльзін-кілака

@ AlikElzin-kilaka Зміна домашнього довідника Maven на зовнішній будинок Maven дуже допомагає. Після того як я оновив 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працював для мене
Marcelo Xavier

37

Під час імпорту проекту виберіть pom.xmlзамість каталогу проекту. Це має працювати.


1
колись натисніть на опцію «Повторно імпортувати всі проекти Maven» під вікном Maven Projects
vikramvi

1
Можливо, це найелегантніше, чисте рішення (і трохи незграбний інтеліг не допомагає вам здогадатися про це)
matanster

Працює і для мене, з IntelliJ Community Edition 2019.3.4. Дякую за таке просте рішення. :)
asymmetryFan

22

Спробуйте повторно імпортувати проект із панелі проектів Maven в IntelliJ IDEA. Він повинен автоматично завантажувати та налаштовувати всі залежності, визначені вашим pom.xml.

Якщо завантаження не працює з IDEA з якихось причин, спробуйте mvn installз командного рядка і подивіться, чи можна отримати залежності.

Звичайно, всі необхідні залежності та будь-які власні сховища повинні бути визначені безпосередньо у pom.xmlфайлі.


14

Для IntelliJ 2016-2.4 (і я вважаю, що інші нові версії):

Перегляд> Інструмент Windows> Maven Projects

На щойно розкритій панелі інструментів виберіть Параметри Maven (значок набору інструментів).

Коли цей екран відкриється, розгорніть меню Maven і натисніть "Імпорт"

Тут натисніть «Імпортувати проекти Maven автоматично». Також переконайтесь, що параметр "JDK для імпортера" відповідає версії JDK, яку ви хочете використовувати.

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


1
вибір правильного JDK для імпортера мені допоміг. Мені також довелося запустити mvn idea: clean idea: ідея закрити останні випуски.
Вінсент F

9

Що мені допомогло:

Навігація: налаштування | Збірка, виконання, розгортання | Мейвен

Вкажіть "Домашній каталог Maven" - місце, де ви встановили maven


7

Якщо певні модулі Maven не збираються, перевірте, чи є pom.xml у списку "ігноровані файли". В IntelliJ goto

налаштування -> налаштування проекту -> maven -> ігноровані файли

і перевірте, чи пов'язані ігнорування pom.xml.


5

Відкрийте IntelliJ Idea, перейдіть у меню Файл> Інші настройки> Установки за замовчуванням ...> Maven (Налаштування)> Імпорт або | Preferences > Maven > Importing

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

Натисніть на Enable Auto-імпорт в консолі.

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


4

Створюючи новий проект, потрібно просто вибрати варіант:

...
Імпорт проекту з зовнішньої моделі
Створіть структуру проекту IDEA на основі існуючої зовнішньої моделі (Eclipse, Maven ...)
...

Ви знайдете це досить прямо звідти.
І у вашому випадку ви можете закрити свій проект і просто створити новий. Виберіть довідник свого проекту, який буде заміняти його, зробивши його проектом Maven.


Домовились. Майже певно, що ОП просто неправильно імпортувала проект.
kaqqao

4

Імпорт залежностей Maven може не працювати, якщо ви імпортуєте один і той же шлях кілька разів. Це може статися автоматично після імпорту існуючого проекту Maven. Я не можу зрозуміти, чому це відбувається, тому я схильний думати, що це помилка.

Наприклад, якщо мій проект є

hibernate
  src/main
  src/test

три шляхи можуть бути імпортовані як верхні вузли:

hibernate
src/main
src/test

У такому випадку залежності здаються правильними, але вони не використовуватимуться, поки ви не видалите зайві шляхи (у цьому випадку src/mainта src/test). Після цього оновіть і натисніть «Створити»> «Відновити проект». IDEA підбере залежності.

Симптомом цієї проблеми є те, що IDEA попереджає вас про дублюваний шлях, коли ви вручну перевіряєте бібліотеку (другий скріншот у запитанні).

Існує кілька способів перечитувати залежності, якщо вам це потрібно. Якщо ви перейдете на вкладку «Maven Projects», у верхньому лівому куті вказівника з’являється значок «Reimport All Maven Projects». Якщо ви підозрюєте, що IDEA заплутався, ви можете натиснути на Файл> Недійсний кеш.


3

Увійдіть у структуру проекту, в розділі Налаштування проекту та Модулі виберіть таблицю залежностей. Для кожної залежності змініть область застосування з "Тест" на "Компілювати".


3

Повторно імпортуйте проект. Якщо ви встановите плагін Maven, ви можете скористатися цим.

Клацніть правою кнопкою миші на проект -> Maven -> Reimport


3

Перший шлях перевірки Зазначений для файлу налаштувань користувача: у Налаштуваннях -> Збір, виконання, розробка -> Інструменти побудови -> Maven . Поле має мати шлях до settings.xml вашої Maven. Також settings.xml повинен мати правильний шлях до віддаленого сховища.


Це працювало для мене, у файлі settings.xml запис тегу <url>, вкладений у тег <mirror>, був застарілим. Я поспілкувався з колегами, щоб отримати оновлене вхідне значення. Я змінив ~ / .m2 / settings.xml, закрив intelliJ і запустив його знову. Після перезапуску, не роблячи нічого іншого, червоні підкреслення, що з’явились у виду Maven, вже не було. Як не дивно, більшість корінних залежностей, які були висвітлені, завжди були присутніми у записі "Зовнішні бібліотеки" подання Проекту, як до, так і після того, як я виконав це виправлення.
Стів Т

3

У мене була подібна проблема, у моєму випадку я використовую звичай, settings.xmlякий не було вибрано у IntelliJ.

Рішення:
File > Settings > Build, Execution, Deployment > Maven: User settings file (вибрав тут мої власні налаштування.xml).


3

У мене було те саме питання і спробували всі відповіді, згадані тут, жодна не працювала.

Просте рішення - перейти до папки проекту та видалити всі файли .idea та .iml та перезапустити ідею IntelliJ. Це працює. Не потрібно нічого робити з налаштуваннями.


2

Я зіткнувся з проблемою, що деякі залежності не вдалося вирішити в IntelliJ 2016.3.X. Це можна виправити, змінивши Maven home directoryв Налаштуваннях> Збірка, Виконання, Розгортання> Інструменти збирання> Maven from Bundled (Maven 3)to /usr/share/maven.

Після цього всі додаткові залежності були вирішені, як і в попередніх версіях IntelliJ.


2

Мейвен - Реймпорт не працював для мене. У мене є проект Spring в STS (Eclipse), і моє рішення полягає в імпорті проекту до IDEA так:

1) Файл - Новий - Проект із існуючих джерел ... - Виберіть каталог - виберіть Eclipse.
2) Встановіть для автоімпорту Maven значення true у налаштуваннях.
3) Потім клацніть правою кнопкою миші в pom.xml та оберіть Додати як Maven Project.

Після цього все імпортувало.


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 запущені процеси ..." або подібне, можливо, вам доведеться просто почекати, коли закінчиться, оскільки для завантаження всіх банок може знадобитися час.


1

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


1

Трохи викрадаючи, щоб додати те, що закінчилося для мене:

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

Коли я це зробив, і дозволю IDEA перезавантажити проект для мене, всі мої залежності були магічно зрозумілими.

Для довідки: це було с IDEA 13.1.2


1

Я зіткнувся з тією ж проблемою і спробував усе, що запропоновано, що не вирішило проблему, я використовував Intellij версії 13.1.3

Нарешті, витративши більше двох годин на те, щоб виправити це, я вирішив спробувати оновлену версію і відкрив проект у версії 14.1.4, яка врешті вирішила проблему. Я вважав би це можливим помилкою в попередній версії.

Я сподіваюся, що це допомагає!


1

Мені вдалося вирішити це, видаливши непотрібні модулі зі списку Налаштування проекту -> Модулі .

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

Виявляється, ці додаткові модулі були створені автоматично IntelliJ IDEA, коли я створив проект IntelliJ шляхом імпорту з папки проекту (замість відкриття pom.xml). Потім, після оголошення проекту як проекту Maven, були створені належні модулі, а існуючі модулі суперечили їм. Можливо також виключити ці модулі під час створення проекту.


1

Видалити папку .idea з каталогу проектів і повторно імпортувати проект як проект Maven - це те, що для мене працювало.


1

У моєму випадку один із модулів чомусь був проігнорований. Для вирішення цього питання: Клацніть правою кнопкою миші проблемний модуль і виберіть "Unignore Projects".

приклад проекту ungnore


1

У моєму випадку шлях для JAVA, який використовується MAVEN, не був встановлений як JAVA_HOME, як налаштовано на машині. Отже, навіть не намагалися завантажити залежність. Кроки, які я дотримувався, які вирішили цю проблему,

  1. Перевірено на шлях JAVA, Налаштування >> Збірка >> Інструменти збирання >> Імпорт >> JDK для імпортера . Вказав на JAVA_HOME.

  2. mvn clean install -U

    Команда, що використовується вище, примушує завантажити залежність.

  3. Знову імпортували Maven проекти


0

Якщо все інше не вдається, перевірте, чи файл jar у вашому локальному сховищі .m2 дійсно дійсний та чи не пошкоджений. У моєму випадку файл не був завантажений повністю.


0

У Maven залежність включилася для мене, коли я видалив xml розділ залежністьManagement і просто мав залежності безпосередньо під секцією проекту


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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.