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

Spring Boot 2.5.x与Gradle 8搭配时Boot Jar生成缺失的解决咨询

Spring Boot 2.5.x 搭配 Gradle 8 生成 Boot Jar 解决方案

问题场景

使用 Spring Boot 2.5.3 + Gradle 8 构建基础 Java 应用时,构建流程仅执行常规 jar 任务,未生成可执行的 Boot Jar,执行任务日志如下:

> Task :clean
> Task :checkKotlinGradlePluginConfigurationErrors
> Task :compileKotlin NO-SOURCE
> Task :compileJava
> Task :processResources
> Task :classes
> Task :jar
> Task :assemble
> Task :compileTestKotlin NO-SOURCE

将 Spring Boot 升级至 2.7 版本后,构建流程会正常触发 bootJar 任务,日志如下:

> Task :clean
> Task :checkKotlinGradlePluginConfigurationErrors
> Task :compileKotlin NO-SOURCE
> Task :processResources
> Task :classes
> Task :bootJarMainClassName
> Task :bootJar

项目插件配置如下:

kotlin("jvm") version "1.9.20"
id("org.springframework.boot") version "2.5.3"
id("io.spring.dependency-management") version "1.0.11.RELEASE"
id("org.liquibase.gradle") version "2.1.1"

原因分析

Spring Boot 2.5.x 版本的 Gradle 插件与 Gradle 8 存在兼容性适配问题:默认情况下,bootJar 任务未被关联到 Gradle 构建生命周期的 assemble 阶段;而 Spring Boot 2.7 及后续版本修复了该适配逻辑,自动将 bootJar 纳入构建流程。

解决方法

1. 关联 bootJar 到 assemble 任务

在 build.gradle.kts 中添加配置,让 assemble 任务依赖 bootJar,这样执行 ./gradlew assemble 或 ./gradlew build 时会自动触发 Boot Jar 构建:

tasks.named("assemble") {
    dependsOn(tasks.named("bootJar"))
}

2. 替换默认 jar 任务为 bootJar

如果希望构建时仅生成可执行 Boot Jar,而非同时生成普通 Jar,可以禁用默认 jar 任务并调整 bootJar 配置:

tasks.named("jar") {
    enabled = false
}

tasks.named("bootJar") {
    enabled = true
    archiveClassifier.set("") // 移除默认的"boot"后缀,让Jar文件名与普通Jar一致
}

3. 手动执行 bootJar 任务

无需修改配置,每次构建时直接执行指定任务:

./gradlew clean bootJar

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 16:46:10