打开SpringBoot项目的pom.xml文件     会看到有一个parent标签   不知道是用来做什么的

SpringBoot中的maven

我们打开idea来新建一个maven项目   file-->new-->project   选择maven    

SpringBoot中的maven

next  然后填写坐标GroupId和ArtifactId

SpringBoot中的maven

next     取名就叫parent

SpringBoot中的maven

点击完成,然后等待依赖下载完成

然后把项目中的src目录和pom.xml中无关依赖全部删掉  (只研究pom.xml)   现在项目就变成了这个样子

SpringBoot中的maven

再将<packaing>标签打包类型改为pomSpringBoot中的maven

 

然后在该项目中新建一个module     file-->new-->module     同样选择一个quickstartSpringBoot中的maven

把默认的父项目依赖去掉

SpringBoot中的maven

选择none 

SpringBoot中的maven

此时的项目应该是下图的样子,填写项目坐标  next  

SpringBoot中的maven    

把路径放到跟parent同一个路径下   点击finish

SpringBoot中的maven

同样的删掉src,pom中无关的配置

然后点击 view-->toolwindow-->mavenproject   看到右边的maven窗口

SpringBoot中的maven

此时的项目没有任何依赖 

我们在父项目中添加一个log4j的依赖     

SpringBoot中的maven

点击   刷新maven项目按钮

SpringBoot中的maven

就会看到父项目中出现一个log4j的依赖  而子项目中是没有任何依赖的

SpringBoot中的maven

然后在子项目中添加一个parent标签   填写parent项目中的坐标

SpringBoot中的maven

刷新maven项目,就会发现子项目中也有了log4j的依赖   这样在多项目的jar包管理中,只要所有pom都去继承一个公共的pom文件就可以方便的管理项目所使用框架的版本

SpringBoot中的maven

 

接着SpringBoot中的pom.xml还出现了另外一种就是没有版本号的依赖

SpringBoot中的maven

我们都知道在maven项目中需要依赖jar都必须标明所使用jar的版本号

但是这里没标明也没有报错

带着这个问题,接着上面的项目来说 

如果我还有一个项目  demo2,跟demo是一样的项目   我们按照刚才创建demo的方式重新创建一个demo2

使demo2同样继承parent  刷新maven项目   此时所有项目都有了log4j的依赖

SpringBoot中的maven

然后我在父项目中再添加一个commons-lang依赖   刷新之后会看到所有项目都有了

SpringBoot中的maven

这就导致了一个问题,既然要统一管理,那么即使demo2不需要commons-lang包 也必须要包含commons-lang包

而使用<dependencyManagement>标签就可以解决这个问题

我们将 commons-lang放入  <dependencyManagement>  标签  然后刷新项目依赖发现所有项目都没有了commons-lang

SpringBoot中的maven

但是demo项目需要这个依赖    ,    那么就只需要在demo项目中也添加这个依赖,而不再需要版本号。因为版本已经在父项目中统一管理

SpringBoot中的maven

这就是SpringBoot中pom.xml的parent标签和不写版本号的标签;

这时回到我们SpringBoot项目中    右键点击maven-->show Effective pom  查看parent中所有的依赖

SpringBoot中的maven

在这里搜索没有版本号的jar,都会看到有版本号,而且是被定义在<dependencyManagement>标签中

SpringBoot中的maven

jar包版本都是springBoot帮我们设置好的,可以在maven  -->  show Effective Pom中看到

SpringBoot中的maven

但是有些时候我们不想用它那个版本的jar包,可以直接在我们自己的pom文件中设置相同的properties来覆盖

<activemq.version>5.14.6</activemq.version>
<antlr2.version>2.7.1</antlr2.version>   就会替换掉父pom中的版本

   

相关文章:

  • 2021-12-04
  • 2021-06-16
  • 2021-07-16
  • 2021-09-08
  • 2021-10-08
  • 2021-08-05
  • 2022-02-07
  • 2021-12-12
猜你喜欢
  • 2022-12-23
  • 2021-11-30
  • 2021-08-05
  • 2021-10-20
  • 2022-01-09
  • 2022-12-23
  • 2021-12-11
相关资源
相似解决方案