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

时间:2015-05-04 08:12:29

标签: java eclipse spring maven spring-boot

我正在与Maven的多项目设置进行斗争。一切都使用Spring引导和Annotations。

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

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

存储库用于@Autowired的测试。运行正常,我可以在Eclipse中运行我的测试,也可以使用mvn clean install

我有第二个"服务"项目取决于"数据访问"项目。配置如下所示:

@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有不同的行为吗?

2 个答案:

答案 0 :(得分:0)

Eclipse比Maven具有更多有限的依赖概念;特别是,它不考虑范围,因此您可以引用测试范围中的类,例如,从普通类中引用。我建议您首先使用ShareActionProvider mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(menuItem); Intent shareIntent = new Intent(Intent.ACTION_SEND); shareIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); shareIntent.setType("text/plain"); shareIntent.putExtra(Intent.EXTRA_TEXT, "The Text you want to share); mShareActionProvider.setShareIntent(shareIntent); 确保将所认为的内容包含在适当的范围内,然后将mvn dependency:tree的日志记录设置为org.springframework.data,以查看哪些存储库是正在注册。

答案 1 :(得分:0)

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

我不得不改变

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

进入

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