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

Spring Boot 2.5.2打包如何仅生成可执行jar排除plain.jar?

Spring Boot 2.5+ Gradle打包仅保留可执行Jar配置方案

Spring Boot 2.5及以上版本的官方Gradle插件默认会同时触发bootJar和jar两个打包任务:

  • bootJar生成带内嵌容器、可直接运行的胖Jar,默认无分类器后缀
  • jar生成普通Java库Jar,默认添加plain分类器后缀

你之前的配置将普通jar任务的archiveClassified设为空,会导致两个任务的输出文件名完全一致,普通Jar会覆盖掉bootJar生成的可执行Jar,因此最终得到的Jar失去可执行属性。

如果你的项目仅作为独立可执行服务部署,不需要作为依赖被其他项目引用,直接禁用普通jar任务即可,以下是不同DSL的配置方案:

Gradle Groovy DSL 配置(build.gradle)

// 直接禁用普通jar任务
jar {
    enabled = false
}

// 可选:自定义可执行Jar的文件名属性
bootJar {
    archiveBaseName.set("your-custom-app-name")
    archiveVersion.set("1.0.0")
}

Gradle Kotlin DSL 配置(build.gradle.kts)

tasks.getByName<Jar>("jar") {
    enabled = false
}

tasks.getByName<org.springframework.boot.gradle.tasks.bundling.BootJar>("bootJar") {
    archiveBaseName.set("your-custom-app-name")
    archiveVersion.set("1.0.0")
}

验证效果

配置完成后执行./gradlew build或者单独执行./gradlew bootJar任务,在build/libs目录下只会生成1个可执行Jar包,不会再出现带-plain后缀的普通Jar包,生成的Jar可以直接通过java -jar xxx.jar命令启动。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:42:03