部署 Spring Boot 项目时,是否需要提前安装依赖取决于你的部署方式。以下是常见的几种部署方式及其所需的依赖:
一、使用内置服务器(推荐方式)——打包为可执行 JAR 文件
Spring Boot 默认内嵌了 Tomcat(或其他如 Jetty、Undertow),因此你不需要单独安装 Web 服务器。
所需依赖/环境:
-
Java 运行环境(JRE 或 JDK)
- 必须安装与项目编译版本匹配的 Java 版本。
- 例如:如果你的项目是用 Java 17 编译的,则目标服务器必须安装 Java 17 或更高版本。
- 安装命令示例(Ubuntu):
sudo apt update sudo apt install openjdk-17-jre
-
Maven 或 Gradle(仅在构建阶段需要)
- 如果你在服务器上构建项目(不推荐),则需要 Maven 或 Gradle。
- 更推荐的做法是在本地或 CI/CD 环境中构建好 JAR 包,然后上传到服务器运行。
-
无其他额外依赖(如 Tomcat、Nginx 等非必需)
- 内嵌服务器已包含,直接运行即可。
部署步骤:
# 构建项目(本地)
mvn clean package
# 上传 jar 到服务器后运行
java -jar your-app.jar
二、部署到外部 Servlet 容器(如独立 Tomcat)
如果你选择将 Spring Boot 项目打包为 WAR 文件并部署到外部 Tomcat,则需要:
所需依赖/环境:
-
外部 Servlet 容器(如 Apache Tomcat)
- 安装并配置 Tomcat(例如 Tomcat 9+ 对应 Java 11+)。
- 下载地址:https://tomcat.apache.org/
-
Java JDK/JRE
- 同样需要匹配版本的 Java。
-
修改项目配置
- 继承
SpringBootServletInitializer - 打包方式改为
war - 排除内嵌 Tomcat(可选)
- 继承
示例 pom.xml 配置:
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
部署步骤:
- 构建 WAR 文件
- 将 WAR 文件复制到
tomcat/webapps/目录 - 启动 Tomcat
三、Docker 部署(现代化方式)
所需依赖:
-
Docker 引擎
- 在目标服务器安装 Docker。
- 安装命令(Ubuntu):
sudo apt install docker.io sudo systemctl start docker sudo systemctl enable docker
-
JDK(在 Docker 镜像中自动包含)
- 通常使用基础镜像如
openjdk:17-jre-slim
- 通常使用基础镜像如
-
Dockerfile 示例:
FROM openjdk:17-jre-slim COPY target/your-app.jar app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] -
构建并运行:
docker build -t my-spring-app . docker run -p 8080:8080 my-spring-app
四、云平台部署(如阿里云、AWS、Kubernetes)
- 通常只需要:
- 构建好的 JAR/WAR 或 Docker 镜像
- 对应平台的 CLI 工具(如 kubectl、aliyun-cli)
- 配置好资源配置、网络、数据库连接等
总结:最常见情况(JAR + 内嵌 Tomcat)
| 项目 | 是否必须 |
|---|---|
| Java 运行环境(JRE) | ✅ 必须 |
| Maven / Gradle | ❌ 仅构建时需要(建议本地构建) |
| Tomcat / Nginx / Apache | ❌ 不需要(除非反向X_X或特殊需求) |
| Docker | ✅ 可选,但推荐用于生产环境 |
💡 建议:在开发或 CI 环境中构建 JAR 包,上传到服务器后只需
java -jar xxx.jar即可运行。
如有反向X_X、HTTPS、负载均衡等需求,可额外安装 Nginx、Let’s Encrypt 等工具,但这不属于 Spring Boot 运行的“必要依赖”。
如有具体部署场景(如 Windows 服务器、K8s、宝塔面板等),可以进一步说明,我可以提供更详细的指导。
云小栈