Вопрос проверяет понимание того, как зависимости используются на разных этапах жизненного цикла Maven.
scope определяет, на каких этапах используется зависимость. Он влияет на компиляцию, тестирование и выполнение приложения. Самые распространённые scope — compile, test и provided. Правильный выбор scope уменьшает размер артефакта и снижает риски. Это важная часть конфигурации Maven.
В Maven зависимости могут быть нужны не всегда и не везде, поэтому у них есть область видимости.
Scope зависимости — это правило, определяющее, на каких этапах сборки и выполнения используется данная библиотека.
Перед перечислением важно понимать: scope влияет и на транзитивные зависимости.
compileИспользуется при компиляции
Доступна в рантайме
Scope по умолчанию
testИспользуется только для тестов
Не попадает в production-артефакт
Типично для JUnit и Mockito
providedНужна при компиляции
Не включается в итоговый артефакт
Предоставляется средой выполнения
runtimeНе нужна для компиляции
Требуется при запуске
Контроль размера сборки
Чёткое разделение runtime и test зависимостей
Предсказуемость окружения
Scope позволяет точно управлять тем, где и когда используется зависимость, и является важным инструментом поддержания порядка в Maven-проекте.