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

如何将Gradle构建的Spring Boot Web服务改为生成WAR文件而非JAR文件

将Spring Boot + Gradle项目改为生成WAR包的完整步骤

嗨,刚好我之前折腾过这个配置,给你一步步拆解怎么改,完全适配你要搭建动态Web项目、整合UI和部署到外部Web容器的需求~

1. 调整build.gradle核心配置

首先要在构建脚本里添加war插件,同时保留Spring Boot的核心插件:

plugins {
    id 'org.springframework.boot' version '你的Spring Boot版本号'
    id 'io.spring.dependency-management' version '对应依赖管理版本'
    id 'java'
    id 'war' // 新增这个插件,开启WAR打包能力
}

接下来处理内嵌容器的依赖——Spring Boot默认内嵌Tomcat,如果你打算把WAR部署到外部容器(比如Tomcat、Jetty),需要把内嵌Tomcat标记为providedRuntime,这样打包时不会把它放进WAR包(避免和外部容器冲突):

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    // 把内嵌Tomcat设为仅运行时提供,打包时排除
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    // 你的其他业务依赖保持不变即可
}

如果你的项目需要兼容老版本Servlet容器(比如需要web.xml),可以在src/main/webapp/WEB-INF目录下添加自定义的web.xml,不过现在大部分场景下Spring Boot的无XML配置已经足够用了。

2. 修改Spring Boot主类

默认的Spring Boot主类只需要继承SpringBootServletInitializer,并重写configure方法,这样外部容器才能正确识别并加载你的Spring应用:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class YourApplication extends SpringBootServletInitializer {

    // 重写configure方法,指定应用入口类
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(YourApplication.class);
    }

    // 保留main方法,这样依然可以用bootRun直接启动内嵌容器调试
    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

这个改动很关键——既保留了本地用./gradlew bootRun快速调试的能力,又能生成可以部署到外部容器的WAR包。

3. 生成WAR包

最后执行Gradle的war任务就行:

./gradlew war

生成的WAR文件会放在build/libs目录下,文件名格式一般是你的项目名-版本号.war。如果需要生成可执行WAR(既可以直接java -jar运行,又能部署到容器),可以不用排除内嵌Tomcat依赖,但部署到外部容器时还是建议排除,避免类冲突。


内容的提问来源于stack exchange,提问作者Puneet Dewan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:31:39