Gradle7下BootJar未打包全部依赖及静态文件问题求助
解决Gradle 7下Spring Boot可执行Jar生成问题
核心问题分析
你当前的build.gradle存在两个关键问题:
- 主模块
c-app未应用Spring Boot核心插件org.springframework.boot,而bootJar任务正是由该插件提供的,仅在子项目配置中添加无效。 bootJar配置被放在subprojects块中,导致主模块的可执行Jar打包逻辑未被正确触发。
修改后的c-app/build.gradle配置
println "Main deploy folder: ${appDeployFolder}" // 主模块c-app单独应用Spring Boot相关插件 plugins { id 'org.springframework.boot' version '2.7.15' // 替换为你实际使用的Spring Boot版本,需与dependency-management兼容 id 'io.spring.dependency-management' version '1.0.15.RELEASE' id 'java' } // 子项目通用配置(仅适用于c-app-ui等子模块) subprojects{ apply plugin: 'io.spring.dependency-management' apply plugin: "java" apply from: "${project(':c-app').projectDir}/copyStatic.gradle" apply from: "${project(':c-app').projectDir}/deployApp.gradle" deployApp.enabled = true copyStaticHtml.enabled = false dependencies{ implementation project(":chv-lib:chv-lib-config") implementation("de.codecentric:spring-boot-admin-starter-client") implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' implementation 'org.springframework.boot:spring-boot-starter' } } // 主模块的可执行Jar配置,单独提取到外层 bootJar { enabled = true mainClassName = 'com.am.c.Application' // 可选:自定义生成的Jar文件名 // archiveFileName = "c-app-exec.jar" }
关键修改说明
- 添加Spring Boot插件:在主模块的
plugins块中引入org.springframework.boot插件,这是生成可执行Jar的核心前提,它会自动处理依赖打包、主类配置等逻辑。 - 分离主模块与子项目配置:将
bootJar配置从subprojects块中移出,确保主模块的打包逻辑独立生效,子项目仅保留通用的Java和依赖管理配置。 - 版本匹配:确保
org.springframework.boot和io.spring.dependency-management的版本兼容(Gradle 7推荐Spring Boot 2.5+版本)。
生成与启动可执行Jar
- 执行打包命令:在项目根目录运行
./gradlew bootJar(Windows系统用gradlew.bat bootJar)。 - 找到生成的Jar:打包完成后,可执行Jar位于
c-app/build/libs/目录下,文件名默认包含项目名和版本号。 - 启动应用:运行
java -jar c-app/build/libs/[生成的Jar文件名].jar即可启动应用。
内容的提问来源于stack exchange,提问作者THULASI RAM S
相关产品推荐
相关产品推荐

