Maven предоставляет шесть областей видимости зависимостей, которые контролируют доступность и транзитивность зависимостей на разных этапах проекта. Понимание этих областей очень важно для нормального управления зависимостями.
Compile — это область видимости по умолчанию. Зависимости доступны во всех classpath'ах и являются транзитивными, то есть распространяются на зависящие проекты. Используй эту область для зависимостей, которые нужны при компиляции и во время выполнения.
Область видимости Provided указывает, что зависимость будет предоставлена JDK или контейнером во время выполнения. Эта область доступна только в classpath'ах компиляции и тестирования и не является транзитивной. Типичный пример — Servlet API при разработке Java EE приложений.
Зависимости с областью видимости Runtime не требуются для компиляции, но необходимы для выполнения. Они появляются в classpath'ах runtime и тестирования, но не в classpath компиляции. Пример — JDBC-драйверы.
Область видимости Test ограничивает зависимости только фазами компиляции и выполнения тестов. Такие зависимости не являются транзитивными и не влияют на продакшн-сборки. Используй эту область для тестовых фреймворков вроде JUnit.
Область видимости System похожа на provided, но требует явного указания пути к JAR-файлу. Артефакт всегда доступен локально и не загружается из репозиториев. Эта область редко рекомендуется из-за проблем с переносимостью.
Область видимости Import применяется исключительно к зависимостям типа pom в секции <dependencyManagement>. Она позволяет переиспользовать конфигурации управления зависимостями из другого POM-файла. Эта область доступна только в Maven 2.0.9 и выше.
Scope compile является транзитивным, что означает, что зависимости, объявленные с этим scope, автоматически будут доступны для проектов, которые зависят от твоего проекта.
Новый — ещё не проверен сообществом
Вы