Различия между jar и war в Spring Boot?
Я собираюсь создать свой первый веб-сайт на Java с Spring Framework с помощью Spring Boot, и его намного проще построить в jar
, но у меня есть несколько вопросов об этом.
каковы различия в целом?
на jar
файлы взгляды под /resources/templates
, но в war
файл под /webapp/WEB-INF/
.
в чем разница? Могу ли я развернуть jar
на онлайн-хост?
3 ответов
Spring Boot можно сказать, чтобы создать "жирную банку", которая включает в себя все зависимости вашего модуля/службы и может быть запущена с java -jar <your jar>
. См. раздел "Создание исполняемой банки с Maven" здесь.
Spring Boot также можно сказать создать файл войны, в этом случае вы, вероятно, решите развернуть его в веб-контейнер, такой как Tomcat или Jetty.
подробнее о развертывании Spring Boot здесь.
под управлением spring-boot
применение как жир *.jar
можно построить так называемый fat JAR
это исполняемый файл *.jar
файл со встроенным контейнером приложений (Tomcat
по умолчанию).
Есть spring-boot
плагины для различных систем. Вот один для maven
: spring-boot-maven-плагин
выполнить вид fat
*.jar
вы можете просто запустить команду:
java -jar *.jar
или через spring-boot-maven
гол:
mvn spring-boot:run
здание spring-boot
приложение а *.war
архиве
другой вариант-отправить ваше приложение как старомодное . Он может быть развернут в любом контейнере сервлетов. Вот шаг за шагом how-to list:
- изменить
packaging
towar
(говорю о Maven вpom.xml
) - наследовать main
spring-boot
класс приложениеSpringBootServletInitializer
и переопределитьSpringApplicationBuilder configure(SpringApplicationBuilder)
метод (см. javadoc) - обязательно установите
scope
ofspring-boot-starter-tomcat
asprovided
зависит от вашего развертывания. Если вы планируете развернуть приложение на существующем сервере приложений Java EE (например, Tomcat), стандартный подход-выполнить war
построить.
при использовании подхода fat jar приложение будет развернуто во встроенном контейнере приложений, предоставляемом spring boot. Поведение Развертывание Приложений Spring Boot для получения дополнительной информации.