Gradle使用shadowJar插件构建FatJAR无JAR文件生成问题求助
问题排查与解决方案
- 确认文件生成路径
你提供的控制台日志显示所有任务均执行成功,jar和shadowJar任务都已经正常跑完,默认生成的JAR包会放在项目根目录下的build/libs/文件夹中:
- 不含依赖的普通JAR包文件名为:
<你的项目名>-1.0-SNAPSHOT.jar - 包含所有依赖的ShadowJAR包文件名为:
<你的项目名>-1.0-SNAPSHOT-all.jar
如果你是在IDE中运行的Gradle任务,可以额外检查IDE的Gradle配置,确认是否修改了build目录的默认输出路径,避免找错目录。
- 修正stage任务的依赖逻辑
你当前的stage任务依赖配置存在逻辑漏洞:同时依赖build、shadowJar、clean三个任务,仅指定了build在clean之后执行,没有明确shadowJar的执行时机,可能出现文件生成后被异常清理的情况。
ShadowJAR任务本身已经默认依赖完整的build流程,不需要额外重复依赖build任务,可以直接把stage任务改成如下配置:
task stage { dependsOn clean, shadowJar shadowJar.mustRunAfter clean }
修改后重新执行stage任务即可。
- 补充主类配置(可选,适用于需要生成可执行JAR的场景)
如果你的项目有入口类,需要生成可执行JAR包,需要在build.gradle中补充主类声明,否则生成的JAR包无法直接运行,配置示例如下:
jar { manifest { attributes 'Main-Class': '替换为你的主类全限定名,例如org.prithvidiamond1.Main' } } shadowJar { manifest { attributes 'Main-Class': '替换为你的主类全限定名,例如org.prithvidiamond1.Main' } }
内容的提问来源于stack exchange,提问作者Prithvidiamond
相关产品推荐
相关产品推荐

