В этом руководстве, в продолжение темы просмотра зависимостей, мы рассмотрим управление зависимостями в IntelliJ IDEA.
Мы рассмотрим различные способы добавления зависимостей в ваш проект, а также способы добавления, обновления и удаления зависимостей с помощью Package Search.
Добавление зависимостей
Существует несколько способов добавления новых зависимостей в ваш проект.
Из файла сборки с помощью копирования/вставки
Вы наверняка копировали зависимость из репозитория Maven (или другого веб-сайта) и вставляли ее в свой файл сборки.
Например, мы можем скопировать формат Gradle для этой зависимости и вставить его в наш файл build.gradle.
![](https://habrastorage.org/getpro/habr/upload_files/9ed/7d9/5f5/9ed7d95f5f93bd72f0c54bcac2cca917.png)
![](https://habrastorage.org/getpro/habr/upload_files/50e/a75/a3f/50ea75a3f49d0537b0998e287a6be18b.png)
Или, если мы используем Maven, мы можем скопировать формат Maven xml в наш pom.xml.
![](https://habrastorage.org/getpro/habr/upload_files/6f3/777/e99/6f3777e9951d0f051dee560260b9595a.png)
![](https://habrastorage.org/getpro/habr/upload_files/58b/1a4/055/58b1a4055378571f71a61a28a4262552.png)
Знаете ли вы, что если вы скопируете и вставите зависимость Maven XML в файл build.gradle, IntelliJ IDEA автоматически преобразует ее в правильный формат для Gradle?
Из файла сборки с помощью автозавершения кода
Мы также можем добавить зависимости в наш файл сборки, используя автозавершение кода. Например, давайте добавим новую зависимость в наш файл pom.xml.
![](https://habrastorage.org/getpro/habr/upload_files/8c1/fde/ee5/8c1fdeee52b1d4a1d639fbb3dbda35f8.png)
![](https://habrastorage.org/getpro/habr/upload_files/f13/453/08e/f1345308edc1de3c49d17dfdc7c8b8e0.png)
![](https://habrastorage.org/getpro/habr/upload_files/c25/709/e29/c25709e2978ffb03e7ef14e4f596c30e.png)
![](https://habrastorage.org/getpro/habr/upload_files/738/230/013/7382300130c8aeddff5924169a1d50a4.png)
Мы видим, что IntelliJ IDEA автоматически дополняет xml зависимости, и мы можем искать нужную зависимость, в данном примере AssertJ.
При необходимости также будет добавлен номер версии. Поскольку это тестовая зависимость, нам нужно добавить тестовую область видимости, по-прежнему используя автозавершение кода.
![](https://habrastorage.org/getpro/habr/upload_files/16e/733/ab5/16e733ab516d43c12d1a27997e52e6e1.png)
![](https://habrastorage.org/getpro/habr/upload_files/e39/e4f/8cd/e39e4f8cd0100d60f12c664b88fa3c1c.png)
Автозавершение кода работает и в Gradle, как вы можете видеть ниже.
![](https://habrastorage.org/getpro/habr/upload_files/fb1/484/30c/fb148430cb31ee5e56b25022cc9757ec.png)
![](https://habrastorage.org/getpro/habr/upload_files/d2f/00e/0b0/d2f00e0b070780a34f6cec6ef0ebaf11.png)
Из файла сборки с помощью генерации кода
Мы также можем использовать генерацию кода из файла сборки для добавления зависимостей.
В файле сборки pom.xml в проекте Maven вызовите Package Search (поиск пакетов) с помощью ⌘N (в macOS) или Alt+Insert (в Windows и Linux) и в открывшемся меню выберите Add dependency.
Откроется окно инструмента Dependencies (Зависимости).
![](https://habrastorage.org/getpro/habr/upload_files/979/193/1b0/9791931b0c511cda31028de1265f85c7.png)
Обратите внимание: если мы используем Gradle, мы можем сделать то же самое в нашем файле build.gradle.
![](https://habrastorage.org/getpro/habr/upload_files/f69/849/685/f69849685069189d615dab118b038be4.png)
Из окна инструмента Dependencies
В качестве альтернативы мы можем напрямую открыть окно инструмента Dependencies.
Ярлыка для открытия окна инструмента Dependencies не существует, поэтому мы можем использовать Recent Files, ⌘E (на Mac) или Ctrl+E (в Windows/Linux) и ввести «dependencies», чтобы открыть окно инструмента Dependencies.
![](https://habrastorage.org/getpro/habr/upload_files/bbe/c2d/d7f/bbec2dd7f222e551625fdc21c3ec71a5.png)
В качестве альтернативы мы можем открыть его, нажав Quick Launch в левом нижнем углу и выбрав Dependencies.
![](https://habrastorage.org/getpro/habr/upload_files/297/d25/17a/297d2517a0b759d5925689071c140469.png)
В окне инструмента Dependencies мы можем искать зависимость. Например, давайте поищем AssertJ.
![](https://habrastorage.org/getpro/habr/upload_files/ab2/5c8/4e8/ab25c84e8e79067b2824a1d50c8b7a8a.png)
Обратите внимание, что мы можем выбрать область видимости для этой зависимости.
Названия областей видимости зависят от инструмента сборки, с которым вы работаете.
Поскольку это тестовая зависимость, и мы используем Gradle в этом проекте, мы можем установить область видимости на testImplementation.
![](https://habrastorage.org/getpro/habr/upload_files/0f8/995/183/0f899518350221b856ad65f627777afb.png)
Мы также можем выбрать версию, которую хотим использовать.
![](https://habrastorage.org/getpro/habr/upload_files/248/779/185/248779185cffdaa4530b10abd0c0850e.png)
Мы можем сделать то же самое в Maven.
![](https://habrastorage.org/getpro/habr/upload_files/3d4/898/5de/3d48985de92aafdf8158f249388bf740.png)
Обратите внимание, что названия областей видимости для Maven отличаются от Gradle.
В Maven мы можем установить область видимости для тестовой зависимости как test.
![](https://habrastorage.org/getpro/habr/upload_files/362/1fc/021/3621fc0218bda05c07ddc755ac247880.png)
Когда мы нажимаем Add, мы видим, что зависимость добавлена в файл сборки.
![](https://habrastorage.org/getpro/habr/upload_files/bcd/414/a53/bcd414a5385910d5dc8abdcab1eee15a.png)
Если номер версии показан красным цветом, это означает, что IntelliJ IDEA еще не загружала эту библиотеку.
Щелкните Load Maven Changes, чтобы IntelliJ IDEA обновила свои зависимости на основе изменений в файле pom.xml или build.gradle.
Вернитесь в окно инструмента Dependencies и очистите поле поиска, нажав на x с правой стороны. Вы увидите, что зависимости проекта обновлены вашей новой зависимостью.
Далее ищем jackson-databind. Мы видим, что доступно несколько версий.
Поскольку мы выбрали Only stable, в списке отображаются только стабильные версии.
![](https://habrastorage.org/getpro/habr/upload_files/438/19b/b96/43819bb967ff25d77ce3f74e968bc9e1.png)
Если мы снимем флажок с этой опции, мы увидим, что в список версий также входят кандидаты на выпуск.
![](https://habrastorage.org/getpro/habr/upload_files/bca/8bf/b0e/bca8bfb0e6e735dc70879ade8454a405.png)
Для производственного кода мы, вероятно, хотим использовать стабильные версии, поэтому давайте снова установим флажок Only stable.
Если эта опция включена, IntelliJ IDEA исключит все зависимости, не имеющие стабильных версий, и скроет их в списке.
Теперь мы можем выбрать последнюю стабильную версию и добавить ее в наш проект. Давайте также снова загрузим Maven Changes.
Наконец, давайте также добавим новую зависимость для модуля Kotlin.
Давайте переключимся на модуль Kotlin и откроем pom.xml для этого модуля.
Откройте окно Dependencies Tool и найдите Ktor.
![](https://habrastorage.org/getpro/habr/upload_files/781/640/b48/781640b48a94e471c3aa90668b6a5291.png)
Обратите внимание, что некоторые зависимости помечены как Multiplatform (многоплатформенные).
![](https://habrastorage.org/getpro/habr/upload_files/0f1/787/2a7/0f17872a7874c3f3350923d403522e2e.png)
Если мы хотим видеть только многоплатформенные зависимости Kotlin, мы можем установить флажок Kotlin multiplatform, как показано ниже.
![](https://habrastorage.org/getpro/habr/upload_files/813/e9d/4d4/813e9d4d456af6a4e871407b5d70fa61.png)
Когда мы нажимаем Add справа от зависимости Ktor, мы видим, что Ktor добавлен в список зависимостей и в pom.xml для модуля Kotlin.
![](https://habrastorage.org/getpro/habr/upload_files/05c/51b/d5b/05c51bd5bc1b462b94a88872dd4f2e32.png)
Обновление зависимостей
Нам также необходимо будет поддерживать наши зависимости в актуальном состоянии.
Чтобы показать вам, как IntelliJ IDEA может в этом помочь, мы используем в качестве примера этот крайне устаревший проект.
В pom.xml ниже мы видим, что несколько зависимостей отмечены волнистыми линиями под ними.
![](https://habrastorage.org/getpro/habr/upload_files/fa6/6ea/9e4/fa66ea9e4dca0f41f68a9913d9c96bdd.png)
IntelliJ IDEA покажет предложение по обновлению, когда мы наведем указатель мыши на зависимость, и мы можем щелкнуть по предложению для обновления зависимостей.
![](https://habrastorage.org/getpro/habr/upload_files/69b/145/fa7/69b145fa786c5c4f93aabc08d7d0921c.png)
В качестве альтернативы мы можем использовать Context Actions (контекстные действия) ⌥⏎ (в macOS) или Alt+Enter (в Windows и Linux) для обновления этих зависимостей.
![](https://habrastorage.org/getpro/habr/upload_files/6f2/b9a/09b/6f2b9a09bbfec6252c66b92ccf4d9271.png)
Мы также можем обновить наши зависимости, используя окно Dependencies tool.
Окно Dependencies tool подскажет нам, есть ли более новая версия зависимости, как мы видим здесь.
![](https://habrastorage.org/getpro/habr/upload_files/60a/ed8/8b3/60aed88b3662d35d4028fd7765eb22b0.png)
Мы можем выбрать версию для обновления, нажав на номер версии в списке.
Обратите внимание, что нам необязательно использовать последнюю версию.
![](https://habrastorage.org/getpro/habr/upload_files/c94/327/1ed/c943271edb04abf2fff49e7bda263339.png)
Мы также можем автоматически обновить зависимость до последней версии, нажав Upgrade для этой конкретной зависимости.
![](https://habrastorage.org/getpro/habr/upload_files/44f/5ff/ea4/44f5ffea4e2599e08fb954f3bcc984dd.png)
Или мы можем даже обновить все наши зависимости сразу, нажав на ссылку Upgrade all.
![](https://habrastorage.org/getpro/habr/upload_files/cc0/42a/117/cc042a117a765d592a0ccf29a60afab3.png)
Удаление зависимостей
Наконец, мы можем удалить зависимости, которые нам больше не нужны. В окне Dependencies tool давайте удалим jackson-databind из модуля Java.
Выберем зависимость, которую хотим удалить (jackson-databind), и на панели сведений о зависимости справа нажимаем кнопку More (три точки) и выбираем Remove.
![](https://habrastorage.org/getpro/habr/upload_files/b61/9f7/666/b619f76660bbc686cfb85c3d2ac05a6e.png)
Мы увидим, что зависимость удалена из pom.xml и списка зависимостей. Чтобы удалить зависимость из всего проекта, выберите All Modules слева.
Резюме и ярлыки
Теперь мы знаем различные способы просмотра зависимостей нашего проекта в IntelliJ IDEA, а также различные фокусы для каждого представления.
Используемые сочетания клавиш IntelliJ IDEA
Вот горячие клавиши IntelliJ IDEA, которые мы использовали.
Имя |
Горячие клавиши macOS |
Горячие клавиши Windows/Linux |
---|---|---|
Открыть/закрыть окно инструментов проекта |
⌘1 |
Alt+1 |
Недавние файлы |
⌘E |
Control+Е |
Вызвать поиск пакетов |
⌘N |
Alt+Insert |
Контекстные действия |
⌥⏎ |
Alt+Ввод |
Ссылки по теме
Комментарии (6)
aleksandy
17.01.2023 07:06+1TL.DR Используйте инструмент сборки, умеющий управлять зависимостями, и умейте им пользоваться. И будет абсолютно всё равно какой IDE/редактор кода используется (идея/эклипс/нетбинс/блокнот).
P.S. И не жалко времени на перевод этой воды?
odisseylm
17.01.2023 17:48Странная статья... (Реклама инструмента, которым почти никто не пользуется) Но если звезды зажигают, наверное кому-то это нужно.
Автора вообще не смутило, что его зависимость с душком (прямо на 1-м скриншоте огненными красными письменнами). И как быстренько решить эту проблему с помощью Идеи не написано ((
ris58h
Давненько не брал я в руки
шашекMaven. Зато по картинкам сразу вспомнил зачем писал Laconic POM - сократить эту XML портянку.SimSonic
Да не так уж они и страшны. Строчки в файлах вполне себе бесплатны :)
vaa25
комментарий, придающий смысл статье. +1 плагин в коллекцию)