我正在与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有不同的行为吗?
答案 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" })