在gradle子项目中找不到Spring存储库组件(Springboot)

时间:2015-03-16 18:57:37

标签: gradle spring-boot

我有一个多项目gradle项目:

HT-java的

  • HT-域
  • HT-刮刀

ht-scraper使用位于ht-domain中的域模型和daos。 当我启动springboot应用程序时,我收到以下错误:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.hypetube.domain.dao.ChannelRepository] 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)}

当我在ht-scraper中拥有存储库类时,一切正常。

我的春季应用程序看起来像这样:

@Configuration
@EnableAutoConfiguration
@ComponentScan({"com.hypetube", "com.hypetube.domain"})
@EnableConfigurationProperties //use this to register other properties sources e.g. property files
public class Application {

    private static final Logger log = LoggerFactory.getLogger(Application.class);

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @Autowired
    private Environment env;

    @PostConstruct
    public void printActiveSpringProfiles() {
        log.info("Following spring profiles are active: {}", new ArrayList<>(Arrays.asList(env.getActiveProfiles())));
    }
}

settings.gradle:

include 'ht-domain', 'ht-scraper'

build.gradle(ht.scraper):

compile project(":ht-domain")

一切正常;该项目编译没有错误迫在眉睫。 就在我启动应用程序时,会发生错误。

1 个答案:

答案 0 :(得分:1)

为什么spring-boot插件不包含ht-domain子项目,这很奇怪。要解决方法测试,请将以下代码添加到ht-scraper/build.gradle

test {
    classpath = project(":ht-domain").sourceSets.main.runtimeClasspath
}

但是运行打包应用程序仍然存在问题。我已从PlaylistRepository类中删除了所有注释,并将以下注释添加到Application

@EnableMongoRepositories({"com.hypetube.domain"})

不开始 - 至少没有类路径问题。希望有所帮助,正如我所说的非常奇怪的行为:/