Spring多模块项目@ContextConfiguration跨模块找不到主类问题求助
以下是针对该问题的具体排查步骤:
检查server-test模块的依赖配置
务必在server-test的build.gradle中正确引入server模块的主代码依赖,而非仅测试依赖。示例配置:dependencies { // 引入server模块的主代码,确保测试能访问MainServerApp类 implementation project(':server') // 测试相关依赖保留 testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.spockframework:spock-core' testImplementation 'org.spockframework:spock-spring' }若仅使用
testImplementation project(':server'),server模块的主类不会被纳入测试类路径,导致无法引用。确认server模块主类的路径与编译状态
检查MainServerApp.java是否位于server模块的src/main/java/com/data/server/目录下;执行gradle :server:build后,查看server/build/classes/java/main/com/data/server/下是否存在编译后的MainServerApp.class文件,确保主类已正常编译。验证settings.gradle的模块配置
确认settings.gradle中已正确包含两个模块:include ':server', ':server-test'若模块不在同级目录,需补充路径配置:
project(':server-test').projectDir = new File('指定路径/server-test')。检查测试类路径是否包含server模块主代码
执行gradle :server-test:dependencies,查看testCompileClasspath下是否存在:server模块的输出项。若缺失,说明依赖配置未生效。清理缓存并重新构建
缓存可能导致类路径异常,执行gradle clean build --no-build-cache清理所有模块缓存后,重新构建整个项目,再运行测试命令。检查Groovy测试的编译配置
若server-test是Groovy模块,需确保build.gradle中正确配置Groovy插件与源码目录:plugins { id 'java' id 'groovy' id 'org.springframework.boot' version 'x.x.x' id 'io.spring.dependency-management' version 'x.x.x' } sourceSets { main { groovy { srcDirs = ['src/main/groovy', 'src/main/java'] } java { srcDirs = [] } } test { groovy { srcDirs = ['src/test/groovy', 'src/test/java'] } java { srcDirs = [] } } }确保Groovy测试编译时能正确识别Java类。
内容的提问来源于stack exchange,提问作者OVelychko

