Разница между зависимостями compile, provided и runtime заключается в их поведении на разных этапах жизненного цикла проекта в Maven: 35
- Compile. 35 Зависимости с этой областью доступны во всех путях к классам (компиляции, тестирования, выполнения) и упаковываются в финальный артефакт (JAR, WAR и другие форматы). 5 Это область по умолчанию в Maven. 5
- Provided. 15 Зависимости с этой областью необходимы для компиляции кода проекта, но предполагается, что их предоставит среда выполнения. 5 Эти зависимости не упаковываются с артефактом. 5
- Runtime. 15 Зависимости с этой областью нужны для выполнения исходного кода, но не требуются для компиляции. 5 Эти зависимости не включаются в путь к классам компиляции, но включаются в путь к классам выполнения, а также упаковываются в финальный артефакт. 5