首页 > 解决方案 > 使用工件的依赖项

问题描述

我有一个复杂的 Spring 项目,其中包含数十个依赖项和模块。我注意到其中一些可能被替换为spring-boot-starters.

但是,当我在主、父 pom 中用启动器替换一些依赖项时,我在子模块中遇到错误。

这是一个例子:

父 POM

<dependencyManagement>
  <dependencies>      
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-activemq</artifactId>
      <version>2.0.5.RELEASE</version>
    </dependency>
  </dependencies>
</dependencyManagement>

模块 POM

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jms</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
</dependency>

根据 maven 存储库spring-boot-starter-activemq,除其他外,spring-boot-starter还有spring-jms.

这些依赖项应该可用于模块吗?

有没有办法使用这样的依赖项?我会让 pom 文件更短。

或者这样做是不是一个坏主意,我应该定义我将在dependencyManagement中使用的所有依赖项?

标签: springmavenspring-boot

解决方案


在 POM 中,您应该拥有在代码中直接使用的所有依赖项。不要依赖传递分辨率来处理您积极使用的东西。

您的构造不起作用,因为您没有在您的依赖管理中管理spring-jsmand 。spring-boot-starter作为托管依赖项的依赖项并没有帮助。


推荐阅读