打开SpringBoot项目的pom.xml文件 会看到有一个parent标签 不知道是用来做什么的
我们打开idea来新建一个maven项目 file-->new-->project 选择maven
next 然后填写坐标GroupId和ArtifactId
next 取名就叫parent
点击完成,然后等待依赖下载完成
然后把项目中的src目录和pom.xml中无关依赖全部删掉 (只研究pom.xml) 现在项目就变成了这个样子
再将
然后在该项目中新建一个module file-->new-->module 同样选择一个quickstart
把默认的父项目依赖去掉
选择none
此时的项目应该是下图的样子,填写项目坐标 next
把路径放到跟parent同一个路径下 点击finish
同样的删掉src,pom中无关的配置
然后点击 view-->toolwindow-->mavenproject 看到右边的maven窗口
此时的项目没有任何依赖
我们在父项目中添加一个log4j的依赖
点击 刷新maven项目按钮
就会看到父项目中出现一个log4j的依赖 而子项目中是没有任何依赖的
然后在子项目中添加一个parent标签 填写parent项目中的坐标
刷新maven项目,就会发现子项目中也有了log4j的依赖 这样在多项目的jar包管理中,只要所有pom都去继承一个公共的pom文件就可以方便的管理项目所使用框架的版本
接着SpringBoot中的pom.xml还出现了另外一种就是没有版本号的依赖
我们都知道在maven项目中需要依赖jar都必须标明所使用jar的版本号
但是这里没标明也没有报错
带着这个问题,接着上面的项目来说
如果我还有一个项目 demo2,跟demo是一样的项目 我们按照刚才创建demo的方式重新创建一个demo2
使demo2同样继承parent 刷新maven项目 此时所有项目都有了log4j的依赖
然后我在父项目中再添加一个commons-lang依赖 刷新之后会看到所有项目都有了
这就导致了一个问题,既然要统一管理,那么即使demo2不需要commons-lang包 也必须要包含commons-lang包
而使用
我们将 commons-lang放入
但是demo项目需要这个依赖 , 那么就只需要在demo项目中也添加这个依赖,而不再需要版本号。因为版本已经在父项目中统一管理
这就是SpringBoot中pom.xml的parent标签和不写版本号的标签;
这时回到我们SpringBoot项目中 右键点击maven-->show Effective pom 查看parent中所有的依赖
在这里搜索没有版本号的jar,都会看到有版本号,而且是被定义在
jar包版本都是springBoot帮我们设置好的,可以在maven --> show Effective Pom中看到
但是有些时候我们不想用它那个版本的jar包,可以直接在我们自己的pom文件中设置相同的properties来覆盖
5.14.6
2.7.1 就会替换掉父pom中的版本