WAR и Uber-JAR в Spring Boot
Как известно, по умолчанию Spring Boot-приложения пакуются в Uber-JAR со всеми зависимостями и embedded сервлет-контейнером (Tomcat, Jetty, Undertow). С таким форматом приятно и удобно работать, ведь Uber-JAR просто разрабатывать, распространять и деплоить.
Но, как это часто бывает, за всё нужно платить. Дело в том, что Uber-JAR имеет некоторые ограничения, например, отсутствует поддержка JSP. В итоге получается, что если вы используете Uber-JAR, вам приходится отказываться от всех JSP. То есть, если у вас старый проект с JSP (JavaServer Pages), ожидайте сложностей с миграцией.
Однако данная проблема решается просто, ведь Uber-JAR опционален. Следовательно, вы всегда можете создать обычный WAR (Web Application Resource — формат файлов, используемый для распространения Java web-приложений и объединения JSP-файлов).
В Spring Boot это можно сделать, например, так:
<project> <!-- ... --> <packaging>war</packaging> <!-- ... --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <!-- ... --> </dependencies> </project>
Кроме того, соответствующая опция есть и в Spring Initializr: