You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过IntelliJ与Maven配置将SpringBoot应用部署到Tomcat?

SpringBoot 部署到外部 Tomcat 关键环节排查与解决

一、Maven 核心配置(WAR 打包必做)

SpringBoot 默认打 JAR 包并内置 Tomcat,要部署到外部 Tomcat 必须改成 WAR 包,以下配置缺一不可:

  • 声明打包类型为 WAR
    在 pom.xml 中添加:
<packaging>war</packaging>
  • 排除内置 Tomcat(避免与外部 Tomcat 冲突)
    给 web starter 添加依赖排除:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  • 添加 Servlet API 依赖(仅编译时生效,Tomcat 自带该依赖)
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>
  • 主类继承 SpringBootServletInitializer
    这是外部 Tomcat 启动 SpringBoot 应用的核心,修改你的主类:
@SpringBootApplication
public class MagicVisionApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(MagicVisionApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(MagicVisionApplication.class);
    }
}

二、IntelliJ 部署配置(解决文件不迁移问题)

你看不到文件迁移,大概率是 Deployments 标签配置有误,按以下步骤调整:

    1. 配置本地 Tomcat
      打开 Run/Debug Configurations,添加 Tomcat Server -> Local,选择你本地 Tomcat 的安装目录(例如 apache-tomcat-9.0.x)。
    1. 配置 Deployments 项
    • 点击右侧 + 号,选择 Artifact,再挑选项目对应的 war exploded(开发用,支持热更新)或 war(生产打包用)。
    • 重点:设置 Application context,比如设为 /,则访问 localhost:8080 直接进入你的应用;若设为 /magic-vision,则访问路径为 localhost:8080/magic-vision。
    • 检查部署路径:点击 Show in Explorer 查看 IntelliJ 实际部署路径,正常应指向 Tomcat 的 webapps 目录下的对应文件夹(如 ROOT 或项目名文件夹),路径不对则重新选择 Tomcat 安装目录。
    1. 先构建再启动
      先执行 Maven -> clean -> package,确保 target 目录生成正确的 WAR 或 exploded 文件夹,再启动 Tomcat,此时文件会自动同步到 Tomcat 部署目录。

三、Thymeleaf 模板位置检查(解决404)

你的控制器返回 home.html,Thymeleaf 默认仅读取 src/main/resources/templates 下的模板文件,需满足:

  • 在 src/main/resources 下创建 templates 文件夹,并将 home.html 放入其中。
  • 模板需添加 Thymeleaf 命名空间才能正常渲染,示例:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Home</title>
</head>
<body>
    <h1>Hello, <span th:text="${username}"></span>!</h1>
</body>
</html>

四、快速排查步骤

  • 查看 Tomcat 日志:打开 logs/catalina.out,查找是否有 Started MagicVisionApplication in X seconds 类日志,没有则说明应用未加载,需重新检查打包与部署配置。
  • 检查 webapps 目录:查看 Tomcat 的 webapps 文件夹中是否存在你的应用目录,没有则说明 IntelliJ 部署未生效,重新配置 Deployments。
  • 测试静态资源:在 src/main/resources/static 下放置 test.html,访问 localhost:8080/test.html,能打开则说明 Tomcat 部署正常,问题出在 Thymeleaf 或控制器映射;打不开则说明部署本身存在问题。

内容的提问来源于stack exchange,提问作者Dr Tyrell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:15:56