Spring 启动多项目 Maven 应用程序上下文错误

Spring Boot Multi Project Maven Application Context Error

我正在为 Maven 的多项目设置而苦苦挣扎。一切都使用 Spring 引导和注释。

我正在使用一个项目进行数据访问。配置文件是这样的:

@Configuration
@EnableJpaRepositories(basePackages = { "de.bvk.infra.g_portal.dataaccess.Repository" })
@EntityScan
public class DataConfiguration {
}

存储库用于 @Autowired 的测试。这 运行 很好,我可以 运行 我在 Eclipse 中的测试以及 mvn clean install

我有第二个 "service" 项目,它依赖于 "data-access" 项目。配置如下所示:

@Import({DataConfiguration.class})
@Configuration
public class ServiceTestConfiguration {
@Autowired
DataConfiguration dataConfiguration;

@Autowired
BenutzerRepository benutzerRepository;
....

我可以 运行 在 Eclipse 中对服务项目进行所有测试,并且工作正常。

当我尝试 运行 使用 Maven 的项目时,我得到一个 ApplicationContextError:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No qualifying bean of type [de.bvk.infra.g_portal.dataaccess.repository.BenutzerRepository] 
found for dependency: expected at least 1 bean which qualifies as autowire
candidate for this dependency. Dependency annotations:
{@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047) 
...

你能告诉我为什么 Maven 的行为与 Eclipse 不同吗?

与 Maven 相比,Eclipse 对依赖项的概念明显更加有限;特别是,它不考虑范围,因此您可以在测试范围内引用 类,例如,从您的普通 类。我建议从使用 mvn dependency:tree 开始,以确保您包含了您认为属于适当范围的内容,然后打开 org.springframework.dataDEBUG 的日志记录以查看存储库是什么正在注册。

显然这是一个简单的错误。

我不得不改变

@EnableJpaRepositories(basePackages = { "de.bvk.infra.g_portal.dataaccess.Repository" })

进入

@EnableJpaRepositories(basePackages = { "de.bvk.infra.g_portal.dataaccess.repository" })