如何用Gradle将Spring Boot应用构建为可依赖的fat jar?
Gradle配置生成可作为依赖的Spring Boot Fat Jar
要实现生成可作为依赖的Spring Boot Fat Jar,同时区分可执行归档,你可以通过以下Gradle配置实现:
核心配置步骤
1. 标记可执行Jar的分类符
修改bootJar任务,指定classifier来区分可执行Jar,避免与可依赖Jar冲突:
bootJar { classifier = 'exec' // 可执行Jar会被命名为 [artifactId]-[version]-exec.jar }
2. 配置默认Jar为Fat Jar
默认的jar任务仅打包项目自身代码,需要修改它来包含所有依赖,生成可作为依赖的Fat Jar:
jar { from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } // 排除签名文件,避免依赖时出现冲突 exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA' }
完整示例配置
将上述配置添加到你的build.gradle中,最终配置如下:
plugins { id 'java' id 'org.springframework.boot' version '2.7.4' id 'io.spring.dependency-management' version '1.0.14.RELEASE' id 'org.jetbrains.gradle.plugin.idea-ext' version '1.1.6' } // 配置可执行Jar的分类符 bootJar { classifier = 'exec' } // 配置默认Jar为包含所有依赖的Fat Jar jar { from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA' } // 基础配置示例 group = 'com.example' version = '0.0.1-SNAPSHOT' repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter' // 添加你的其他业务依赖 }
构建结果说明
执行gradle build后,在build/libs目录下会生成两个Jar文件:
[artifactId]-[version].jar:可作为依赖的Fat Jar,包含项目代码及所有依赖[artifactId]-[version]-exec.jar:可执行的Spring Boot Jar,用于直接启动应用
依赖使用方式
在其他项目中引入该Fat Jar作为依赖时,直接使用默认的artifact坐标即可:
dependencies { implementation 'com.example:your-artifact-id:0.0.1-SNAPSHOT' }
内容的提问来源于stack exchange,提问作者uli
相关产品推荐
相关产品推荐

