1:首先定义一个父工程
2:把src文件夹干掉
3:修改打包方式为pom
<packaging>pom</packaging>
4:创建子工程:order-service
5:创建子工程user-service
6:可以看到,父工程的pom文件中有了子模块,而子模块的依赖里面也有了父工程里面的依赖。
7:在父工程中设置编译级别
<properties>
<java.version>17</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
8:在父工程中定义<dependencyManagement>,用作统一的版本管理。
这里由于springboot的起步依赖
1:在父工程中,父工程依赖于:
2:ctrl+鼠标左键跟进这个依赖,发现他有依赖了下面这个
3:继续跟进,发现该依赖中定义了一系列的版本号
并且进行了版本控制:
4:所以在我们当前子工程的xml文件里面,如果想用到里面的依赖,就无需写版本号,maven会自动向上查找,如果在所有父类里面都没有找到版本控制,就会报错。
比如,在顶级父工程里面没有导入fastjson2
而此时,我直接在order-service子工程里面导入这个依赖,并且不传递版本号:
可以看到已经报错了,那么我现在在父工程里面进行版本控制
再次查看order-service,已经成功,不再报错
5:如果当前子工程都有许多相同的依赖,一个一个导入比较麻烦。那么直接在父工程里面,使用如下格式导入即可,子工程里面就自动引入了依赖。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependencies>
如下图所示,order-service并没有导入spring的依赖,到还是有spring的依赖,原因在于在父工程中进行了导入