Maven项目中的依赖管理、RelativePath、Maven多模块项目中Base模块和Common模块

dependencyManagement元素用于在Maven项目中统一管理依赖版本,常在顶层父pom中定义,以便子项目引用时不需指定版本。这样在升级或切换依赖版本时只需更改父pom,提高了效率。在多模块项目中,例如base、common、service等不同功能模块,可以合理分配依赖,如公用依赖在base中声明,特定模块的依赖在对应模块声明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Maven项目中的依赖管理——dependencyManagement

通常会在一个组织或者项目的最顶层父pom中可以看到dependencyManagement元素

使用pom.xml中的dependencyManagement元素能让所有的子项目中引用一个依赖而不需要显示的列出版本号。

Maven会沿用父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用dependencyManagement元素中提供的指定版本号。

dependencyManagement的优点:

多个子项目引用同样的依赖,则可以避免在每个使用的子项目里都声明一个版本号,这样当想升级或者切换到另外一个版本时,只需要在顶层父容器更新版本号即可,不需要一个一个子项目中修改;另外如果某个子项目需要另外一个版本,则需要声明version即可。

RelativePath


1)指定查找该父项目pom.xml的(相对)路径。默认顺序:relativePath > 本地仓库 > 远程仓库
2)没有relativePath标签等同…/pom.xml, 即默认从当前pom文件的上一级目录找
3)表示不从relativePath找, 直接从本地仓库找,找不到再从远程仓库找


maven首先从当前构建项目开始查找父项目的pom文件,然后从本地仓库,最有从远程仓库。RelativePath允许你选择一个不同的位置。

多模块项目中

各个模块

xxx-service-base         用于编写业务逻辑 
xxx-service-common       用于存放一些公用的模块,比如说枚举,topic
xxx-service-socket       用于维护socket连接
xxx-service-vue          前端
xxx-service-web           web模块,为前端提供一些接口

Base模块

Base包是模块公用部分抽出来 Base包不对外暴露 其中基本全是业务代码(与业务相关的)。

 <!-- 阿里数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
        </dependency>
 
        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>
        <!--aop-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
 
        <!-- xxl-job-core -->
        <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

base包依赖于common包,可能用到common的枚举

 <dependency>
            <groupId>com.qcby</groupId>
            <artifactId>chat-service-common</artifactId>
        </dependency>

注意:公用的依赖会在base里面,但是如果web用不到,socket可以用到的依赖就可以只放在socket包中

Common模块

Common包基本不含业务代码 Common不含任何与业务相关的东西·

 该模块为全局公共模块,其它各模块以项目依赖的方式直接引用,在类中直接import该模块下的类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值