Maven多模块项目依赖到不进来

发布时间 2024-01-12 15:56:37作者: bleuIL

新建了一个Maven多模块项目,想着和Gitee上的项目一样,抽出父模块来管理子模块公共的依赖,统一子模块的依赖的版本。结果在父模块POM文件声明的依赖,死活就是到不进来,声明如下图所示:

当我在网上搜了半天为什么Maven依赖导不进来的时候,终于看到了一篇博客,下面的内容都基于自该博客:https://cloud.tencent.com/developer/article/2033620
解决这个问题,直接在子模块POM文件声明该依赖,Maven就会帮我们导入,结果如下:

就是这么简单!在我尝试clean、compile、package、修改Maven镜像、重启IDEA、重启电脑后,在子模块声明依赖,居然就可以了。
前面的问题主要是没弄清楚dependencyManagement和dependencies的区别,在这里总结下这2个标签的区别:
1、dependencyManagement标签应用场景:
在多模块项目中,继承自该项目的所有子项目的默认依赖信息。这部分的依赖信息不会被立即解析,而是当子项目声明一个依赖(必须描述group ID和 artifact ID信息),如果group ID和artifact ID以外的一些信息没有描述,则通过group ID和artifact ID 匹配到这里的依赖,并使用这里的依赖信息。
这是菜鸟教程对该标签的解释,简单说dependencyManagement就是用来统一依赖版本的,它本身并不会引入依赖,只有在子项目中引入依赖,Maven才会真正导入
这样在子模块的POM文件中真正引入该依赖时,就不用显式声明版本号,Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。
2、dependencies
自动引入声明在dependencies里的所有依赖,并默认被所有的子项目继承。如果项目中不写依赖项,则会从父项目继承(属性全部继承)声明在父项目dependencies里的依赖项。