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

升级Spring Boot插件后,自定义BootJar任务报错如何解决?

解决Spring Boot 2.x中自定义BootJar任务的问题

我来帮你搞定这个升级Gradle任务时遇到的坑,你碰到的两个错误都是因为对Spring Boot 2.x Gradle插件的任务类型使用逻辑理解错了:

先理清两个错误的根源

  • 第一个错误(找不到BootJar属性):你直接用BootJar作为任务类型,但Gradle没识别到这个类——要么是你没正确引入Spring Boot Gradle插件,要么是没显式使用它的全限定类名。
  • 第二个错误(类型转换失败):bootJar是Spring Boot插件自动创建的任务实例,不是任务类型,所以不能用它来指定自定义任务的type,必须用对应的类类型来声明。

正确的自定义BootJar任务写法

第一步:确保已应用Spring Boot插件

这是所有操作的前提,先在build.gradle里正确引入插件:

// 推荐的现代Gradle写法
plugins {
    id 'org.springframework.boot' version '2.0.2'
    id 'java'
}

// 老版本Gradle可以用这种写法
// apply plugin: 'org.springframework.boot'
// apply plugin: 'java'

第二步:定义自定义BootJar任务

你需要用BootJar的全限定类名(或插件应用后直接用类名)声明任务类型,同时配置必要参数:

task adminBoot(type: org.springframework.boot.gradle.tasks.bundling.BootJar, dependsOn: adminJar) {
    // 指定admin应用的主类
    mainClassName = 'com.yourpackage.admin.AdminApplication'
    // 从adminJar的输出中获取内容,打包成fat jar
    from adminJar.outputs
    // 自定义输出的jar文件名
    archiveFileName = 'admin-boot.jar'
}

// 同理定义worker的BootJar任务
task workerBoot(type: org.springframework.boot.gradle.tasks.bundling.BootJar, dependsOn: workerJar) {
    mainClassName = 'com.yourpackage.worker.WorkerApplication'
    from workerJar.outputs
    archiveFileName = 'worker-boot.jar'
}

如果你的Gradle脚本已经正确应用了Spring Boot插件,也可以直接简写为type: BootJar,不过用全限定类名能避免潜在的命名冲突,更稳妥。

额外小提示

  • 如果你想复用默认bootJar任务的配置,可以通过configure方法继承,但因为你需要两个独立的产物,完全自定义两个任务是更合适的选择。
  • 要确保adminJar和workerJar任务已经正确配置,能生成对应的普通Jar文件,这样adminBoot这类任务才能依赖它们打包成fat jar。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:52:16