Spring Boot应用的打包部署方式主要有两种:
jar
和
war
,分别对应不同的部署场景和需求。
### 1. 打包成 JAR 包部署
#### JAR (Java Archive) 方式
Spring Boot的一个核心特性就是其内嵌服务器(默认是Tomcat,也可更换为Jetty或Undertow等),这使得Spring Boot应用可以被打包成为一个单一的、可执行的JAR文件。这种打包方式简化了部署流程,因为无需在服务器上预先安装并配置应用服务器。
特点
- 使用`spring-boot-maven-plugin`或`spring-boot-gradle-plugin`插件构建时,会自动包含所有依赖以及内嵌的Servlet容器。
- 执行`mvn package`(Maven)或`./gradlew build`(Gradle)命令即可生成一个包含了所有必要运行时环境的fat/uber JAR(也称作可执行JAR)。
- 运行应用只需通过`java -jar your-app.jar`命令即可启动整个应用。
- 部署时只需要将这个JAR文件上传至服务器,并且在后台执行上述命令,不需要额外的Tomcat或其他应用服务器。
### 2. 打包成 WAR 包部署
#### WAR (Web Application Archive) 方式
尽管Spring Boot提倡的是内嵌服务器的部署模式,但为了满足某些传统应用服务器的部署要求或特定运维环境的需求,Spring Boot应用也可以被打包成WAR格式。
特点
- 需要在项目的构建配置中(pom.xml或build.gradle)指定打包类型为war,而不是默认的jar。
- 当打包成WAR时,Spring Boot不会包含内嵌的Servlet容器,而是期望应用部署到现有的、外部的Servlet容器(如Tomcat、Jetty等)中运行。
- 执行`mvn package`或`./gradlew build`后得到的WAR文件需要放到已安装的Servlet容器的webapps目录下进行部署。
- 外部Servlet容器需要由管理员单独安装、配置和管理。
总结来说,选择JAR还是WAR包装方式取决于具体的应用场景和运维要求。如果追求快速部署、简化运维流程,一般推荐采用JAR包方式;而在企业级环境中,如果已经有一个标准的Java EE应用服务器集群,或者需要利用到应用服务器提供的其他功能,则可以选择WAR包方式部署。