当前位置: 首页 > news >正文

springBoot不同module之间互相依赖

在 Spring Boot 多模块项目中,不同模块之间的依赖通常是通过 Maven 或 Gradle 来管理的。以下是一个示例结构和如何设置这些依赖的示例。

项目结构

假设我们有一个多模块的 Spring Boot 项目,结构如下:

my-springboot-project
│
├── pom.xml                  // 父 POM 文件
├── module-a
│   ├── pom.xml              // Module A 的 POM 文件
│   └── src
│       └── main
│           └── java
│               └── com.example.modulea
│                   └── ModuleAApplication.java
│
├── module-b
│   ├── pom.xml              // Module B 的 POM 文件
│   └── src
│       └── main
│           └── java
│               └── com.example.moduleb
│                   └── ModuleBApplication.java
│
└── module-c├── pom.xml              // Module C 的 POM 文件└── src└── main└── java└── com.example.modulec└── ModuleCApplication.java

父 POM 文件(my-springboot-project/pom.xml)

在父 POM 文件中,定义所有子模块和共有的依赖。

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>my-springboot-project</artifactId><version>1.0.0</version><packaging>pom</packaging><modules><module>module-a</module><module>module-b</module><module>module-c</module></modules><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.7.0</version><type>pom</type><scope>import</scope></dependency><!-- 其他共有的依赖 --></dependencies></dependencyManagement><build><pluginManagement><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></pluginManagement></build>
</project>

模块 A 的 POM 文件(module-a/pom.xml)

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.example</groupId><artifactId>my-springboot-project</artifactId><version>1.0.0</version></parent><artifactId>module-a</artifactId><dependencies><!-- 依赖于 Spring Boot 和其他公共库 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency></dependencies>
</project>

模块 B 的 POM 文件(module-b/pom.xml)

模块 B 依赖于模块 A,因此在它的 POM 文件中要添加对模块 A 的依赖。

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://www.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.example</groupId><artifactId>my-springboot-project</artifactId><version>1.0.0</version></parent><artifactId>module-b</artifactId><dependencies><dependency><groupId>com.example</groupId><artifactId>module-a</artifactId><version>1.0.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency></dependencies>
</project>

模块 C 的 POM 文件(module-c/pom.xml)

模块 C 也可以依赖于其他模块,如模块 A 和 B。

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://www.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.example</groupId><artifactId>my-springboot-project</artifactId><version>1.0.0</version></parent><artifactId>module-c</artifactId><dependencies><dependency><groupId>com.example</groupId><artifactId>module-a</artifactId><version>1.0.0</version></dependency><dependency><groupId>com.example</groupId><artifactId>module-b</artifactId><version>1.0.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency></dependencies>
</project>

依赖解析

  • 父 POM 文件:定义了所有模块的公共依赖和配置。
  • 子模块 POM 文件:继承自父 POM 文件,可以定义特定于该模块的依赖,并可以依赖其他模块。

通过这种方式,每个模块可以独立开发、测试和运行,但仍然可以共享公共配置和依赖,从而减少重复代码和配置。

http://www.lryc.cn/news/380668.html

相关文章:

  • [modern c++] 类型萃取 type_traits
  • 函数模板和类模板的区别
  • ChatGPT 提示词技巧一本速通
  • 【windows解压】解压文件名乱码
  • 使用Flink CDC实时监控MySQL数据库变更
  • 学生课程信息管理系统
  • 如何看待鸿蒙HarmonyOS?
  • 【论文复现|智能算法改进】一种基于多策略改进的鲸鱼算法
  • yarn安装配置及使用教程
  • 有那么点道理。
  • 蔚蓝资源包和数据分析
  • MySQL----利用Mycat配置读写分离
  • 【科学计算与可视化】2. pandas 基础
  • 医学记录 --- 腋下异味
  • 【Linux】进程间通信_1
  • Linux Kernel入门到精通系列讲解(RV-Kernel 篇) 5.6 在kernel 中实现系统复位和系统关机驱动
  • 如何在Java中进行单元测试?
  • 代码随想录训练营Day32
  • 代码随想录训练营Day31
  • Docker 多阶段构建
  • Linux应急响应——知攻善防应急靶场-Linux(1)
  • 基于CDMA的多用户水下无线光通信(1)——背景介绍
  • vlan三层交换技术--交换机--(自作)
  • 基于springboot websocket和okhttp实现消息中转
  • @PostConstruct 注解的方法用于资源的初始化
  • (一)SvelteKit教程:hello world
  • 华为Atlas NPU ffmpeg 编译安装
  • Python 虚拟环境 requirements.txt 文件生成 ;pipenv导出pip安装文件
  • Less与Sass的区别
  • 力扣-2663