如何在Gradle 6.8.3中正确构建FatJar?
Gradle 6.8.3 正确构建FatJar的解决方案
你的警告来自两个已废弃的Gradle属性,以及过时的依赖配置引用,以下是修正后的完整配置:
修正后的FatJar任务代码
task fatJar(type: Jar) { manifest { attributes 'Implementation-Title': 'Gradle Jar File Example', 'Implementation-Version': archiveVersion, 'Main-Class': 'com.cekpremi.example' } archiveBaseName = "${project.name}-all" from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } with jar }
关键改动说明
- 替换废弃属性:
- 将
baseName改为archiveBaseName:Gradle 6.x 开始标记baseName为废弃,统一使用archiveBaseName作为归档文件基础名称属性 - 将manifest中的
version改为archiveVersion:原version引用的是AbstractArchiveTask的废弃属性,替换为官方推荐的archiveVersion
- 将
- 更新依赖配置:
把configurations.compile替换为configurations.runtimeClasspath:Gradle 6+ 已逐步淘汰compile配置,runtimeClasspath会包含所有运行时必需的依赖,确保FatJar能独立运行
额外优化(可选)
如果希望Implementation-Version使用项目定义的版本号,先在build.gradle根节点定义版本:
version = '1.0.0' // 自定义项目版本
然后修改manifest中的对应行:
'Implementation-Version': project.version,
如果想让gradle clean build自动触发FatJar构建,添加以下配置:
build.dependsOn fatJar
内容的提问来源于stack exchange,提问作者jujol
相关产品推荐
相关产品推荐

