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, но не собирается в терминале:
- Выполнить
./mvnw testиз корня проекта. - Сравнить
java -version, Maven toolchain и Project SDK. - Проверить активные Maven-профили и переменные окружения.
- Убедиться, что сгенерированный код создаётся сборкой, а не только плагином 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 и состояние индекса.