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该模块下的类。