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

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

IntelliJ должен загрузить и добавить все ваши зависимости в путь к классам проекта автоматически, если ваш POM соответствует требованиям и все зависимости доступны.
При импорте проектов Maven в IntelliJ обычно появляется информационное окно с вопросом, хотите ли вы настроить автоматический импорт для проектов Maven. Это означает, что если вы внесете какие-либо изменения в свой POM, эти изменения будут загружены автоматически.
Вы можете включить эту функцию, выбрав «Файл»> «Настройки»> «Maven> Импорт», там есть флажок «Импортировать проекты Maven автоматически».
Если это не поможет, я бы предложил провести полную очистку и начать заново:
- Закройте окно проекта (и IntelliJ) и удалите все *.iml файлы и все .idea папки (должно быть по одному на каждый модуль).
- Запускаем mvn clean install из командной строки
- Повторно импортируйте проект в IntelliJ и обратите внимание, когда он просит вас включить автоматический импорт.
Обновление IntelliJ 2016 :
Параметр « Импортировать проекты Maven автоматически » был перемещен в « Сборка, выполнение, развертывание»> «Инструменты сборки»> «Maven»> «Импорт» в ваших настройках IntelliJ.

Исправить до IntelliJ 14
Файл [меню] -> Настройки -> maven -> импорт и снимите флажок «использовать maven3 для импорта проекта»
ref: http://youtrack.jetbrains.com/issue/IDEA-98425 (у которого также может быть несколько других идей)
Исправить IntelliJ 15+
Повторите это снова, на этот раз с IntelliJ 15, в котором больше нет доступной опции «использовать maven3 для импорта». Причина заключалась в том, что иногда IntelliJ «неправильно разбирает зависимости maven», и если он не может правильно проанализировать одну из них, он , по-видимому , отказывается от всех из них. Вы можете узнать, так ли это, открыв окно инструментов проектов maven (меню «Вид» -> «Окна инструментов» -> «Проекты Maven»). Затем разверните один из своих проектов maven и его зависимости. Если все зависимости подчеркнуты красным, «Хьюстон, у нас проблема». 
Вы действительно можете увидеть реальный провал, наведя курсор мыши на само название проекта.

В моем случае было сказано «Проблемы: нет версий для XXX» или «Не удалось прочитать дескриптор для артефакта org.xy.z», ссылка: https://youtrack.jetbrains.com/issue/IDEA-128846 и https: // youtrack.jetbrains.com/issue/IDEA-152555
Кажется, в этом случае я имел дело с банкой, у которой не было связанного файла pom (в нашем репозитории maven nexus, а также в моем локальном репозитории). Если это также ваша проблема, «urrent работа: если вам на самом деле не нужно использовать классы из этого jar-файла в вашем собственном коде (например, только транзитивная зависимость maven), вы действительно можете уйти, прокомментировав это из pom. (временно) перезагрузите проект maven, а затем раскомментируйте его. Как-то после этого IntelliJ «запоминает» свои старые рабочие зависимости. Временное добавление maven transitive exclude также может сделать это, если вы столкнетесь с ним из транзитивной цепочки зависимостей. «
Еще одна вещь, которая может помочь, — это использовать «более новую версию» maven, чем поставляемая в комплекте 3.0.5. Чтобы настроить его на использование по умолчанию, закройте все окна intellij, затем откройте настройки -> сборка, выполнение и развертывание -> инструменты сборки -> maven и измените домашний каталог maven, он должен сказать «По умолчанию project »вверху, когда вы настраиваете это, хотя вы также можете настроить его для конкретного проекта, если вы« повторно импортируете »его после настройки.
Очистить кеши
Удаление ваших папок кеша intellij (windows: HOMEPATH /.
/ .IdeaIC15) и / или удаление и переустановка самого IntelliJ. Это также можно сделать, перейдя в Файл [меню] -> Invalidate Caches / Restart. . Щелкните invalidate and restart . Это переиндексирует весь ваш проект и решит многие проблемы, которые трудно отследить с помощью IntelliJ.
Импортировать зависимости Maven в IntelliJ IDEA
У меня небольшой вопрос по IntelliJ IDEA 11. Я только что импортировал проект из Subversion — это проект maven. Но у меня проблема с зависимостями библиотеки maven, поэтому я не могу автоматически включить все зависимости maven — IDEA показывает ошибки зависимости только тогда, когда я открываю этот класс / Вот что я получаю здесь:

Поэтому я хочу, чтобы все зависимости добавлялись автоматически — возможно ли это, или мне нужно просмотреть все файлы классов, чтобы определить и добавить зависимости maven ?!
ОБНОВЛЕНИЕ: после внесения некоторых изменений я нашел, как каким-то образом решить мою проблему. Вот что я сделал:
Но я думаю, что логически он не будет включать и проверять новые зависимости вперед?! . Есть ли для этого область настроек в intelliJ — автоматический экспорт зависимостей в путь к классам ?!
9 ответов
IntelliJ должен автоматически загружать и добавлять все ваши зависимости в путь к классам проекта, если ваше POM совместимо и все зависимости доступны.
При импорте проектов Maven в IntelliJ обычно появляется информационное окно с вопросом, хотите ли вы настроить Автоимпорт для проектов Maven. Это означает, что если вы внесете какие-либо изменения в свой POM, эти изменения будут загружены автоматически.
Вы можете включить эту функцию, выбрав «Файл»> «Настройки»> «Maven> Импорт», там есть флажок «Импортировать проекты Maven автоматически».
Если это не поможет, я бы предложил провести полную очистку и начать заново:
- Закройте окно проекта (и IntelliJ) и удалите все файлы *.iml и все папки .idea (по одному на каждый модуль)
- Запустите mvn clean install из командной строки
- Повторно импортируйте проект в IntelliJ и обратите внимание, когда он просит вас включить автоматический импорт.
Обновление IntelliJ 2016 :
Параметр Импортировать проекты Maven автоматически был перемещен в Сборка, выполнение, развертывание> Инструменты сборки> Maven> Импорт в ваших настройках IntelliJ.
Откройте IntelliJ Idea , перейдите к Файл> Другие настройки> Настройки по умолчанию . > Maven (Настройки)> Импорт или | Preferences > Maven > Importing

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

У меня была такая же проблема, и я попробовал все ответы, упомянутые здесь, ни один из них не работал.
Простое решение — перейти в папку проекта, удалить все файлы .idea и .iml и перезапустить IntelliJ ide. Оно работает. Не нужно ничего делать с настройками.
Если определенные модули maven не компилируются, проверьте, находится ли их pom.xml в списке «игнорируемых файлов». В IntelliJ goto
настройки -> настройки проекта -> maven -> игнорируемые файлы
И проверьте, игнорируется ли связанный pom.xml.
Что помогло мне:
Навигация: Настройки | Сборка, выполнение, развертывание | Maven
Укажите «Домашний каталог Maven» — место, в которое вы установили maven.
Для IntelliJ 2016-2.4 (и я считаю, что другие новые версии):
Просмотр> Окна инструментов> Проекты Maven
На недавно появившейся панели инструментов выберите настройки Maven (значок набора инструментов).
Когда откроется этот экран, разверните меню Maven и нажмите «Импорт».
Здесь нажмите «Импортировать проекты Maven автоматически». Также убедитесь, что параметр «JDK for Importer» соответствует версии JDK, которую вы собираетесь использовать.
Щелкните ОК. Теперь перейдите к красной зависимости в вашем pom.xml, выберите красную лампочку и нажмите «Обновить индексы Maven».
Попробуйте повторно импортировать проект из панели Maven Projects в IntelliJ IDEA. Он должен автоматически загрузить и настроить все зависимости, определенные в вашем pom.xml .
Если по какой-то причине загрузка из IDEA не работает, попробуйте mvn install из командной строки и посмотрите, можно ли получить зависимости.
Конечно, все необходимые зависимости и любые настраиваемые репозитории должны быть определены непосредственно в файле pom.xml .
При импорте проекта выберите pom.xml вместо каталога проекта. Он должен работать.
Исправить до IntelliJ 14
Файл [меню] -> Настройки -> maven -> импорт и снимите флажок «использовать maven3 для импорта проекта»
Исправить 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, а также в моем локальном репозитории). Если это также ваша проблема, «urrent работа: если вам на самом деле не нужно использовать классы из этой банки в вашем собственном коде (например, только транзитивная зависимость maven), вы действительно можете уйти, прокомментировав это из pom (временно) перезагрузите проект maven, а затем раскомментируйте его. Каким-то образом после этого IntelliJ «запоминает» свои старые рабочие зависимости. Временное добавление maven transitive exclude также может сделать это, если вы столкнетесь с ним из транзитивной цепочки зависимостей. «
Еще одна вещь, которая может помочь, — это использовать «более новую версию» maven, чем поставляемая в комплекте 3.0.5. Чтобы настроить его на использование по умолчанию, закройте все окна intellij, затем откройте настройки -> сборка, выполнение и развертывание -> инструменты сборки -> maven и измените домашний каталог maven, он должен сказать «По умолчанию project »вверху, когда вы настраиваете это, хотя вы также можете настроить его для конкретного проекта, если вы« повторно импортируете »его после настройки.
Очистить кеши
Удаление ваших папок кеша intellij (windows: HOMEPATH /.
/ .IdeaIC15) и / или удаление и переустановка самого IntelliJ. Это также можно сделать, перейдя в Файл [меню] -> Invalidate Caches / Restart. . Щелкните invalidate and restart . Это переиндексирует весь ваш проект и решит многие проблемы, которые трудно отследить с помощью IntelliJ.
Сборка Java-проекта с использованием Maven
Этот урок освещает создание вами простого Java-приложения с использованием Maven.
Что вы создадите
Вы создадите простое приложение и соберете его с помощью Maven.
Что вам потребуется
- Примерно 15 минут свободного времени
- Любимый текстовый редактор или IDE и выше
Как проходить этот урок
Как и большинство уроков по Spring, вы можете начать с нуля и выполнять каждый шаг, либо пропустить базовые шаги, которые вам уже знакомы. В любом случае, вы в конечном итоге получите рабочий код.
Чтобы начать с нуля, перейдите в Настройка проекта.
-
и распакуйте архив с кодом этого урока, либо кнонируйте из репозитория с помощью Git: git clone https://github.com/spring-guides/gs-maven.git
- Перейдите в каталог gs-maven/initial
- Забегая вперед, установите Maven
Когда вы закончите, можете сравнить получившийся результат с образцом в gs-maven/complete .
Настройка проекта
Для начала вам необходимо настроить Java-проект перед тем, как собрать его Maven’ом. Т.к. урок посвящен Maven, сделаем проект максимально простым, насколько это возможно.
Создание структуры каталогов
В выбранном вами каталоге проекта создайте следующую структуру каталогов; к примеру, командой mkdir -p src/main/java/hello для *nix систем:
Внутри src/main/java/hello директории вы можете создать любые Java-классы, какие вы хотите. Для простоты и согласованности с остальной частью урока, Spring рекомендует вам создать два класса: HelloWorld.java и Greeter.java .
Теперь, когда у вас есть проект, который вы можете собрать с Maven, вам нужно установит сам Maven.
Maven можно получить, скачав zip-файл с maven.apache.org/download.cgi. Необходимы только бинарные файлы, так что ищите ссылку на архив с именем apache-maven-version-bin.zip или apache-maven-version-bin.tar.gz.
Распакуйте архив и добавьте путь к каталогу bin в переменную окружения path.
Чтобы протестировать правильность установки Maven, запустите в командной строке:
Если всё было сделано правильно, то вы увидите сообщение примерно такого содержания:
Теперь у вас есть установленный Maven.
Создание простой сборки Maven
Теперь, когда Maven установлен, вам необходимо создать определение Maven-проекта. Maven-проекты определяются как XML-файлы с названием pom.xml. Помимо всего прочего, этот файл определяет имя проекта, версию, а также зависимости от сторонних библиотек.
Создайте файл с названием pom.xml в корневом каталоге проекта и наполните его следующим содержанием:
За исключением дополнительного элемента <packaging> , это простейший из pom.xml файлов, необходимый для сборки Java проекта. Он включает следующие детали конфигурации проекта:
- <modelVersion> — версия POM-модели (всегда 4.0.0)
- <groupId> — группа или организация, к которой принадлежит проект. Чаще всего выражается в виде перевернутого наоборот доменного имени
- <artifactId> — имя, которое будет передано библиотеке экземпляра(artifact) проекта (к примеру, имя его JAR или WAR файла)
- <version> — версия, с которой будет собран проект
- <packaging> — как проект должен быть упакован. По умолчанию, с «jar» упаковывается в JAR-файл, «war» — WAR-файл
На данном этапе мы имеем минимальное, но уже рабочее определение Maven-проекта.
Сборка Java кода
Теперь все готово для сборки проекта Maven’ом. Вы можете выполнить несколько этапов жизненного цикла сборки, включая компиляцию кода, создание библиотеки пакета(такого, как JAR-файл) и установку библиотеки в локальный репозиторий Maven зависимостей.
Попробуйте собрать, выполнив команду, приведенную ниже:
Этим вы запустите Maven, передав ему указание на выполнение задачи compile. Когда он закончит, вы должны найни скомпилированные .class файлы в target/classes директории.
Вряд ли вы захотите распостранять или работать напрямую с .class файлами, поэтому вам полее подойдет выполнение задачи package:
Задача package включает компиляцию вашего Java кода, запуск тестов, а в конце упаковывает в JAR-файл в target директории. Название JAR-файла будет основано на <artifactId> и <version> . К примеру, с минимальным pom.xml(см. выше), JAR-файл будет иметь название gs-maven-initial-0.1.0.jar.
Maven также хранит репозиторий зависимостей на вашей локальной машине(обычно в .m2/repository директории в вашей домашней папке) для быстрого доступа к зависимостям проекта. Если вы хотите добавить JAR-файл вашего проекта в локальный репозиторий, тогда вам необходимо выполнить задачу install :
Задача install включает компиляцию, тестирование, упаковку кода проекта, а затем копирование в локальный репозиторий, тем самым другие проекты смогут ссылаться на него как на зависимость.
Говоря о зависимостях, пришло время объявлять зависимости в Maven сборке.
Объявление зависимостей
Простой «Hello World» пример полностью автономный и не зависит от каких-либо дополнительных библиотек. Однако, большинство приложений зависит от внешних библиотек, с реализацией распостраненного и/или сложного функционала.
К примеру, предположим, что в дополнение к «Hello World!» вы хотите, чтобы приложение печатало текущую дату и время. Вы могли бы использовать функциональность из стандартных(native) Java библиотек, но мы можем сделать это и другими интересными способами, например с помощью Joda Time библиотеки.
Для начала, изменим HelloWorld.java , как показано ниже:
Здесь HelloWorld использует Joda Time LocalTime класс для получения и печати текущего времени.
Если бы вы запустили mvn compile для сборки проекта сейчас, то получили бы ошибку сборки, потому что вы не объявили Joda Time компилируемую зависимость в сборке. Вы можете это исправить, добавив следующие строки в pom.xml(в пределах <project> элемента):
Этот блок XML объявляет список зависимостей проекта. В частности, он объявляет единственную зависимость от Joda Time библиотеки. В <dependency> элементе, зависимость определяется через описание трех вложенных элементов:
- <groupId> — группа или организация, к которой принадлежит зависимость.
- <artifactId> — необходимая библиотека
- <version> — версия необходимой библиотеки
По умолчанию, все зависимости определены как <compile> зависимости. Т.е. они должны быть доступны во время компиляции(а если вы собираете WAR-файл, то в /WEB-INF/lib каталоге). Кроме того, вы можете добавить <scope> элемент, с одним из значений:
- provided — зависимости, которые требуются для компиляции кода проекта, но которые будут доступны во время выполнения кода контейнером(например, Java Servlet API)
- test — зависимости, которые используются для компиляции и запуска тестов, но не требуемые для сборки или выполнения кода проекта
Сейчас, если вы выполните mvn compile или mvn package , Maven должен будет разрешить Joda Time зависимость из Maven Central репозитория и успешно собрать проект.
Здесь полная версия pom.xml :
Поздравляем! Вы создали простой, но эффективный файл сборки Maven для сборки Java проектов.