如何在Maven中包含依赖项中的Spring组件

时间:2018-09-25 13:17:38

标签: spring spring-boot

我有一个弹簧靴项目“ A”。它包含一个名为 / helloworldA

的rest api获取请求。

我创建了另一个弹簧启动项目“ B”。我已经将“ A”添加为对“ B”的依赖。现在,我期望运行项目“ B”时 / helloworldA 能够正常工作。但这不起作用

2 个答案:

答案 0 :(得分:2)

您应该在A中定义一个配置。

@Configuration
@ComponentScan(/**scan all beans from A**/)
public class ConfigA {

}

然后,在B中,您应该导入配置。

@Configuration
@Import(ConfigA.class)
public class ConfigB {

}

现在应该通过B的组件扫描来检测A中的bean。

答案 1 :(得分:0)

尽管@alexrolea答案很适合该问题,但在执行此步骤之前,我还有另一个问题。

maven或gradle的spring boot插件有2个任务:- jar任务/执行-这将创建具有所有依赖项的jar。这可以用作其他项目的依赖项。但这不是可执行的jar。我的意思是我们不能将这个jar运行为“ java -jar” bootJar任务/执行-在jar任务/执行之后运行。这将创建一个可启动的jar。并且此jar内的类的结构不同。例如:-名为com.eg.Config的类位于/ BOOT-INF / classes / com / eg / Config中。由于这种结构已修改,因此另一个项目将无法使用此jar作为依赖项,因为另一个项目不知道此结构

我的问题是默认情况下

  1. jar和bootJar任务创建具有相同文件名的jar。 (例如)jar任务中的jar替换为bootJar任务中的jar
  2. 在gradle中,默认情况下禁用jar任务。我启用了

    jar {     启用=真 }

  3. 我使用以下命令更改了从bootJar任务创建的jar的名称

    bootJar {     分类器='启动' }

  4. 现在,按照@alexrolea的回答进行操作。