目录树
1.个人操作案例
1.1 创建Maven父工程zeromall
- 在pom.xml中加入
<packaging>pom</packaging>
,说明它就是一个父工程了。 - 删除src目录,因为代码全在子工程里,这个代码目录没用。
1.2 创建Maven,SpringBoot子工程
1.2.1 创建Maven子工程
- 在父工程基础上创建四个子工程
common、beans、mapper、service
maven子工程继承maven父工程;
- 会发现子工程的pom文件中会自动写明继承的父工程;
- 而父工程pom文件中也会自动声明自己的子工程。
如图
子工程的pom文件:
比如beans子工程,还需要在pom文件中加入<packaging>jar</packaging>
,这样其他子模块就能用beans子模块。
前提
就是:其他子模块中要添加beans的依赖
就比如mapper层要调用beans层,这时就能调用得到。
父工程的pom文件:
各模块关系:只有一个root
1.2.2 创建SpringBoot子工程
最后的controller
层,我就用api
来命名。
1.
2.
注意点
创建springboot子工程和maven子工程最大
区别
:前者会创建一个启动类,并且需要手动改配置
- 会发现,创建的boot子工程和maven父工程都是各自的主体root,并不存在继承关系
所以需要手动配置让两者存在关系 - 1 将boot工程api的pom文件中继承的springboot依赖组
剪切
到maven父工程的pom文件中去。
让maven父工程继承springboot依赖组(boot的其他依赖和<build>也要从boot项目pom中剪切到maven父工程pom中
)
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.6</version>
<relativePath/>
</parent>
-
2 让boot工程api的pom文件中继承maven父工程
并且将将spring boot的依赖配置到父工程zeromall的pom.xml中
springboot项目的pom文件应该只剩下面这些
-
3 在maven父工程的pom文件中
手动
添加子模块的声明
-
4 root主体
只有一个root主体,说明都继承拿一个root父工程!
1.3 依赖继承图
依赖关系图:模块依赖可以传递
依赖关系按照第二张图配置依赖关系。
总结图
1.4 Maven聚合工程依赖分析
如果将依赖添加到父工程的pom中,根据依赖的继承关系,所有的子工程中都会继承父工程的依赖
好处
:当有多个子工程都需要相同的依赖时,无需在子工程中重复添加依赖
缺点
:如果某些子工程不需要这个依赖,还是会被强行继承(即打包某一个子工程时,会进来很多无关的依赖)如果在父工程中没有添加统一依赖,则每个子工程所需的依赖都要在对应的子工程的pom中手动添加。
(加入两个子模块,common和beans,都加了lombok依赖,此时一个1.18.18版本,一个1.18.16版本。其实两者并不影响。但是又有一个模块,它继承了上面两个模块,那它继承那一个版本呢?那它的lombok版本就可以在父工程的pom中定义依赖版本管理器,只是版本管理作用,具体依赖还要自己添加)
依赖配置说明
1.在父工程的pom文件中一次性添加各个子工程所需的依赖
2.在各个子工程中单独添加当前子工程的依赖