我有一个包含多个模块的大型 java Spring 项目。我决定将 Spring 测试的某些部分从模块
server
移动到新模块server-test
中,以便逻辑上拆分它们并让 Gradle 处理它们。
我更新了 build.gradle、settings.gradle 和所有依赖项,但是
@ContextConfiguration
无法从另一个模块找到主类。
import com.data.server.MainServerApp
@ContextConfiguration(classes = MainServerApp.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties="spring.cloud.config.enabled=false")
class SuperTest extends Specification {
... ... ...
}
我运行
gradle clean :server-test:test
并收到错误:
SuperTest.groovy: 3: unable to resolve class com.data.server.MainServerApp
@ line 3, column 1.
import com.data.server.MainServerApp
您能提出什么问题吗?
我找到了解决办法。 Spring上下文在当前模块中搜索Main类和application.yml。如果当前模块中缺少这些文件 - Spring 上下文会在其他模块中搜索它们并使用第一个可用的文件。 结果它找到了另一个 Main 类(不是 MainServerApp)。 要解决此问题,需要删除所有以前的主文件 或者为当前模块创建新的主类。