栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Maven项目继承实现过程图解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Maven项目继承实现过程图解

多个maven项目之间难免有重复的pom配置,重复的配置没必要重复写,maven提供了父子继承的关系,重复的依赖直接放在父项目的pom中。

所以不希望每个开发者随意定义maven版本依赖,可以在父项目中进行说明,然后子项目沿用即可。

idea创建父项目(这是一个父项目,也是一个空项目,只需要pom.xml,编写相关的依赖, 父项目必须用pom打包的方式):

编辑父项目pom.xml



  4.0.0

  com.linewell
  maven-parent
  1.0-SNAPSHOT
  
  pom

  
  
    2.6
    4.3.6.RELEASE
  

  
  
    
      commons-io
      commons-io
      ${common.version}
    
  

  
    
      
 spring-context-support
 org.springframework
 ${spring.version}
      
    
  
  

这边需要说明下,dependencyManagement,这边的依赖不会被继承,如果子项目导入了这个依赖,可以不用写版本号,会以父项目的为主,因为有的子项目不一定会用父项目中的所有依赖。个别子项目依赖到的包可以放在这里,然后不需要写版本号,会自动引用父项目。

创建一个子项目,编辑子项目的pom.xml如下:



  4.0.0

  com.linewell
  maven-children
  1.0-SNAPSHOT

  
    com.linewell
    maven-parent
    1.0-SNAPSHOT
    ../mavenparent/pom.xml
  

可以看到commons-io进来了,spring-context-support没进来。

我现在不添加spring-context-support的版本,然后看下结果,是会以父项目的版本为主。可以看到如下引入的也是父项目中的4.3.6



  4.0.0

  
    com.linewell
    maven-parent
    1.0-SNAPSHOT
    ../mavenparent/pom.xml
  

  com.linewell
  maven-children
  1.0-SNAPSHOT

  
    
      org.springframework
      spring-context-support
    
  

那么问题来了,如果子项目指定了版本会怎么样?

编辑子项目pom.xml, 如下可以发现,如果子项目有明确指定依赖以及具体版本,与父项目发生冲突会以子项目的依赖为准。



  4.0.0

  
    com.linewell
    maven-parent
    1.0-SNAPSHOT
    ../mavenparent/pom.xml
  

  com.linewell
  maven-children
  1.0-SNAPSHOT

  
    
      commons-io
      commons-io
      2.5
    
    
      org.springframework
      spring-context-support
      5.2.5.RELEASE
    
  

ps:如果父项目中执行了mvn install安装到了本地仓库,然后子项目中引入父GAV的时候可以不用写路径relativePath属性。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/132780.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号