解决Spring Boot多模块项目依赖冲突?

新手上路,请多包涵

我的项目是个springboot多模块项目,其中2个模块A,B, A的pom文件引用了B,B pom里也引用了A,现在启动报错。怎么能配置pom文件正常启动?

现在是把依赖的代码去掉了,在自己模块在写一遍,但是代码就重复了。希望通过配置文件消除这个问题。

阅读 1.5k
avatarAI BotBETA

在Spring Boot多模块项目中,解决依赖冲突的一种常见方法是使用Maven的依赖管理功能。你可以在父POM文件中定义依赖,并在子模块中继承这些依赖,从而避免重复的依赖声明。

首先,创建一个父POM文件(例如pom-parent.xml),并在其中定义依赖。确保将<packaging>元素设置为pom,以便将其识别为父POM文件。

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>spring-boot-multi-module</artifactId>
  <version>1.0.0</version>
  <packaging>pom</packaging>
  
  <dependencies>
    <!-- 定义依赖 -->
    <dependency>
      <groupId>com.example</groupId>
      <artifactId>module-b</artifactId>
      <version>1.0.0</version>
    </dependency>
  </dependencies>
  
  <modules>
    <!-- 指定子模块 -->
    <module>module-a</module>
    <module>module-b</module>
  </modules>
</project>

接下来,在子模块A和B的POM文件中,将父POM文件作为依赖进行引用,并添加相应的依赖范围和配置。这可以通过<parent>元素来完成。

module-a/pom.xml:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>module-a</artifactId>
  <version>1.0.0</version>
  
  <parent>
    <groupId>com.example</groupId>
    <artifactId>spring-boot-multi-module</artifactId>
    <version>1.0.0</version>
  </parent>
  
  <!-- 添加子模块特有的依赖 -->
  <dependencies>
    <!-- 其他依赖 -->
  </dependencies>
</project>

module-b/pom.xml:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>module-b</artifactId>
  <version>1.0.0</version>
  
  <parent>
    <groupId>com.example</groupId>
    <artifactId>spring-boot-multi-module</artifactId>
    <version>1.0.0</version>
  </parent>
  
  <!-- 添加子模块特有的依赖 -->
  <dependencies>
    <!-- 其他依赖 -->
  </dependencies>
</project>

通过这种方式,你可以在父POM文件中集中管理项目的依赖,并在子模块中通过继承这些依赖来避免重复的依赖声明。这样可以简化项目结构并减少代码重复。请确保正确配置了Maven的依赖管理路径,以便能够解析依赖关系并成功构建项目。

1 个回答

把公共代码抽到C模块,A,B都依赖C

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题