详解< packaging>pom以及项目依赖问题
在父级项目中的pom.xml文件使用的packaging配置一定为pom。父级的pom文件只作项目的子模块的整合,在maven install时不会生成jar/war压缩包。
可以看到我这里就是pom方式,如果不手动声明,则springboot或springcloud会以jar包的方式进行打包。
在父级的pom文件中可以看见,有一个properties标签这里申明了很多版本就理解为变量,而在dependencyManagement标签中的version标签引用了该变量,即该依赖是使用的版本是该变量的值。
**注意:**值得注意的是我们虽然在父级的pox文件中虽然引入了依赖,但是maven并不会给我们下载相应的jar包,这里只是起到了声明作用,只有在子项目中使用了该依赖才会真正的将依赖引入进来,实例如下
细心的同学会发现在子项目的pom文件中并没有申明依赖版本,注意左边有一个向上的箭头,当我们点击之后会跳转到父级的pom文件中。
不难发现,当我们父项目申明了依赖版本之后,子项目可以不声明版本,具体的依赖顺序如下:
Maven引入依赖使用最短路径原则,例如a<–b<–c1.0 ,d<–e<–f<–c1.1,由于路径最短,最终引入的为c1.0;但路径长度相同时,则会引入先申明的依赖简而言之我离谁最近我就引入谁的版本,我离谁申明版本最近我就引入谁的版本。
这样做的好处是:当我们项目需要修改依赖版本时,就不需要给每个子项目挨着修改了,只需要修改夫项目的版本即可全部修改,非常的方便
但是如果我们的子项目想要引入不同的依赖版本不跟父项目一样应该怎么办呢?很简单:只需要手动加上版本即可如下
水激石则鸣,人激志则宏!!!