IntelliJ IDEA

IntelliJ IDEA — не часть Java и не замена сборщику. IDE читает модель проекта, строит собственные индексы и запускает те же JDK, Maven или Gradle, которые можно вызвать из терминала. Поэтому проект должен собираться без IDE.

Что держать в памяти

  • Project SDK определяет JDK, которым IDE анализирует и запускает код.
  • Language level разрешает синтаксис конкретной версии Java; он может отличаться от фактического JDK.
  • Модель Maven импортируется из pom.xml. Ручная настройка classpath в IDE обычно исчезнет после следующего импорта.
  • Индекс позволяет быстро искать usages и безопасно переименовывать символы. Текстовая замена не учитывает семантику Java.
  • Run configuration хранит main-класс, VM options, аргументы программы, переменные окружения и рабочий каталог.

Быстрая диагностика

Если код работает из IDE, но не собирается в терминале:

  1. Выполнить ./mvnw test из корня проекта.
  2. Сравнить java -version, Maven toolchain и Project SDK.
  3. Проверить активные Maven-профили и переменные окружения.
  4. Убедиться, что сгенерированный код создаётся сборкой, а не только плагином IDE.

Invalidate Caches полезен при повреждённом индексе, но не исправляет ошибочный pom.xml.

Полезные действия: форматирование — ⌥⌘L на macOS или Ctrl+Alt+L на Windows/Linux; поиск usages — ⌥F7 / Alt+F7; безопасное переименование — ⇧F6 / Shift+F6.

Типичные сбои

  • В IDE выбран JDK 21, а Maven запускается на JDK 17.
  • Секрет положили в shared run configuration и случайно закоммитили.
  • Тест зависит от рабочего каталога IDE и падает в CI.
  • Автоимпорт выбрал класс с тем же именем из другого пакета.

Вопросы для собеседования

Почему сборка из IDE недостаточна? Она может использовать локальные индексы, плагины и настройки, которых нет в CI.

Чем рефакторинг отличается от поиска и замены? Рефакторинг работает с моделью кода и обновляет ссылки на символ; замена работает только с текстом.

Что проверить при “красном” коде после успешной Maven-сборки? SDK, language level, импорт Maven-модели, generated sources и состояние индекса.

См. Среда разработки IDE, Основы иcпользования Maven.