如何使用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
相关产品推荐
相关产品推荐

