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

Gradle构建Spring Boot:生成含/不含资源的瘦Jar与胖Jar

解决方案

你不需要修改全局的processResources任务(这会同时影响可执行Jar和瘦Jar的资源),而是分开配置两个Jar任务:

1. 保留Spring Boot默认的可执行胖Jar

Spring Boot的bootJar任务默认会自动生成包含所有依赖、编译后的类文件以及resources目录内容的可执行胖Jar,无需额外修改,执行./gradlew bootJar即可生成。

2. 配置用于依赖的瘦Jar

你可以通过两种方式实现瘦Jar的生成:

方式一:修改默认jar任务生成瘦Jar

修改默认的jar任务,让它只包含编译后的class文件,排除resources目录内容:

tasks.jar {
    // 仅包含源码编译后的class文件
    from sourceSets.main.java.outputDir
    // 移除默认的资源输入,避免包含resources目录
    sourceSets.main.resources.srcDirs = []
}

执行./gradlew jar会生成瘦Jar(路径:build/libs/[项目名].jar),而bootJar生成的可执行Jar不受影响。

方式二:创建自定义瘦Jar任务(推荐)

如果不想改动默认jar任务,可以创建一个独立的自定义任务,生成带标识的瘦Jar:

// 自定义瘦Jar任务,后缀为-thin
task thinJar(type: Jar) {
    archiveClassifier.set('thin')
    // 仅包含编译后的class文件
    from sourceSets.main.java.outputDir
    // 若需要保留特定资源,可添加include规则,例如:include 'config/*.properties'
}

// 让assemble任务自动触发thinJar生成
assemble.dependsOn(thinJar)

执行./gradlew assemble或./gradlew thinJar会生成build/libs/[项目名]-thin.jar,这个Jar仅包含class文件,可直接作为其他项目的依赖。

关键说明

  • 不要修改全局的processResources任务,bootJar依赖该任务来将resources目录内容打包进可执行Jar。
  • 若需要给瘦Jar添加部分资源,可在对应Jar任务中添加include规则,例如include 'META-INF/*.xml'来保留特定文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:39:52