Gradle多模块Spring Boot项目如何跨模块引用其他模块的启动类?
解决模块B无法识别模块A中Main类的配置步骤
- 核心原因是模块B的测试代码未声明对模块A主代码的依赖,同时如果模块A是Spring Boot可执行模块,默认打包格式不支持被其他模块依赖,按以下步骤修改即可:
1. 先调整模块A的打包配置(必做,如果模块A应用了Spring Boot插件)
模块A的build.gradle中添加以下配置,生成可供其他模块依赖的普通Jar包:
jar { enabled = true } // 可执行Jar加标识后缀,避免和普通Jar冲突 bootJar { classifier = 'boot' }
如果使用Kotlin DSL,对应配置如下:
tasks.jar { enabled = true } tasks.bootJar { archiveClassifier.set("boot") }
2. 调整模块B的依赖配置
在模块B的build.gradle的依赖块中,声明测试阶段对模块A的依赖:
Groovy DSL示例:
dependencies { // 替换为你项目中模块A的实际名称 testImplementation project(':module-a') // 其他原有依赖保持不变 }
Kotlin DSL示例:
dependencies { testImplementation(project(":module-a")) // 其他原有依赖保持不变 }
3. 可选:统一依赖版本避免冲突
如果配置后出现Spring Boot相关依赖版本冲突,在模块B的插件块中引入依赖管理插件,和根项目/模块A保持版本一致即可:
plugins { id 'java' id 'org.springframework.boot' version '你项目使用的Spring Boot版本号' apply false id 'io.spring.dependency-management' }
配置完成后刷新Gradle项目,即可在模块B的测试类中正常导入并引用Main.class。
内容的提问来源于stack exchange,提问作者RahuL Sharma
相关产品推荐
相关产品推荐

