Для чего используется scope в Maven
Что проверяют
Понимаете ли вы, что scope управляет сразу тремя вещами: на какой classpath попадёт зависимость (компиляция, тесты, запуск), окажется ли она в итоговом артефакте и передастся ли транзитивно. Следом обычно спрашивают, чем provided отличается от runtime и что такое import.
Как отвечать
compile: значение по умолчанию. Доступна везде, попадает в сборку и транзитивно передаётся тем, кто зависит от вашего модуля;provided: нужна для компиляции, а в рантайме её даёт окружение. Классический примерjakarta.servlet-apiдля WAR в Tomcat илиspring-boot-starter-tomcatпри деплое во внешний контейнер. Транзитивно не передаётся;runtime: при компиляции не нужна, при запуске нужна. Типичный пример JDBC-драйвер: код работает с интерфейсамиjava.sql, а драйвер PostgreSQL подгружается при старте. Spring Initializr ставит драйверам именно этот scope;test: только компиляция и запуск тестов. JUnit, Mockito, Testcontainers,spring-boot-starter-test. В артефакт не попадает;system: какprovided, но JAR берётся по локальному пути изsystemPath. Помечен устаревшим, вместо него JAR кладут в локальный или корпоративный репозиторий;import: работает только внутриdependencyManagementдля зависимости с<type>pom</type>. Подтягивает версии из BOM, напримерspring-boot-dependenciesили BOM Testcontainers.
Отдельно скажите про транзитивность: compile передаётся как compile, runtime как runtime, а provided и test дальше вашего модуля не идут. Фактическую картину показывает mvn dependency:tree, а неиспользуемые и необъявленные зависимости находит mvn dependency:analyze.
Где спотыкаются
Путают scope и <optional>true</optional>. Optional тоже обрывает транзитивность, но это отдельный флаг, а не scope.
Подключают JAR через system со ссылкой на каталог lib/ в репозитории. У автора сборка проходит, а транзитивные зависимости такого JAR Maven не видит вообще, и они всплывают только в рантайме.
Думают, что test влияет лишь на размер артефакта. На деле класс из тестовой зависимости просто не скомпилируется в src/main, и это полезная защита от случайного импорта.