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

如何使用Gradle为Reactive Spring Boot 2.0.0应用生成非可执行WAR包

生成Spring Boot 2.0.0 Reactive Web应用的非可执行WAR包(Gradle)

嗨,这事儿不难搞定!要给你的Spring Boot Reactive Web应用生成标准的非可执行WAR包,只需要在你的build.gradle里做几个小调整就行,我给你一步步说明:

步骤1:启用Gradle的War插件

首先,在已有的插件列表里加上war插件——它是Gradle自带的标准插件,负责生成符合Java EE规范的非可执行WAR:

apply plugin: 'war'

步骤2:禁用Spring Boot的可执行War任务

Spring Boot默认的bootWar任务会生成带内置容器的可执行WAR,我们需要禁用它,让标准的war任务接管打包工作:

bootWar {
    enabled = false
}

步骤3:(可选)添加Servlet容器依赖(如果部署到外部容器)

如果你的WAR包要部署到Tomcat、Jetty这类传统Servlet容器,记得添加容器的providedRuntime依赖——这样容器相关的类不会被打包进WAR,而是由目标容器提供:

dependencies {
    // 你的webflux核心依赖
    implementation 'org.springframework.boot:spring-boot-starter-webflux'
    // 添加Tomcat依赖作为providedRuntime(按需替换成其他容器)
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
}

完整的修改后build.gradle示例

把这些调整整合到你的配置里,完整的文件大概是这样:

buildscript {
    ext {
        springBootVersion = '2.0.0.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'war' // 新增:启用标准war插件

group = 'myproj'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral() // 补全你之前未写完的仓库配置
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-webflux'
    // 可选:如果部署到外部Servlet容器,添加这个依赖
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
}

// 禁用bootWar任务,让标准war任务生成非可执行WAR
bootWar {
    enabled = false
}

生成WAR包的命令

在项目根目录下执行以下命令:

  • Linux/macOS:./gradlew clean war
  • Windows:gradlew.bat clean war

执行完成后,非可执行的WAR包会生成在build/libs目录下,文件名格式是myproj-0.0.1-SNAPSHOT.war。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:52:49