首先聚合工程的父工程,主要作用就是传递依赖dependency和统一依赖版本号dependencyManagement,当dependencyManagement中规定的依赖版本号越来越多的时候,就会造成pom文件过大,为了解决这个问题,我们一般会采用继承parent父工程的pom,但是parent只能继承一个,而且也可能会导致parent的pom过大,所以就有了继承多个dependencyManagement的解决方案。
1.首先我们定义一个父类的pom,用来统筹所有的子模块,切记groupId填写的报名,尽量不要是开源公众的,比如org.example,避免groupId跟artifactId跟开源的重合,导致出现不生效的bug,命名尽量不要使用通用关键字是一个好习惯。
2.我们将需要规定的依赖版本号,都分类好,依次创建对应的pom工程,然后将需要规定版本号的依赖,写入dependencyManagement,这里我们直接使用springboot的版本依赖pom,实际情况可以自己写多个pom。注意!!!!!这类pom项目,不能继承一个<parent>不然会导致dependencyManagement传递失效。
核心配置
<packaging>pom</packaging> <version>${填写自己的版本号}</version>
<dependencyManagement>....</dependencyManagement>
3.创建一个子模块,用来将所有的版本号约束依赖的pom工程集中到一起(多继承)
项目中的dependencyManagement里,写入多个pom工程,通过<type>pom</type>
<scope>import</scope>2个标签,来继承pom工程中的dependencyManagement,写入多个则会将所有的dependencyManagement都聚合到一起了
4.将这个汇总的dependencies子工程,以同样的方式,再让最顶级的父工程继承,
注意!!!!<module>很重要,写上之后,当父工程添加新的打包类型为jar的子模块时,dependencyManagement中的版本号限制,才能传递过去。
之后所有的版本号限制,就都可以写到demo-dependencies这个子工程啦!!里面再通过分类,汇总多个pom就行。
5.测试,在顶级的父工程,添加一个子模块,打包类型为jar,测试依赖限制是否传递过去
进入demo-web子工程,可以看到,版本号已经传递过来,至此解决了版本号规定过多,导致pom过大没有分类问题。